/// <reference types="jquery" />
import { EnumObject, InitModelOf, Insets, ObjectWithType, Rectangle, ResizableModel, SomeRequired } from '../index';
import MouseDownEvent = JQuery.MouseDownEvent;
import MouseUpEvent = JQuery.MouseUpEvent;
import MouseMoveEvent = JQuery.MouseMoveEvent;
/**
 * Resizable makes a DOM element resizable by adding resize handlers to all edges of the given model.$container.
 * The following events are triggered on the DOM element:
 * - resizeStep: triggered during resizing.
 * - resizeEnd: triggered when resizing ends.
 */
export declare class Resizable implements ResizableModel, ObjectWithType {
    model: ResizableModel;
    initModel: SomeRequired<this['model'], '$container'>;
    objectType: string;
    modes: ResizableMode[];
    boundaries: Insets;
    useOverlay: boolean;
    $container: JQuery;
    $window: JQuery<Window>;
    $resizableS: JQuery;
    $resizableE: JQuery;
    $resizableSE: JQuery;
    $resizableW: JQuery;
    $resizableSW: JQuery;
    $resizableN: JQuery;
    $resizableNW: JQuery;
    $resizableNE: JQuery;
    $resizingOverlay: JQuery;
    protected _context: ResizableContext;
    protected _mouseDownHandler: (event: MouseDownEvent) => void;
    protected _mouseUpHandler: (event: MouseUpEvent) => void;
    protected _mouseMoveHandler: (event: MouseMoveEvent) => void;
    protected _keyDownHandler: (event: KeyboardEvent) => void;
    protected _resizeHandler: (newBounds: Rectangle) => void;
    constructor();
    static MODES: {
        readonly SOUTH: "s";
        readonly EAST: "e";
        readonly WEST: "w";
        readonly NORTH: "n";
    };
    init(model: InitModelOf<Resizable>): void;
    setModes(modes?: ResizableMode[]): void;
    setBoundaries(boundaries?: Insets): void;
    protected _appendResizeHandles(): void;
    protected _appendResizeHandle(edge: ResizableEdge): JQuery;
    protected _calculateResizeHandlersVisibility(): void;
    protected _hasMode(mode: ResizableMode): boolean;
    protected _installRemoveHandler(): void;
    destroy(): void;
    protected _onMouseDown(event: MouseDownEvent): void;
    protected _onMouseUp(event: MouseUpEvent): void;
    /**
     * Finishes the resizing by cleaning up all temporary states and triggering the `resizeEnd` event with the initial and new bounds.
     */
    finish(): void;
    /**
     * Cancels the resizing if it is in progress.
     */
    cancel(): void;
    protected _onKeyDown(event: KeyboardEvent): void;
    protected _cleanup(): void;
    protected _onMouseMove(event: MouseMoveEvent): void;
    protected _computeBounds(event: MouseMoveEvent): Rectangle;
    protected _resize(newBounds: Rectangle): void;
    protected _resizeEnd(): void;
    protected _cropToBoundaries(newBounds: Rectangle): void;
    protected _boundaryValueSet(value: number): boolean;
    protected _calcDistance(eventA: MouseDownEvent, eventB: MouseMoveEvent): number[];
}
export interface ResizableContext {
    initialBounds: Rectangle;
    currentBounds: Rectangle;
    minBounds: Rectangle;
    maxBounds: Rectangle;
    distance: number[];
    edge: ResizableEdge;
    mousedownEvent: MouseDownEvent;
}
export type ResizableMode = EnumObject<typeof Resizable.MODES>;
export type ResizableEdge = 'n' | 'ne' | 'e' | 'se' | 's' | 'sw' | 'w' | 'nw';
//# sourceMappingURL=Resizable.d.ts.map