import type { ChartRenderer, ChartTooltipExtensionContext } from './dom-types.js';
import type { ChartMotionTransition, ChartValue } from './types.js';
export declare const chartRendererMotion: unique symbol;
export interface ChartTooltipMotionSnapshot {
    wasHidden: boolean;
    showPresence: boolean;
    previousLeft?: number;
    previousTop?: number;
    movementX: number;
    movementY: number;
    velocityX: number;
    velocityY: number;
    presence?: {
        opacity: number;
        scale: number;
    };
}
export interface ChartTooltipMotionController {
    beforePaint: (element: HTMLElement) => ChartTooltipMotionSnapshot;
    afterPaint: (element: HTMLElement, snapshot: ChartTooltipMotionSnapshot, transition: false | ChartMotionTransition | undefined) => void;
    hide: (element: HTMLElement, transition: false | ChartMotionTransition | undefined, complete: () => void) => boolean;
    destroy: (element: HTMLElement | undefined) => void;
}
export interface ChartRendererMotionCapability {
    createTooltip: (context: {
        container: HTMLElement;
        transition: () => false | ChartMotionTransition | undefined;
    }) => ChartTooltipMotionController;
}
export declare function rendererMotionCapability(renderer: ChartRenderer<any, any, any>): ChartRendererMotionCapability | undefined;
export declare function tooltipMotionController<TDatum, TXValue extends ChartValue, TYValue extends ChartValue>(context: ChartTooltipExtensionContext<TDatum, TXValue, TYValue>): ChartTooltipMotionController | undefined;
export declare function connectRendererTooltipMotion<TDatum, TXValue extends ChartValue, TYValue extends ChartValue>(renderer: ChartRenderer<TDatum, TXValue, TYValue>, context: ChartTooltipExtensionContext<TDatum, TXValue, TYValue>, transition: () => false | ChartMotionTransition | undefined): ChartTooltipExtensionContext<TDatum, TXValue, TYValue>;
