import type { DynamicContext, NormalisedChartCaptionOptions, NormalisedTextOrSegments } from 'ag-charts-core';
import type { ChartRegistry } from '../module/moduleContext';
import { RotatableText } from '../scene/shape/text';
import type { CaptionLike } from './captionLike';
type CaptionNodeDatum = {
    visible: boolean;
    text: NormalisedTextOrSegments | undefined;
    textBaseline: string;
    x: number;
    y: number;
    rotationCenterX: number;
    rotationCenterY: number;
    rotation: number;
};
export type ChartCaptionKey = 'title' | 'subtitle' | 'footnote';
/** Build the font spec (FontOptions shape) consumed by text measurers from a caption's options. */
export declare function captionFont(opts: NormalisedChartCaptionOptions): {
    fontSize: number;
    fontStyle: import("ag-charts-types").FontStyle | undefined;
    fontWeight: import("ag-charts-types").FontWeight | undefined;
    fontFamily: string;
};
/**
 * Chart-level caption (title/subtitle/footnote). Reads its option subtree from
 * `ctx.chartState.getValue('options', key)` and applies values to its scene node
 * during layout. Mirrors the Legend/Zoom pattern.
 *
 * For axis/series titles (which use `Caption`), the BaseProperties-based
 * `Caption` class continues to be used.
 */
export declare class ChartCaption implements CaptionLike {
    private readonly ctx;
    private readonly key;
    static readonly className = "ChartCaption";
    readonly id: string;
    readonly node: RotatableText<CaptionNodeDatum>;
    get opts(): NormalisedChartCaptionOptions;
    get enabled(): boolean;
    get text(): NormalisedTextOrSegments | undefined;
    get padding(): number;
    private truncated;
    private proxyText?;
    private proxyTextListeners?;
    private lastProxyTextContent?;
    private lastProxyBBox?;
    constructor(ctx: DynamicContext<ChartRegistry>, key: ChartCaptionKey);
    /**
     * Apply the current options subtree to the scene node. Called from
     * `ChartCaptions.positionCaptions` before each layout so visible/text/font
     * properties land before render.
     */
    applyToNode(): void;
    registerInteraction(moduleCtx: DynamicContext<ChartRegistry>, where: 'beforebegin' | 'afterend'): () => void;
    computeTextWrap(containerWidth: number, containerHeight: number): void;
    private updateA11yText;
    private getEffectiveTooltipVisible;
    private getTooltipContent;
    private showTooltip;
    private handleMouseMove;
    private handleFocus;
    private handleTooltipHide;
    destroy(): void;
    private destroyProxyText;
}
export {};
