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;