import { NgZone } from '@angular/core'; import { Draggable } from './classes/draggable'; import { DropZone } from './classes/drop-zone'; interface DropZoneRegisterParams { element: HTMLElement; } interface DraggableRegisterParams { element: HTMLElement; } export declare type DragAction = 'move' | 'copy'; export interface DragAndDropEvent { action: DragAction; data: any; event: DragEvent; } export declare class DragAndDropService { private _ngZone; constructor(_ngZone: NgZone); active_draggable: Draggable; active_drop_zone: DropZone; private _draggable_id; private _draggables; private _draggable_subscriptions; private _drop_zone_id; private _drop_zones; private _drop_zone_subscriptions; registerDraggable(params: DraggableRegisterParams): Draggable; unregisterDraggable(draggable: Draggable): void; registerDropZone(params: DropZoneRegisterParams): DropZone; unregisterDropZone(drop_zone: DropZone): void; addEventListener(element: HTMLElement | Document, event_name: string, cb: (event: DragEvent) => void, outside_angular?: boolean): void; removeEventListener(element: HTMLElement | Document, event_name: string, cb: (event: DragEvent) => void): void; isDropZoneRestricted(drop_zone: DropZone): boolean; getEvent(event?: DragEvent): DragAndDropEvent; private _checkLeave; } export {};