import { ElementRef, EventEmitter, NgZone, OnDestroy, OnInit } from '@angular/core';
import { DndService, DragSource } from '@ng-dnd/core';
import { Subscription } from 'rxjs';
import { LayoutComponentDragData } from '../../../../interfaces';
import { DragActiveService } from '../../../../services';
import { DndBusService } from '../../services';
import { LayoutDragItem, LayoutDropResult } from '../dndCoreDesigner/dndCoreDesigner.interface';
import * as i0 from "@angular/core";
/**
 * Directive used for initializing and handling dnd core functionality for layout component palette item
 */
export declare class DndCorePaletteItemDirective implements OnInit, OnDestroy {
    protected dnd: DndService;
    protected paletteItemElement: ElementRef<HTMLElement>;
    protected draggingSvc: DragActiveService;
    protected bus: DndBusService;
    protected zone: NgZone;
    /**
     * Subscriptions created during initialization
     */
    protected initSubscriptions: Subscription;
    /**
     * Subscription for palette item connection to DOM
     */
    protected itemConnection: Subscription | undefined | null;
    /**
     * Subscription for drag preview
     */
    protected dragPreviewConnection: Subscription | undefined | null;
    /**
     * Drag source used for dragging palette item
     */
    protected drag: DragSource<LayoutDragItem, LayoutDropResult>;
    /**
     * Instance of drag data for this component
     */
    dragData: LayoutComponentDragData;
    /**
     * Occurs when item was succesfully dropped
     */
    itemDrop: EventEmitter<void>;
    constructor(dnd: DndService, paletteItemElement: ElementRef<HTMLElement>, draggingSvc: DragActiveService, bus: DndBusService, zone: NgZone);
    /**
     * Initialize component
     */
    ngOnInit(): void;
    /**
     * Called when component is destroyed
     */
    ngOnDestroy(): void;
    /**
     * Connects palette item element to drag source
     */
    protected connectDragToItem(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DndCorePaletteItemDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<DndCorePaletteItemDirective, "[dndCorePaletteItem]", never, { "dragData": { "alias": "dndCorePaletteItem"; "required": false; }; }, { "itemDrop": "itemDrop"; }, never, never, false, never>;
}
//# sourceMappingURL=dndCorePaletteItem.directive.d.ts.map