import DockingMain from "./dockingMain";
import { DockingBounds, BoundingBox, SnappingRegions, DockableMonitorParams, MoveRequest, DockableMonitorJSON, MonitorRectangle } from "./types";
import DockableWindow from "./dockableWindow";
import { MonitorInfoDetail } from "../../../FEA";
export declare class DockableMonitor {
    left: number;
    top: number;
    right: number;
    bottom: number;
    dockingMain: DockingMain;
    rawMonitor: MonitorInfoDetail;
    availableRect: DockingBounds;
    bufferSize: number;
    name: string;
    bounds: BoundingBox;
    snappingRegions: SnappingRegions;
    monitorRect: MonitorRectangle;
    initialBounds: DockingBounds;
    deviceId?: number;
    constructor(params: DockableMonitorParams);
    /**
     * @function {function name}
     * @param  {type} bufferSize {description}
     * @return {type} {description}
     */
    setBufferSize(bufferSize: number): void;
    /**
     * @function {function name}
     * @return {type} {description}
     */
    getWindowBoundingBox(): BoundingBox;
    /**
     * @function {function name}
     * @param  {type} bounds {description}
     * @param  {type} edge   {description}
     * @return {type} {description}
     */
    getSnappingRegion(bounds: DockingBounds, edge: string): BoundingBox;
    /**
     * @function {function name}
     * @return {type} {description}
     */
    calculateSnappingRegions(): void;
    /**
     * @function {function name}
     * @param  {type} region  {description}
     * @param  {type} request {description}
     * @return {type} {description}
     */
    canSnapToRegion(region: string, request: MoveRequest): boolean;
    /**
     * @function {function name}
     * @param  {type} request {description}
     * @return {type} {description}
     */
    canSnapToWindow(request: MoveRequest): boolean;
    /**
     * Determines if supplied window (or request) is near a given edge of the monitor
     *
     * @param {object} request The move request
     * @return {string} A string containing any edges of the monitor the given request is near
     */
    getSnappedEdge(request: MoveRequest): string;
    /**
     * @function {function name}
     * @param  {type} request {description}
     * @return {type} {description}
     */
    snapWindow(request: MoveRequest): MoveRequest | boolean;
    /**
     * Takes any snapped edges and a given request (window) and sets the appropriate bounds of the window (when docking, the windows width is expanded to take full screen)
     * @param {string} edge A string containing any edges the window could snap to
     * @param {object} request The window to dock
     * @return {object} The modified request object
     */
    getDockedPosition(request: MoveRequest): MoveRequest | false;
    /**
     * Docks a window to an edge if it needs to be. Calls to update dockableMonitor/dockableWindow properties
     * @param {object} request The move request
     * @param {object} win window to move
     * @param {number} undockedWidth width of the window before docking
     * @param {number} undockedHeight height of the window before docking
     * @param {boolean} init optional - true if the dock is initiated on startup
     */
    dockWindowToMonitor(request: MoveRequest | DockableWindow, win: DockableWindow, undockedWidth: number, undockedHeight: number, init?: boolean): Promise<void>;
    /**
     * JSON override method
     */
    toJSON(): DockableMonitorJSON;
    /**
     * Undocks a window
     * @param {object} win The window to undock
     * @param {boolean} [isClosingAction] If true, this undock is being called on a window closing
     */
    undockWindowFromMonitor(win: DockableWindow, isClosingAction?: boolean): void;
}
export default DockableMonitor;
//# sourceMappingURL=dockableMonitor.d.ts.map