import { ElementRef } from '@angular/core';
import { Destroy } from '@deja-js/component/core';
import { Observable } from 'rxjs';
import { IDragCursorInfos } from './mouse-drag-cursor-infos.interface';
import { DejaMouseDragDropService } from './mouse-dragdrop.service';
import { IDragDropContext } from './mouse-dragdrop-context.interface';
import { IDropCursorInfos } from './mouse-drop-cursor-infos.interface';
import * as i0 from "@angular/core";
export declare class DejaMouseDroppableDirective extends Destroy {
    private _context;
    private _dragContext;
    set context(value: IDejaMouseDroppableContext);
    get context(): IDejaMouseDroppableContext;
    constructor(elementRef: ElementRef, dragDropService: DejaMouseDragDropService);
    static ɵfac: i0.ɵɵFactoryDeclaration<DejaMouseDroppableDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<DejaMouseDroppableDirective, "[deja-mouse-droppable]", never, { "context": "deja-mouse-droppable"; }, {}, never, never, false>;
}
export interface IDejaMouseDroppableContext {
    dragEnter?: (dragContext: IDragDropContext, dragCursor: IDragCursorInfos) => IDropCursorInfos | Observable<IDropCursorInfos>;
    dragOver?: (dragContext: IDragDropContext, dragCursor: IDragCursorInfos) => IDropCursorInfos;
    dragLeave?: (dragContext: IDragDropContext) => void;
    drop?: (dragContext: IDragDropContext, dragCursor: IDragCursorInfos) => void;
}
