import { type AgRangeAreaSeriesItemType, type AgSeriesMarkerStyle, type TextOrSegments, _ModuleSupport } from 'ag-charts-community';
import { type Point } from 'ag-charts-core';
import { type RangeAreaMarkerDatum } from './rangeAreaProperties';
export interface RangeAreaLabelDatum extends Readonly<Point> {
    datumIndex: number;
    text: TextOrSegments;
    textAlign: CanvasTextAlign;
    textBaseline: CanvasTextBaseline;
    datum: any;
    readonly itemId?: never;
    readonly itemType: AgRangeAreaSeriesItemType;
    series: _ModuleSupport.CartesianSeriesNodeDatum['series'];
    style?: AgSeriesMarkerStyle;
}
interface RangeAreaFillPathDatum {
    readonly spans: _ModuleSupport.LinePathSpan[];
    readonly phantomSpans: _ModuleSupport.LinePathSpan[];
    readonly itemType: AgRangeAreaSeriesItemType;
}
interface RangeAreaStrokePathDatum {
    readonly spans: _ModuleSupport.LinePathSpan[];
    readonly itemType: AgRangeAreaSeriesItemType;
}
export type RangeAreaItemId = `${string}-${string}`;
export interface RangeAreaContext extends _ModuleSupport.CartesianSeriesNodeDataContext<RangeAreaMarkerDatum, RangeAreaLabelDatum> {
    readonly itemId: RangeAreaItemId;
    fillData: RangeAreaFillPathDatum;
    highStrokeData: RangeAreaStrokePathDatum;
    lowStrokeData: RangeAreaStrokePathDatum;
    styles: {
        low: _ModuleSupport.SeriesNodeStyleContext<AgSeriesMarkerStyle>;
        high: _ModuleSupport.SeriesNodeStyleContext<AgSeriesMarkerStyle>;
    };
    intersectionSegments?: _ModuleSupport.Segment[];
}
export declare function prepareRangeAreaPathAnimation(newData: RangeAreaContext, oldData: RangeAreaContext, diff: _ModuleSupport.ProcessedOutputDiff | undefined): {
    status: _ModuleSupport.NodeUpdateState;
    fill: {
        status: _ModuleSupport.NodeUpdateState;
        path: {
            addPhaseFn: (ratio: number, path: _ModuleSupport.Path<any>) => void;
            updatePhaseFn: (ratio: number, path: _ModuleSupport.Path<any>) => void;
            removePhaseFn: (ratio: number, path: _ModuleSupport.Path<any>) => void;
        };
        pathProperties: _ModuleSupport.FromToFns<_ModuleSupport.Path<any>, any, unknown>;
    };
    stroke: {
        status: _ModuleSupport.NodeUpdateState;
        path: {
            addPhaseFn: (ratio: number, path: _ModuleSupport.Path<any>) => void;
            updatePhaseFn: (ratio: number, path: _ModuleSupport.Path<any>) => void;
            removePhaseFn: (ratio: number, path: _ModuleSupport.Path<any>) => void;
        };
        pathProperties: _ModuleSupport.FromToFns<_ModuleSupport.Path<any>, any, unknown>;
    };
    hasMotion: boolean;
} | undefined;
export {};
