import DockableWindow from "./dockableWindow";
import DockingMain from "./dockingMain";
import DockableMonitor from "./dockableMonitor";
export declare type BoundingBox = {
    min: {
        x: number;
        y: number;
    };
    max: {
        x: number;
        y: number;
    };
};
export declare const EmptyBoundingBox: BoundingBox;
export declare type SnappingRegions = {
    left: BoundingBox;
    bottom: BoundingBox;
    right: BoundingBox;
    top: BoundingBox;
    topLeft?: BoundingBox;
    topRight?: BoundingBox;
    rightTop?: BoundingBox;
    rightBottom?: BoundingBox;
    bottomLeft?: BoundingBox;
    bottomRight?: BoundingBox;
    leftTop?: BoundingBox;
    leftBottom?: BoundingBox;
    inner?: BoundingBox;
};
export declare type MonitorRectangle = {
    left: number;
    top: number;
    right: number;
    bottom: number;
    width?: number;
    height?: number;
};
export declare type MonitorDimensions = {
    left: number;
    top: number;
    right: number;
    bottom: number;
    width: number;
    height: number;
    name: string;
};
export declare type CompleteBounds = Required<MonitorRectangle>;
export declare type IncompleteBounds = Partial<MonitorRectangle>;
export declare type BoxCoordinates = {
    left: number;
    top: number;
    right: number;
    bottom: number;
    width?: number;
    height?: number;
    windowBoundingBox?: BoundingBox;
    name?: string;
    persistBounds?: boolean;
    finished?: boolean;
};
export declare type BoxEdge = {
    left?: number;
    top?: number;
    right?: number;
    bottom?: number;
};
export declare type TetrisBounds = {
    left: number;
    right: number;
    bottom: number;
    top: number;
    width: number;
    height: number;
    vertices: Record<string, Vertex>;
};
export declare const InitializedBoxCoordinates: BoxCoordinates;
export declare type XYCoordinates = {
    x: number;
    y: number;
};
export declare type TopLeftCoordinates = {
    top: number;
    left: number;
};
export declare type XYOrTopLeft = XYCoordinates | TopLeftCoordinates;
export declare type Vertex = {
    x: number;
    y: number;
    label: string;
    top?: number;
    left?: number;
};
export declare type MoveRequest = {
    left: number;
    right: number;
    bottom: number;
    top: number;
    width: number;
    height: number;
    dockedWidth?: number;
    dockedHeight?: number;
    windowBoundingBox: BoundingBox;
    innerBuffer: BoundingBox;
    snappingRegions: SnappingRegions;
    mousePosition: XYCoordinates;
    changeType: number;
    snappedEdge: string;
    name?: string;
};
export declare type BetweenParams = {
    num: number;
    min: number;
    max: number;
    inclusive: boolean;
};
export declare type Edges = {
    left: BoundingBox;
    right: BoundingBox;
    bottom: BoundingBox;
    top: BoundingBox;
};
export declare type SharedEdges = {
    left: boolean;
    right: boolean;
    bottom: boolean;
    top: boolean;
};
export declare type SharedCorners = {
    topLeft: boolean;
    topRight: boolean;
    bottomLeft: boolean;
    bottomRight: boolean;
    rightTop: boolean;
    rightBottom: boolean;
    leftTop: boolean;
    leftBottom: boolean;
};
export declare type SnappedObject = {
    canGroup: boolean;
    name: string;
    edges: SharedEdges;
    corners: SharedCorners;
};
export declare type DockingConfig = {
    name: string;
    isMovable?: boolean;
    ungroupedAlwaysOnTopState?: object;
    MINIMUM_HEIGHT: number;
    MINIMUM_WIDTH: number;
};
export declare type SystemMove = {
    name: string;
    bounds: BoxCoordinates;
    isMaximized?: boolean;
};
export declare type JSONGroupRepresentation = {
    windowNames: string[];
    isMovable: boolean;
    isAlwaysOnTop: boolean;
    topRightWindow: string;
    isARectangle: boolean;
    ungroupedAlwaysOnTopState: object;
};
export declare type SnapObject = {
    name: string;
    edge: string;
    segment?: Edges | BoundingBox[];
    handle?: string;
    win: DockableWindow;
};
export declare type Point = {
    name: string;
    val: XYCoordinates;
};
export declare type Corner = {
    window?: string;
    x: number;
    y: number;
    label: string;
};
export declare type Edge = {
    window?: string;
    min: {
        x: number;
        y: number;
    };
    max: {
        x: number;
        y: number;
    };
};
export declare type CornersAndEdges = {
    corners: Corner[];
    edges: Edge[];
};
export declare type DockingBounds = {
    left: number;
    right: number;
    height?: number;
    width?: number;
    bottom?: number;
    top?: number;
    internal?: boolean;
    persistBounds?: boolean;
    duration?: number;
};
export declare type MoveToParams = {
    top?: number;
    left?: number;
    height?: number;
    name?: string;
    changeType?: number;
    anchor: DockableWindow;
    systemMoved?: boolean;
    triggeredByAutoArrange: boolean;
};
export declare type ScaledBounds = {
    left: number;
    top: number;
    width: number;
    height: number;
    right?: number;
    bottom?: number;
    name?: string;
    limits?: number;
};
export declare type DockableMonitorParams = {
    dockingMain: DockingMain;
    bounds: BoundingBox;
    monitor: DockableMonitor;
};
export declare type DockableMonitorJSON = {
    bounds: BoundingBox;
    availableRect: DockingBounds;
    monitorRect: any;
    name: string;
    top: number;
    right: number;
    bottom: number;
    left: number;
};
export declare type DockingConfigOptions = {
    dockable?: boolean;
    isDocked?: boolean;
    dockedWidth?: number;
    dockedHeight?: number;
    height?: number;
    undockedWidth?: number;
    undockedHeight?: number;
    ephemeral?: boolean;
    undockedParams?: DockedDimensions;
    dockedParams?: DockedDimensions;
    startsDocked?: boolean;
    overwriteDockedOptions?: boolean;
    ignoreSnappingRequests?: boolean;
    showTaskbarIcon?: boolean;
    minHeight?: number;
    maxHeight?: number;
    minWidth?: number;
    maxWidth?: number;
    claimSpace?: {
        enabled: boolean;
        alwaysOnTop?: boolean;
    };
    BUFFER_SIZE?: number;
    assimilationEnabled?: boolean;
    DEBUG?: boolean;
    ALLOW_GROUPS_TO_SNAP?: boolean;
    GROUP_MODE?: boolean | {
        enabled: boolean;
        behavior: string;
        groupTileBuffer: number;
        headerHeight: number;
        requireRectangularityForGroupResize: number;
        fillHolesOnUndock: boolean;
        undockDisbandsEntireGroup: boolean;
    };
    SNAPPING_OPACITY?: number;
    RESIZE_EVENT_THROTTLE_PERIOD?: number;
};
export declare type DefaultDockingOptions = {
    isDockable: boolean;
    undockedWidth: number;
    undockedHeight: number;
    isDocked: boolean;
    dockedWidth: number;
    dockedHeight: number;
    height: number;
    showTaskbarIcon?: boolean;
    locValue?: string;
};
export declare const defaultDockingOptions: DefaultDockingOptions;
export declare type DockedDimensions = {
    width: number;
    height: number;
    alwaysOnTop?: boolean;
};
export declare type MonitorDockablePositions = {
    TOP?: number;
    LEFT?: number;
    RIGHT?: number;
    BOTTOM?: number;
    NONE?: number;
};
export declare type DockingSimulatedEvent = {
    data: any;
    source?: string;
};
export declare type BoundingBoxesDiag = {
    A?: any;
    B?: any;
    C?: any;
    D?: any;
    E?: any;
    F?: any;
    G?: any;
    H?: any;
    I?: any;
};
export declare type ResizeObject = {
    handle?: string;
    type?: string;
    scalingGroup?: boolean;
    correctedHandle?: string;
    movingEdges?: {
        top: boolean;
        right: boolean;
        left: boolean;
        bottom: boolean;
    };
};
//# sourceMappingURL=types.d.ts.map