import { NgZone } from '@angular/core';
import { Subject, Subscription } from 'rxjs';
import { DraggableDirective } from './../directives/draggable.directive';
import { DragPreviewDirective } from '../directives/drag-preview.directive';
export declare class DragDropService {
    private ngZone;
    dragData: any;
    draggedEl: any;
    draggedElIdentity: any;
    batchDragData: Array<{
        identity?: any;
        draggable: DraggableDirective;
        dragData: any;
    }>;
    batchDragGroup: string;
    batchDragStyle: Array<string>;
    batchDragging: boolean;
    scope: string | Array<string>;
    dropTargets: any[];
    dropEvent: Subject<any>;
    dragEndEvent: Subject<any>;
    dragStartEvent: Subject<any>;
    dropOnItem: boolean;
    dragFollow: boolean;
    dragFollowOptions: {
        appendToBody?: boolean;
    };
    dropOnOrigin: boolean;
    draggedElFollowingMouse: boolean;
    dragOffset: {
        top: number;
        left: number;
        offsetLeft: number;
        offsetTop: number;
        width?: number;
        height?: number;
    };
    subscription: Subscription;
    dragEmptyImage: HTMLImageElement;
    dragCloneNode: any;
    dragOriginPlaceholder: any;
    dragItemContainer: any;
    dragItemParentName: string;
    dragItemChildrenName: string;
    intersectionObserver: any;
    sub: any;
    dragOriginPlaceholderNextSibling: any;
    touchInstance: any;
    dragElShowHideEvent: Subject<boolean>;
    dragSyncGroupDirectives: any;
    dragPreviewDirective: DragPreviewDirective;
    constructor(ngZone: NgZone);
    newSubscription(): any;
    enableDraggedCloneNodeFollowMouse(): void;
    disableDraggedCloneNodeFollowMouse(): void;
    interceptChildNode(parentNode: any, childNodeList: any): void;
    setChildNodeHide(entries: any): void;
    followMouse4CloneNode: (event: any) => void;
    getBatchDragData(identity?: any, order?: ((a: any, b: any) => number) | 'select' | 'draggedElFirst'): any[];
    /** usage:
     * constructor(..., private dragDropService: DragDropService) {}
     * cleanBatchDragData() { this.dragDropService.cleanBatchDragData(); }
     */
    cleanBatchDragData(): {
        identity?: any;
        draggable: DraggableDirective;
        dragData: any;
    }[];
    copyStyle(source: any, target: any): void;
}
