/*
 * Copyright (C) 2019 - 2026 Devexperts Solutions IE Limited
 * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
 * If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.
 */
import { HitBoundsTest } from '../../canvas/canvas-bounds-container';
import { ChartBaseElement } from '../../model/chart-base-element';
import { CanvasInputListenerComponent, Point } from '../../inputlisteners/canvas-input-listener.component';
import { ChartPanComponent } from '../pan/chart-pan.component';
export interface DragInfo {
    delta: number;
    draggedPixels: number;
}
export interface DragComponentOptions {
    dragPredicate: () => boolean;
}
export interface DragNDropComponentCallbacks {
    onDragStart?: (point: Point) => void;
    onDragTick: (dragInfo: DragInfo) => void;
    onDragEnd?: (draggedPixels: number) => void;
}
export declare const defaultDragComponentOptions: DragComponentOptions;
export declare class DragNDropComponent extends ChartBaseElement {
    protected hitTest: HitBoundsTest;
    protected dragCallbacks: DragNDropComponentCallbacks;
    protected canvasInputListener: CanvasInputListenerComponent;
    protected chartPanComponent: ChartPanComponent;
    private dragComponentOptions;
    dragging: boolean;
    draggedPixels: number;
    constructor(hitTest: HitBoundsTest, dragCallbacks: DragNDropComponentCallbacks, canvasInputListener: CanvasInputListenerComponent, chartPanComponent: ChartPanComponent, dragComponentOptions: DragComponentOptions);
    protected onDragStart: (point: Point) => void;
    protected onDragTick: (yDelta: number) => void;
    protected onDragEnd: () => void;
}
