export declare type ModalID = string;
export interface IModalState {
    x: number;
    y: number;
    width: number | undefined;
    height: number | undefined;
    zIndex: number;
    visible: boolean;
    minPosition: {
        x: number | null;
        y: number | null;
    };
    maxPosition: {
        x: number | null;
        y: number | null;
    };
}
export interface IModalsState {
    maxZIndex: number;
    windowSize: {
        width: number;
        height: number;
    };
    modals: {
        [key: string]: IModalState;
    };
}
export declare const initialModalsState: IModalsState;
export declare type Action = {
    type: 'show';
    id: ModalID;
    maxPosition?: {
        x?: number;
        y?: number;
    };
    minPosition?: {
        x?: number;
        y?: number;
    };
} | {
    type: 'hide';
    id: ModalID;
} | {
    type: 'focus';
    id: ModalID;
} | {
    type: 'unmount';
    id: ModalID;
} | {
    type: 'mount';
    id: ModalID;
    intialState: {
        initialWidth?: number;
        initialHeight?: number;
        initialX?: number;
        initialY?: number;
        minPosition?: {
            x?: number;
            y?: number;
        };
        maxPosition?: {
            x?: number;
            y?: number;
        };
    };
} | {
    type: 'windowResize';
    size: {
        width: number;
        height: number;
    };
} | {
    type: 'drag';
    id: ModalID;
    x: number;
    y: number;
    maxPosition?: {
        x?: number;
        y?: number;
    };
    minPosition?: {
        x?: number;
        y?: number;
    };
} | {
    type: 'resize';
    id: ModalID;
    x: number;
    y: number;
    width: number;
    height: number;
} | {
    type: 'updateMinPosition';
    id: ModalID;
    value: {
        x: number | null;
        y: number | null;
    };
} | {
    type: 'updateMaxPosition';
    id: ModalID;
    value: {
        x: number | null;
        y: number | null;
    };
};
export declare const getModalState: ({ state, id, initialWidth, initialHeight, initialX, initialY, minPosition, maxPosition, }: {
    state: IModalsState;
    id: ModalID;
    initialWidth?: number | undefined;
    initialHeight?: number | undefined;
    initialX?: number | undefined;
    initialY?: number | undefined;
    maxPosition?: {
        x?: number | undefined;
        y?: number | undefined;
    } | undefined;
    minPosition?: {
        x?: number | undefined;
        y?: number | undefined;
    } | undefined;
}) => IModalState;
export declare const draggableModalReducer: (state: IModalsState, action: Action) => IModalsState;
