import { Observable } from 'rxjs';
import * as i0 from "@angular/core";
/**
 * A factory that creates a tracker instance that listens for dragenter/dragleave/drop events
 * on a DOM element and tracks the event state.
 * When the target element contains child elements, DOM events are fired in a confusing order.
 *
 * For example, when the user drags into the div, the into the <a>, then out:
 *   <div><a><span></span></a></div>
 * These events are triggered:
 *   type=dragenter target=<div>
 *   type=dragenter target=<a>
 *   type=dragleave target=<div>
 *   type=dragleave target=<div>
 *
 * This service wraps the browser-specific oddities into an rxjs Observable that emits on changes.
 */
export declare class DragStateTrackerFactory {
    trackElement(target: EventTarget): Observable<FileDragState>;
    static ɵfac: i0.ɵɵFactoryDeclaration<DragStateTrackerFactory, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<DragStateTrackerFactory>;
}
export declare type FileDragState = {
    type: string;
}[];
