import * as React from 'react';
declare type Props = {
    open: boolean;
    width: number;
    height: number;
    minWidth?: number;
    minHeight?: number;
    zIndex?: number;
    position: string;
    direction: string;
    resize: boolean;
    titlebar: {};
    onClose: () => void;
};
declare type State = {
    open: boolean;
    width: number;
    height: number;
    wrapper: {
        top: number;
        left: number;
        isFull: boolean;
        show: boolean;
        width: number;
        height: number;
        mouseXY: Array<number>;
        mouseDelta: Array<number>;
        isMoved: boolean;
        isPressed: boolean;
    };
    cell: {
        top: number;
        left: number;
        prevTop: number;
        prevLeft: number;
    };
    cells: Array<{
        top: number;
        left: number;
    }>;
    titlebar: {
        use: boolean;
        title: string;
        component: React.ComponentType<any> | null;
        height: number;
    };
    resizable: {
        show: boolean;
        type: string;
        mouseXY: Array<number>;
        mouseDelta: Array<number>;
        isMoved: boolean;
        isPressed: boolean;
        shiftXY: Array<number>;
        position: {
            top: number;
            left: number;
            right: number;
            bottom: number;
        };
        prevMoveX: number;
        prevMoveY: number;
    };
};
declare class Window extends React.Component<Props, State> {
    static getDerivedStateFromProps(nextProps: Props, prevState: State): {
        open: boolean;
        wrapper: {
            show: boolean;
            top: number;
            left: number;
            isFull: boolean;
            width: number;
            height: number;
            mouseXY: number[];
            mouseDelta: number[];
            isMoved: boolean;
            isPressed: boolean;
        };
        cell: {
            top: number;
            left: number;
            prevTop: number;
            prevLeft: number;
        };
        resizable: {
            show: boolean;
            type: string;
            mouseXY: number[];
            mouseDelta: number[];
            isMoved: boolean;
            isPressed: boolean;
            shiftXY: number[];
            position: {
                top: number;
                left: number;
                right: number;
                bottom: number;
            };
            prevMoveX: number;
            prevMoveY: number;
        };
        cells: {
            top: number;
            left: number;
        }[];
        width: number;
        height: number;
        titlebar: {
            use: boolean;
            title: string;
            component: React.ComponentClass<any, any> | React.StatelessComponent<any> | null;
            height: number;
        };
    } | null;
    constructor(props: Props);
    componentDidMount(): void;
    componentWillUnmount(): void;
    debounceWrapperSize: any;
    updateWrapperSize: () => void;
    getPosition: (params: {
        isFull: boolean;
    }) => {
        top: number;
        left: number;
    };
    isShowing: () => boolean;
    isFulling: () => boolean;
    removeWindow: () => void;
    toggleWindowSize: () => void;
    willEnter: () => {
        top: number;
        left: number;
        prevTop: number;
        prevLeft: number;
    };
    willLeave: () => {
        top: import("react-motion").OpaqueConfig;
        left: import("react-motion").OpaqueConfig;
    };
    didLeave: () => void;
    handleMouseDown: (e: React.MouseEvent<any>) => void;
    handleMouseMove: (e: any) => void;
    dragWindow: () => void;
    handleMouseUp: () => void;
    resizableMouseDown: (params: {
        e: any;
        type: string;
    }) => void;
    resizableMouseMove: (e: any) => void;
    resizableWindow: (_e: any) => void;
    resizableMouseUp: () => void;
    resizableDoubleClick: (params: {
        e: any;
        direction: string;
    }) => void;
    stickyWindow: (params: {
        e: any;
        direction: string;
    }) => void;
    render(): JSX.Element;
}
export default Window;
