import { Observable } from 'rxjs';
import { events } from '../events';
import { DragPosition, IDragPositionEvent } from './types';
export declare class DragPositionEvent implements IDragPositionEvent {
    type: IDragPositionEvent['type'];
    start: DragPosition;
    private el;
    private event;
    constructor(options: {
        type: DragPositionEvent['type'];
        el: HTMLElement;
        event: events.IMouseEvent;
        start: DragPosition;
    });
    get client(): {
        x: number;
        y: number;
    };
    get screen(): {
        x: number;
        y: number;
    };
    get delta(): {
        x: number;
        y: number;
    };
    get element(): {
        x: number;
        y: number;
    };
    toObject(): IDragPositionEvent;
    clone(type: DragPositionEvent['type']): DragPositionEvent;
}
export declare const position: (options: {
    el: HTMLElement;
}) => {
    isComplete: boolean;
    events$: Observable<DragPositionEvent>;
    dispose$: Observable<void>;
    dispose: () => void;
};
export declare const offsetPosition: (el: HTMLElement) => {
    top: number;
    left: number;
};
