import { ElementRef } from '@angular/core';
import { Destroy } from '@deja-js/component/core';
import { Observable } from 'rxjs';
import { DragCursorInfos, DropCursorInfos, MouseDragDropService } from './mouse-dragdrop.service';
import * as i0 from "@angular/core";
export declare class MouseDroppableDirective<T> extends Destroy {
    private _context;
    set context(value: MouseDroppableContext<T>);
    get context(): MouseDroppableContext<T>;
    constructor(elementRef: ElementRef<HTMLElement>, dragDropService: MouseDragDropService<T>);
    static ɵfac: i0.ɵɵFactoryDeclaration<MouseDroppableDirective<any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<MouseDroppableDirective<any>, "[mouse-droppable]", never, { "context": "mouse-droppable"; }, {}, never>;
}
export interface MouseDroppableContext<T> {
    dragEnter?: (dragContext$: T, dragCursor: DragCursorInfos) => DropCursorInfos | Observable<DropCursorInfos>;
    dragOver?: (dragContext$: T, dragCursor: DragCursorInfos) => DropCursorInfos;
    dragLeave?: (dragContext$: T) => void;
    drop?: (dragContext$: T, dragCursor: DragCursorInfos) => void;
}
