import * as i0 from '@angular/core';
import { OnDestroy, EventEmitter, Renderer2, ElementRef } from '@angular/core';
import { Observable } from 'rxjs';
import * as i3 from '@angular/common';

declare class DragDropDirectiveService {
    private dropItem;
    private draggedItem;
    setDropItem(item: any): void;
    getDropItem(): Observable<any>;
    setDragItem(item: any): void;
    getDragItem(): any;
    static ɵfac: i0.ɵɵFactoryDeclaration<DragDropDirectiveService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<DragDropDirectiveService>;
}

declare class DragDirective implements OnDestroy {
    private renderer;
    private el;
    private dragDropDirectiveService;
    draggedItem: any;
    dragHighlight: string | undefined;
    releaseDrop: EventEmitter<any>;
    startDrag: EventEmitter<any>;
    private highlighted;
    private dropSubscription;
    constructor(renderer: Renderer2, el: ElementRef, dragDropDirectiveService: DragDropDirectiveService);
    onMouseEnter(): void;
    onMouseOut(): void;
    onDragStart(event: any): void;
    onDragEnd(): void;
    ngOnDestroy(): void;
    private emitDraggedItem;
    private highlight;
    static ɵfac: i0.ɵɵFactoryDeclaration<DragDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<DragDirective, "[ksDragDirective]", never, { "draggedItem": { "alias": "draggedItem"; "required": false; }; "dragHighlight": { "alias": "dragHighlight"; "required": false; }; }, { "releaseDrop": "releaseDrop"; "startDrag": "startDrag"; }, never, never, false, never>;
}

declare class DropDirective {
    private renderer;
    private el;
    private dragDropDirectiveService;
    dropHighlight: string | undefined;
    dropEvent: EventEmitter<any>;
    dragenterEvent: EventEmitter<any>;
    dragleaveEvent: EventEmitter<any>;
    dropEventMouse: EventEmitter<any>;
    private highlighted;
    private dragItem;
    constructor(renderer: Renderer2, el: ElementRef, dragDropDirectiveService: DragDropDirectiveService);
    onDragEnter(): void;
    onDragLeave(): void;
    onDragOver(event: any): void;
    onDrop(event: any): void;
    private highlight;
    static ɵfac: i0.ɵɵFactoryDeclaration<DropDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<DropDirective, "[ksDropDirective]", never, { "dropHighlight": { "alias": "dropHighlight"; "required": false; }; }, { "dropEvent": "dropEvent"; "dragenterEvent": "dragenterEvent"; "dragleaveEvent": "dragleaveEvent"; "dropEventMouse": "dropEventMouse"; }, never, never, false, never>;
}

declare class DragDropDirectiveModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DragDropDirectiveModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DragDropDirectiveModule, [typeof DragDirective, typeof DropDirective], [typeof i3.CommonModule], [typeof DragDirective, typeof DropDirective]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DragDropDirectiveModule>;
}

export { DragDirective, DragDropDirectiveModule, DragDropDirectiveService, DropDirective };
