/// <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. This is primarily used for (modal) dialogs.
 */
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 _resizeHandler: (newBounds: Rectangle) => void;
    constructor(model: InitModelOf<Resizable>);
    static MODES: {
        readonly SOUTH: "s";
        readonly EAST: "e";
        readonly WEST: "w";
        readonly NORTH: "n";
    };
    /**
     * 15 fps seems to be a good value for slower browsers like firefox,
     * where it takes longer to render.
     */
    static FPS: number;
    setModes(modes?: ResizableMode[]): void;
    setBoundaries(boundaries?: Insets): void;
    protected _appendResizeHandles(): void;
    protected _calculateResizeHandlersVisibility(): void;
    protected _hasMode(mode: ResizableMode): boolean;
    init(): void;
    protected _installRemoveHandler(): void;
    destroy(): void;
    protected _onMouseDown(event: MouseDownEvent): void;
    protected _onMouseUp(event: MouseUpEvent): 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: 'n' | 'ne' | 'e' | 'se' | 's' | 'sw' | 'w' | 'nw';
    mousedownEvent: MouseDownEvent;
}
export type ResizableMode = EnumObject<typeof Resizable.MODES>;
//# sourceMappingURL=Resizable.d.ts.map