import { AfterViewInit, ElementRef, EventEmitter, NgZone, OnDestroy, Renderer2 } from '@angular/core';
import { VoidListener } from 'primeng/ts-helpers';
import * as i0 from "@angular/core";
/**
 * pDraggable directive apply draggable behavior to any element.
 * @group Components
 */
export declare class Draggable implements AfterViewInit, OnDestroy {
    el: ElementRef;
    zone: NgZone;
    private renderer;
    scope: string | undefined;
    /**
     * Defines the cursor style.
     * @group Props
     */
    dragEffect: 'none' | 'copy' | 'copyLink' | 'copyMove' | 'link' | 'linkMove' | 'move' | 'all' | 'uninitialized' | undefined;
    /**
     * Selector to define the drag handle, by default anywhere on the target element is a drag handle to start dragging.
     * @group Props
     */
    dragHandle: string | undefined;
    /**
     * Callback to invoke when drag begins.
     * @param {DragEvent} event - Drag event.
     * @group Emits
     */
    onDragStart: EventEmitter<DragEvent>;
    /**
     * Callback to invoke when drag ends.
     * @param {DragEvent} event - Drag event.
     * @group Emits
     */
    onDragEnd: EventEmitter<DragEvent>;
    /**
     * Callback to invoke on dragging.
     * @param {DragEvent} event - Drag event.
     * @group Emits
     */
    onDrag: EventEmitter<DragEvent>;
    handle: any;
    dragListener: VoidListener;
    mouseDownListener: VoidListener;
    mouseUpListener: VoidListener;
    _pDraggableDisabled: boolean;
    constructor(el: ElementRef, zone: NgZone, renderer: Renderer2);
    get pDraggableDisabled(): boolean;
    set pDraggableDisabled(_pDraggableDisabled: boolean);
    ngAfterViewInit(): void;
    bindDragListener(): void;
    unbindDragListener(): void;
    bindMouseListeners(): void;
    unbindMouseListeners(): void;
    drag(event: DragEvent): void;
    dragStart(event: DragEvent): void;
    dragEnd(event: DragEvent): void;
    mousedown(event: MouseEvent): void;
    mouseup(event: MouseEvent): void;
    allowDrag(): boolean;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<Draggable, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<Draggable, "[pDraggable]", never, { "scope": { "alias": "pDraggable"; "required": false; }; "dragEffect": { "alias": "dragEffect"; "required": false; }; "dragHandle": { "alias": "dragHandle"; "required": false; }; "pDraggableDisabled": { "alias": "pDraggableDisabled"; "required": false; }; }, { "onDragStart": "onDragStart"; "onDragEnd": "onDragEnd"; "onDrag": "onDrag"; }, never, never, true, never>;
}
/**
 * pDroppable directive apply droppable behavior to any element.
 * @group Components
 */
export declare class Droppable implements AfterViewInit, OnDestroy {
    el: ElementRef;
    zone: NgZone;
    private renderer;
    scope: string | string[] | undefined;
    /**
     * Whether the element is droppable, useful for conditional cases.
     * @group Props
     */
    _pDroppableDisabled: boolean;
    get pDroppableDisabled(): boolean;
    set pDroppableDisabled(_pDroppableDisabled: boolean);
    /**
     * Defines the cursor style, valid values are none, copy, move, link, copyMove, copyLink, linkMove and all.
     * @group Props
     */
    dropEffect: 'none' | 'copy' | 'link' | 'move' | undefined;
    /**
     * Callback to invoke when a draggable enters drop area.
     * @group Emits
     */
    onDragEnter: EventEmitter<DragEvent>;
    /**
     * Callback to invoke when a draggable leave drop area.
     * @group Emits
     */
    onDragLeave: EventEmitter<DragEvent>;
    /**
     * Callback to invoke when a draggable is dropped onto drop area.
     * @group Emits
     */
    onDrop: EventEmitter<DragEvent>;
    constructor(el: ElementRef, zone: NgZone, renderer: Renderer2);
    dragOverListener: VoidListener;
    ngAfterViewInit(): void;
    bindDragOverListener(): void;
    unbindDragOverListener(): void;
    dragOver(event: DragEvent): void;
    drop(event: DragEvent): void;
    dragEnter(event: DragEvent): void;
    dragLeave(event: DragEvent): void;
    allowDrop(event: DragEvent): boolean;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<Droppable, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<Droppable, "[pDroppable]", never, { "scope": { "alias": "pDroppable"; "required": false; }; "pDroppableDisabled": { "alias": "pDroppableDisabled"; "required": false; }; "dropEffect": { "alias": "dropEffect"; "required": false; }; }, { "onDragEnter": "onDragEnter"; "onDragLeave": "onDragLeave"; "onDrop": "onDrop"; }, never, never, true, never>;
}
export declare class DragDropModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DragDropModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DragDropModule, never, [typeof Draggable, typeof Droppable], [typeof Draggable, typeof Droppable]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DragDropModule>;
}
