import { ElementRef, EventEmitter, NgZone, OnInit } from "@angular/core";
import { UtilService } from "../../../services/util.service";
import { DragAndDropService } from "./drag-and-drop.service";
import { IDragEvent } from "./public-api";
import * as i0 from "@angular/core";
/**
 * Directive that provides draggable behavior for an element
 *
 *  __Usage:__
 *
 * Bind this directive to an element to add a draggable behavior to it.
 *
 *        `<div nuiDraggable>Some content</div>`
 *
 * Make sure that this zone has some content, because draggable directive doesn't set any height
 * to the element. This won't work:
 *
 *        `<div nuiDraggable></div>`
 *
 * Don't forget to assign some payload (data for transmission from draggable to droppable).
 * It can be an `Object`, string or whatever can be converted to a string:
 *
 *        `<div nuiDraggable [payload]="myData"></div>`
 *
 * To subscribe to an event `dragStart, dragEnd` just transmit an attribute
 *
 *         `<div nuiDroppable (dragStart)="dragStart($event)"></div>`
 *
 * And `dragStart` method will look like that:
 *
 *         `public dragStart(dropEvent: DragEvent) {
 *              //dropEvent - HTML 5 drag event (native)
 *          };`
 *
 * <example-url>./../examples/index.html#/dragdrop</example-url>
 *
 * @dynamic
 * @ignore
 */
export declare class DraggableDirective implements OnInit {
    private elRef;
    private zone;
    private utilService;
    private dragAndDropService;
    private document;
    private static draggableClass;
    private static draggingClass;
    private static dragSourceClass;
    private static adornerClass;
    private static adornerHaloClass;
    private static dragsourceOverlayClass;
    adornerDragClass: string;
    payload: any;
    dragStart: EventEmitter<any>;
    dragEnd: EventEmitter<any>;
    private adorner?;
    private dragsourceOverlay?;
    private moveDragAdorner;
    draggable: boolean;
    onDragStart(event: IDragEvent): void;
    onDragEnd(event: IDragEvent): void;
    constructor(elRef: ElementRef, zone: NgZone, utilService: UtilService, dragAndDropService: DragAndDropService, document: Document);
    ngOnInit(): void;
    private mouseHook;
    private createDragVisuals;
    private setImageAndData;
    private autoScroll;
    static ɵfac: i0.ɵɵFactoryDeclaration<DraggableDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<DraggableDirective, "[nuiDraggable]", never, { "adornerDragClass": "adornerDragClass"; "payload": "payload"; }, { "dragStart": "dragStart"; "dragEnd": "dragEnd"; }, never>;
}
