import { OnDestroy, Renderer2 } from "@angular/core";
import { Subject } from "rxjs";
import { CoDropEvent } from "../event/co-drop-event";
import { CoDragEvent } from "../event/co-drag-event";
import { DragDropContainer } from "../businessobject/drag-drop-container";
/**
 * Handles drag and drop elements
 */
export declare class DragDropService implements OnDestroy {
    set renderer(value: Renderer2);
    dragData: any;
    drag: Subject<CoDragEvent>;
    drop: Subject<CoDropEvent>;
    private _renderer;
    private _containers;
    private _disabledContainers;
    private _dropTargetElement;
    private _dragHandles;
    private _isdragging;
    private _dragElement;
    private _dragInContainer;
    private _lastDropTarget;
    /**
     * Ghost image of the element being dragged
     */
    private _ghostDragImage;
    private _clickCounter;
    private set ghostLeft(value);
    private set ghostTop(value);
    private _ghostLeft;
    private _ghostTop;
    private _mouseDown;
    private _currentMousePosition;
    private _currentMouseOffset;
    constructor();
    ngOnDestroy(): void;
    addContainer(container: DragDropContainer): void;
    addDragHandle(handle: any): void;
    removeContainer(container: DragDropContainer): void;
    removeDragHandle(handle: any): void;
    enableContainer(container: DragDropContainer): void;
    disableContainer(container: DragDropContainer): void;
    private _removeListeners;
    private _setEvents;
    private _setElementClass;
    private _handleEventListener;
    private _getContainerOfElement;
    /**
     * Checks if given element is a child of container(s)
     * @param element
     * @returns {number} index of element
     */
    private _getElementOfContainer;
    /**
     * Returns next sibling of container that contains given element.
     * @param element
     * @returns {any} null if there are no siblings left
     */
    private _getNextElementInContainer;
    private _getDragHandleClicked;
    private _getValidDragDropElement;
    private _getNextSibling;
    private _indexOf;
    private _createGhostImage;
    private _destroyGhostImage;
    private _positionGhostImage;
    private _getScroll;
    private _getOffset;
    private _determineDroptarget;
    /**
     * Briefly hides the ghost image to be able to determine which element is under mouse.
     * @param x
     * @param y
     * @returns {Element} Top level element
     */
    private _getHoveredElement;
    private _animateVisibility;
    private _animateMove;
    private _handleMouseDown;
    private _handleMouseUp;
    private _handleMouseMove;
    private _startDrag;
    private _drag;
    private _endDrag;
    private _resetDrag;
}
