import type { Color } from 'chart.js';
import type { FlowConfig, FlowOptions, FlowProps, SankeyNode } from './types.js';
import { Element } from 'chart.js';
export default class Flow extends Element<FlowProps, FlowOptions> {
    static readonly id = "flow";
    static readonly defaults: {
        alpha: number;
        colorFrom: string;
        colorMode: string;
        colorTo: string;
        flowColor: null;
        flowLabels: {
            borderRadius: number;
            color: string;
            display: boolean;
            padding: number;
            position: string;
        };
        hoverColorFrom: (_ctx: unknown, options: FlowOptions) => Color;
        hoverColorTo: (_ctx: unknown, options: FlowOptions) => Color;
        orientation: string;
    };
    static readonly descriptors: {
        _scriptable: boolean;
        flowLabels: {
            _scriptable: boolean;
        };
    };
    flow: number;
    x2: number;
    y2: number;
    width: number;
    height: number;
    progress: number;
    from?: SankeyNode;
    to?: SankeyNode;
    constructor(cfg: FlowConfig);
    /**
     * @param {CanvasRenderingContext2D} ctx
     */
    draw(ctx: CanvasRenderingContext2D): void;
    /**
     * @param {number} mouseX
     * @param {number} mouseY
     * @param {boolean} useFinalPosition
     * @return {boolean}
     */
    inRange(mouseX: number, mouseY: number, useFinalPosition: boolean): boolean;
    /**
     * @param {number} mouseX
     * @param {boolean} useFinalPosition
     * @return {boolean}
     */
    inXRange(mouseX: number, useFinalPosition: boolean): boolean;
    /**
     * @param {number} mouseY
     * @param {boolean} useFinalPosition
     * @return {boolean}
     */
    inYRange(mouseY: number, useFinalPosition: boolean): boolean;
    /**
     * @param {boolean} useFinalPosition
     * @return {{x: number, y:number}}
     */
    getCenterPoint(useFinalPosition: boolean): {
        x: number;
        y: number;
    };
    tooltipPosition(useFinalPosition?: boolean): {
        x: number;
        y: number;
    };
    /**
     * @param {"x" | "y"} axis
     * @return {number}
     */
    getRange(axis: 'x' | 'y'): number;
}
