import { WindowIdentifier, WindowDescriptor } from "../services/window/types";
import { FEAWindow } from "../FEA";
export declare function clone(from: any, to?: any): any;
/**
*
Finsemble Utility Functions
*/
export declare function isPercentage(val: any): boolean;
export declare function crossDomain(url: string): boolean;
/**
* Returns a finWindow or null if not found
* @param windowIdentifier A window identifier
* @param cb Optional callback containing finWindow or null if not found (or use Promise)
* @return Promise that resolves to a finWindow or rejects if not found
*/
export declare function getFinWindow(windowIdentifier?: WindowIdentifier, cb?: (remoteWindow: FEAWindow | null) => void): Promise;
/**
* Retrieves a windowDescriptor given a windowIdentifier
* @param windowIdentifier The window to locate. If empty then the current window is returned.
* @param cb Function to retrieve result (optional or use Promise)
* @return A promise that resolves to a WindowDescriptor
*/
export declare function getWindowDescriptor(windowIdentifier?: WindowIdentifier, cb?: (windowDescriptor: WindowDescriptor | null) => void): Promise;
/**
* Returns a windowIdentifier for the current window
* @param cb Callback function returns windowIdentifier for this window (optional or use Promise)
* @returns A promise that resolves to a windowIdentifier
*/
export declare const getMyWindowIdentifier: (cb?: ((windowIdentifier: WindowIdentifier) => void) | undefined) => Promise;
/**
* @returns Transforms an array of strings into a camel cased string.
* @memberof Utils
*/
export declare function camelCase(...args: string[]): string;
export declare function isWindows(cb?: (osIsWindows: boolean) => void): Promise;
/**
* Calculates windowType for a newly spawned window
* windowType can be set or overwritten in many ways. The intention here is to end up with a limited set of
* final windowTypes
* @export
* @param config Object containing all possible values used to set windowTypes, some of these values may be unset depending on the execution path
*/
export declare function getWindowType(config: any): string;
/**
* 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
*/
export declare const getDesktopBoundingBox: (element: string | Element) => Promise<{
top: number;
left: number;
width: number;
height: number;
right: number;
bottom: number;
}>;
export 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 element The element, or a selector, to check
* @param cb A function that returns a boolean
*/
export declare const isMouseOverDOMElement: (element: Element, cb?: Function) => Promise;
export declare const fastClone: (obj: any) => any;
/** Returns exactly what's passed to it. Useful for higher-order functions. */
export declare function identity(arg: T): T;
/**
* Wraps a callback accepting function in a promise. The callback must have the type
* specified in StandardCallback, and the wrapped function *MUST* call the callback
* on all possible code paths.
*/
export declare function promisify(f: any, thisContext?: any): (...args: any[]) => Promise;
/**
* Creates a promise that rejcts after the specified time with
* the given message.
*/
export declare function timeoutPromise(ms: any, message: string): Promise;
/**
* Wraps a promise in another promise that either rejects after the specified number of milliseconds
* or resolves with the result of the promise.
*/
export declare function wrapWithTimeout(promise: Promise, ms: number, message: string): Promise;
/**
* Will determine if a given window is a StackedWindow. Returns true if the window is a
* StackedWindow, false otherwise
* @param {FinsembleWindow} win The window to check for StackedWindow
*/
export declare function isStackedWindow(win: any): any;
/**
* Deep equal doesn't work properly if the objects aren't exactly equal
* We have several places in the code that attach extra parameters to bounds objects
* This function will test equality on bounds for the only left, right, top, bottom, width and height
* @param {} bounds1
* @param {*} bounds2
*/
export declare function checkIfBoundsAreEqual(bounds1: any, bounds2: any): boolean;
/**
* Uses set timeout to provide a mechanism like sleep. e.g. await sleep(1000). Can be used in conjunction with Promise.race to implement timeouts.
*
* @export
* @param {Number} ms number of milliseconds to wait for
* @param {Boolean} rejectPromise if true, will reject instead of resolving the promise
* @returns
*/
export declare function sleep(ms: any, rejectPromise?: boolean): Promise;
/**
* Like isEqual but Array order is ignored
* @param value1
* @param value2
*/
export declare const isEqualIgnoringArrayOrder: (value1: any, value2: any) => boolean;
//# sourceMappingURL=util.d.ts.map