import { AfterViewInit, OnDestroy, ElementRef, NgZone, EventEmitter, Renderer2, OnChanges } from '@angular/core';
import * as i0 from "@angular/core";
export interface DraggedEvent {
    x: number;
    y: number;
}
export interface DragOffset {
    x?: number;
    y?: number;
}
export declare class DraggableDirective implements AfterViewInit, OnChanges, OnDestroy {
    private host;
    private zone;
    private renderer;
    dragHandle?: string | Element;
    dragTarget: string | Element;
    dragEnabled: boolean;
    set dialogDragOffset(offset: DragOffset);
    dragged: EventEmitter<DraggedEvent>;
    /** Element to be dragged */
    private target;
    /** Drag handle */
    private handle;
    private delta;
    private offset;
    private enabled;
    private destroy$;
    constructor(host: ElementRef, zone: NgZone, renderer: Renderer2);
    ngAfterViewInit(): void;
    ngOnChanges(): void;
    ngOnDestroy(): void;
    reset(offset?: DragOffset): void;
    private setupEvents;
    private translate;
    /**
     * Init the directive
     */
    private init;
    static ɵfac: i0.ɵɵFactoryDeclaration<DraggableDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<DraggableDirective, "[dialogDraggable]", never, { "dragHandle": { "alias": "dragHandle"; "required": false; }; "dragTarget": { "alias": "dragTarget"; "required": false; }; "dragEnabled": { "alias": "dragEnabled"; "required": false; }; "dialogDragOffset": { "alias": "dialogDragOffset"; "required": false; }; }, { "dragged": "dragged"; }, never, never, false, never>;
}
