import { ElementRef, Renderer2, OnInit, EventEmitter, OnChanges, SimpleChanges, OnDestroy, AfterViewInit } from '@angular/core';
import { ResizeHandle } from './widgets/resize-handle';
import { ResizeHandleType } from './models/resize-handle-type';
import { IResizeEvent } from './models/resize-event';
export declare class AngularResizableDirective implements OnInit, OnChanges, OnDestroy, AfterViewInit {
    private el;
    private renderer;
    private _resizable;
    private _handles;
    private _handleType;
    private _handleResizing;
    private _direction;
    private _directionChanged;
    private _aspectRatio;
    private _containment;
    private _origMousePos;
    /** Original Size and Position */
    private _origSize;
    private _origPos;
    /** Current Size and Position */
    private _currSize;
    private _currPos;
    /** Initial Size and Position */
    private _initSize;
    private _initPos;
    /** Snap to gird */
    private _gridSize;
    private _bounding;
    /**
     * Bugfix: iFrames, and context unrelated elements block all events, and are unusable
     * https://github.com/xieziyu/angular2-draggable/issues/84
     */
    private _helperBlock;
    private draggingSub;
    private _adjusted;
    /** Disables the resizable if set to false. */
    ngResizable: any;
    /**
     * Which handles can be used for resizing.
     * @example
     * [rzHandles] = "'n,e,s,w,se,ne,sw,nw'"
     * equals to: [rzHandles] = "'all'"
     *
     * */
    rzHandles: ResizeHandleType;
    /**
     * Whether the element should be constrained to a specific aspect ratio.
     *  Multiple types supported:
     *  boolean: When set to true, the element will maintain its original aspect ratio.
     *  number: Force the element to maintain a specific aspect ratio during resizing.
     */
    rzAspectRatio: boolean | number;
    /**
     * Constrains resizing to within the bounds of the specified element or region.
     *  Multiple types supported:
     *  Selector: The resizable element will be contained to the bounding box of the first element found by the selector.
     *            If no element is found, no containment will be set.
     *  Element: The resizable element will be contained to the bounding box of this element.
     *  String: Possible values: "parent".
     */
    rzContainment: string | HTMLElement;
    /**
     * Snaps the resizing element to a grid, every x and y pixels.
     * A number for both width and height or an array values like [ x, y ]
     */
    rzGrid: number | number[];
    /** The minimum width the resizable should be allowed to resize to. */
    rzMinWidth: number;
    /** The minimum height the resizable should be allowed to resize to. */
    rzMinHeight: number;
    /** The maximum width the resizable should be allowed to resize to. */
    rzMaxWidth: number;
    /** The maximum height the resizable should be allowed to resize to. */
    rzMaxHeight: number;
    /** Whether to prevent default event */
    preventDefaultEvent: boolean;
    /** emitted when start resizing */
    rzStart: EventEmitter<IResizeEvent>;
    /** emitted when start resizing */
    rzResizing: EventEmitter<IResizeEvent>;
    /** emitted when stop resizing */
    rzStop: EventEmitter<IResizeEvent>;
    constructor(el: ElementRef<HTMLElement>, renderer: Renderer2);
    ngOnChanges(changes: SimpleChanges): void;
    ngOnInit(): void;
    ngOnDestroy(): void;
    ngAfterViewInit(): void;
    /** A method to reset size */
    resetSize(): void;
    /** A method to get current status */
    getStatus(): {
        size: {
            width: number;
            height: number;
        };
        position: {
            top: number;
            left: number;
        };
    };
    private updateResizable;
    /** Use it to update aspect */
    private updateAspectRatio;
    /** Use it to update containment */
    private updateContainment;
    /** Use it to create handle divs */
    private createHandles;
    /** Use it to create a handle */
    private createHandleByType;
    private removeHandles;
    onMouseDown(event: MouseEvent | TouchEvent, handle: ResizeHandle): void;
    private subscribeEvents;
    private unsubscribeEvents;
    onMouseLeave(): void;
    onMouseMove(event: MouseEvent | TouchEvent): void;
    private startResize;
    private stopResize;
    private onResizing;
    private getResizingEvent;
    private updateDirection;
    private resizeTo;
    private doResize;
    private adjustByRatio;
    private checkBounds;
    private checkSize;
    private getBounding;
    private resetBounding;
    private getGridSize;
}
