import CSS from "csstype";
import React, { ReactElement, ReactNode } from "react";
export declare const baseWindowZIndex = 500;
export declare type FloatingWindowPosition = {
    x: number;
    y: number;
};
export declare type FloatingWindowSize = {
    height: number;
    width: number;
};
export declare type FloatingWindowProperties = {
    initialPosition?: FloatingWindowPosition;
    initialSize?: FloatingWindowSize;
    poppedOut?: boolean;
    visible?: boolean;
};
export declare enum FloatingWindowEventType {
    showWindow = 0,
    hideWindow = 1,
    popoutWindow = 2
}
export declare type FloatingWindowEvent = {
    listenerId: string;
    eventType: FloatingWindowEventType;
    windowName: string;
};
declare type FloatingWindowCallback = (event: FloatingWindowEvent) => void;
export declare type FloatingWindowContextType = {
    setWindowDefaults: (windowName: string, windowProperties: FloatingWindowProperties) => void;
    getOpenWindowNames: () => string[];
    isWindowOpen: (windowName: string) => boolean;
    isWindowPoppedOut: (windowName: string) => boolean;
    showWindow: (windowName: string, showPoppedOut?: boolean) => void;
    hideWindow: (windowName: string | string[]) => void;
    bringWindowToTop: (windowName: string) => void;
    getTopWindowName: () => string | null;
    getWindowPosition: (windowName: string) => FloatingWindowPosition;
    setWindowPosition: (windowName: string, position: FloatingWindowPosition) => void;
    getPositionalStyle: (windowName: string) => CSS.Properties;
    getWindowSize: (windowName: string) => FloatingWindowSize;
    setWindowSize: (windowName: string, dimensions: FloatingWindowSize) => void;
    externalWindowsDOM: Record<string, Document>;
    setExternalWindowsDOM: React.Dispatch<React.SetStateAction<Record<string, Document>>>;
    popWindowOut: (windowName: string) => void;
    popWindowIn: (windowName: string) => void;
    getZ: (windowName: string) => number;
    addEventListener: (listenerId: string, eventType: FloatingWindowEventType, windowName: string, eventCallback: FloatingWindowCallback) => void;
    removeEventListener: (listenerId: string | null, eventType: FloatingWindowEventType | null, windowName: string | null) => void;
};
export declare const FloatingWindowContext: React.Context<FloatingWindowContextType>;
interface ProviderProps {
    children: ReactNode;
}
export declare const useFloatingWindow: () => FloatingWindowContextType;
export declare const FloatingWindowContextProvider: (props: ProviderProps) => ReactElement | null;
export {};
//# sourceMappingURL=FloatingWindowContext.d.ts.map