/**
 * Copyright 2023 Kapeta Inc.
 * SPDX-License-Identifier: MIT
 */
import { DOMElement } from '@kapeta/ui-web-utils';
import { DraggableContext } from './DraggableContext';
import './Draggable.less';
import { Dimensions } from '@kapeta/schemas';
export declare const DRAGGING_HANDLE_CSS = "dragging-handle";
export declare const DRAGGING_SOURCE_CSS = "dragging-source";
interface DraggableOptions<T> {
    elm: DOMElement;
    dragCopy?: boolean;
    horizontal?: boolean;
    vertical?: boolean;
    disabled?: boolean;
    handle?: string;
    target?: DOMElement;
    container?: Element;
    context?: DraggableContext<T>;
    zoom?: number;
    overflowX?: boolean;
    overflowY?: boolean;
    onDragStart?: () => void;
    onDragMove?: (dimensions: Dimensions) => boolean;
    onDragEnd?: (dimensions: Dimensions) => boolean;
}
export declare class Draggable<T> {
    private options;
    private elm;
    private handle;
    private target;
    private draggingTarget;
    private dragging;
    private startPosition;
    private lastMouseMoveEvent;
    private lastScrollPoint;
    private initialSize;
    private mouseElementOffset;
    private containerDimensions;
    private svgContainer?;
    private enabledAxis;
    private item;
    constructor(item: T, options: DraggableOptions<T>);
    start(): void;
    stop(): void;
    private getContainerElement;
    private getDocumentBody;
    private getWindow;
    private isSVG;
    private calculateDimensions;
    private getZoomLevel;
    private updateContainerDimensions;
    private getGlobalScroll;
    private getGlobalScrollDelta;
    /**
     * Gets the mouse position translated down to the local coordinate system of the element
     * @param evt
     */
    private getTranslatedMousePosition;
    private handleMouseDown;
    private handleScroll;
    private handleMouseMove;
    private updateFromMousePosition;
    private handleMouseUp;
    private updateDraggingTarget;
}
export {};
