import { type FontOptions } from 'ag-charts-core';
import type { FontStyle, FontWeight, Opacity, Padding, PixelSize, TextOrSegments } from 'ag-charts-types';
import { BBox } from '../bbox';
import type { IScene, NodeOptions, RenderContext } from '../node';
import { Shape, type ShapeColor } from './shape';
export interface TextSizeProperties extends FontOptions {
    lineHeight?: number;
    textAlign?: CanvasTextAlign;
    textBaseline?: CanvasTextBaseline;
}
export interface TextBoxingProperties {
    cornerRadius?: PixelSize;
    padding?: Padding;
    fill?: ShapeColor;
    fillOpacity?: Opacity;
    border?: {
        enabled?: boolean;
        stroke?: ShapeColor;
        strokeWidth?: PixelSize;
        strokeOpacity?: Opacity;
    };
}
export declare class Text<D = any> extends Shape<D> {
    static readonly className = "Text";
    private static readonly debug;
    private static readonly defaultFontSize;
    private richText?;
    private textMap?;
    x: number;
    y: number;
    private lines;
    private onTextChange;
    text?: TextOrSegments;
    fontCache?: string;
    get font(): string;
    fontStyle?: FontStyle;
    fontWeight?: FontWeight;
    fontSize: number;
    fontFamily?: string;
    textAlign: CanvasTextAlign;
    textBaseline: CanvasTextBaseline;
    lineHeight?: number;
    private boxing?;
    private boxPadding;
    private readonly trimText;
    constructor(options?: NodeOptions & {
        trimText?: boolean;
    });
    static measureBBox(text: TextOrSegments, x: number, y: number, options: {
        font: FontOptions;
        lineHeight?: number;
        textAlign?: CanvasTextAlign;
        textBaseline?: CanvasTextBaseline;
    }): BBox;
    private static computeBBox;
    private static calcTopOffset;
    private static calcSegmentedTopOffset;
    private static calcLeftOffset;
    getBBox(): BBox;
    protected computeBBox(): BBox;
    getTextMeasureBBox(): BBox;
    getPlainText(): string;
    isPointInPath(x: number, y: number): boolean;
    setScene(scene?: IScene): void;
    private generateTextMap;
    render(renderCtx: RenderContext): void;
    markDirty(property?: string): void;
    private renderText;
    private renderBoxing;
    protected executeFill(ctx: CanvasRenderingContext2D): void;
    protected executeStroke(ctx: CanvasRenderingContext2D): void;
    private renderLines;
    setFont(props: FontOptions): void;
    setAlign(props: {
        textAlign: CanvasTextAlign;
        textBaseline: CanvasTextBaseline;
    }): void;
    setBoxing(props: TextBoxingProperties): void;
    getBoxingProperties(): TextBoxingProperties;
    toSVG(): {
        elements: SVGElement[];
        defs?: SVGElement[];
    } | undefined;
    private hasRenderableText;
}
declare const RotatableText_base: new (...args: any[]) => import("../transformable").RotatableType<Text<any>>;
export declare class RotatableText extends RotatableText_base {
}
declare const TransformableText_base: new (...args: any[]) => import("../transformable").RotatableType<import("../transformable").TranslatableType<Text<any>>>;
export declare class TransformableText extends TransformableText_base {
}
export {};
