import type { IAreaChartSpec, IBarChartSpec, ICartesianSeries, ILineChartSpec } from '@visactor/vchart';
import type { AdvancedVSeed, Datum, Selector, Selectors, VSeed } from '../../../../../types';
type DifferenceSelectorLabel = 'start' | 'end';
type DifferenceChartSpec = IBarChartSpec | ILineChartSpec | IAreaChartSpec;
export type DifferenceStackResolveMode = 'none' | 'stackTotal' | 'auto';
export type DifferenceAnchorMode = 'element' | 'stackTotal';
export type ResolvedDifferenceAnchor = {
    mode: DifferenceAnchorMode;
    selectorLabel: DifferenceSelectorLabel;
    coordinateDatum: Datum;
    matchedDatum?: Datum;
    stackGroupDatum?: Datum;
    bandDatum: Datum;
    bandIndex?: number;
    value: number;
};
export declare const getDifferenceLineStackResolveMode: (vseed: VSeed, advancedVSeed: AdvancedVSeed) => DifferenceStackResolveMode;
export declare const usesDifferenceLineElementStackEnd: (vseed: VSeed, advancedVSeed: AdvancedVSeed) => boolean;
export declare const resolveDifferenceAnchor: (options: {
    dataset: Datum[];
    selectorLabel: DifferenceSelectorLabel;
    selectorValue: Selector | Selectors;
    spec: DifferenceChartSpec;
    stackResolveMode: DifferenceStackResolveMode;
    allowSelectorFallback?: boolean;
}) => ResolvedDifferenceAnchor | undefined;
export declare const getStackRuntimeTotal: (runtimeMatches: Datum[]) => number | undefined;
export declare const buildDifferenceCoordinateDatum: (options: {
    anchor: ResolvedDifferenceAnchor;
    seriesData: Datum[];
    relativeSeries: ICartesianSeries;
    useElementStackEnd?: boolean;
}) => Record<string | number, any>;
export declare const getRuntimeDifferenceValue: (options: {
    anchor: ResolvedDifferenceAnchor;
    seriesData: Datum[];
    useElementStackEnd?: boolean;
}) => number;
export declare const getDifferenceValue: (startValue: number, endValue: number, differenceType?: "absolute" | "percent") => number;
export declare const buildDifferenceText: (startValue: number, endValue: number, differenceType?: "absolute" | "percent", formatter?: (value: number) => string) => string;
export declare const inferDifferenceConnectDirection: (vseed: VSeed, values: [number, number]) => "left" | "top" | "right" | "bottom";
export declare const inferDifferenceBracketDirection: (start: ResolvedDifferenceAnchor, end: ResolvedDifferenceAnchor) => "left" | "right";
export {};
