import { ElementRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
import { DroppableDirective } from './ngx-droppable.directive';
import { DrakeStoreService } from '../services/drake-store.service';
import * as i0 from "@angular/core";
/**
 * Adds properties and events to draggable elements
 *
 * @export
 */
export declare class DraggableDirective implements OnInit, OnDestroy {
    private el;
    private drakesService;
    private droppableDirective;
    ngxDraggable: string[];
    model: any;
    get dropZones(): any;
    set dropZones(val: any);
    _moves: boolean | ((...args: any[]) => any);
    handles: any[];
    get hasHandle(): boolean;
    drag: EventEmitter<any>;
    dragDelay: number;
    dragDelayed: boolean;
    touchTimeout: any;
    get element(): any;
    _dropZones: string[];
    _parentDropzones: string[];
    constructor(el: ElementRef, drakesService: DrakeStoreService, droppableDirective: DroppableDirective);
    onMove(e: Event): void;
    onDown(): void;
    onUp(): void;
    ngOnInit(): void;
    update(): void;
    ngOnDestroy(): void;
    updateElements(): void;
    canMove(source?: any, handle?: any, sibling?: any): boolean;
    moves(source: any, handle: any, sibling: any): boolean;
    ngDoCheck(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DraggableDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<DraggableDirective, "[ngxDraggable]", never, { "ngxDraggable": { "alias": "ngxDraggable"; "required": false; }; "model": { "alias": "model"; "required": false; }; "dropZones": { "alias": "dropZones"; "required": false; }; "_moves": { "alias": "moves"; "required": false; }; }, { "drag": "drag"; }, never, never, false, never>;
}
