import type { IAABBBounds, IOBBBounds } from '@visactor/vutils';
import type { IText, ITextCache, ITextGraphicAttribute, LayoutType } from '../interface';
import { Graphic } from './graphic';
export declare class Text extends Graphic<ITextGraphicAttribute> implements IText {
    type: 'text';
    static NOWORK_ANIMATE_ATTR: {
        strokeSeg: number;
        boundsPadding: number;
        pickMode: number;
        boundsMode: number;
        customPickShape: number;
        pickable: number;
        childrenPickable: number;
        visible: number;
        zIndex: number;
        layout: number;
        keepDirIn3d: number;
        globalZIndex: number;
        outerBorder: number;
        innerBorder: number;
        lineDash: number;
        lineCap: number;
        lineJoin: number;
        miterLimit: number;
        strokeBoundsBuffer: number;
        scaleCenter: number;
        anchor: number;
        anchor3d: number;
        postMatrix: number;
        backgroundMode: number;
        background: number;
        texture: number;
        cursor: number;
        html: number;
        ellipsis: number;
        wordBreak: number;
        direction: number;
        textAlign: number;
        textBaseline: number;
        fontFamily: number;
        fontWeight: number;
    };
    cache: ITextCache;
    _font: string;
    protected obbText?: Text;
    get font(): string;
    get clipedText(): string | undefined;
    get clipedWidth(): number | undefined;
    get cliped(): boolean | undefined;
    get multilineLayout(): LayoutType | undefined;
    get isMultiLine(): boolean;
    constructor(params?: ITextGraphicAttribute);
    isValid(): boolean;
    protected _isValid(): boolean;
    getGraphicTheme(): Required<ITextGraphicAttribute>;
    protected doUpdateOBBBounds(): IOBBBounds;
    protected updateAABBBounds(attribute: ITextGraphicAttribute, textTheme: Required<ITextGraphicAttribute>, aabbBounds: IAABBBounds): import("@visactor/vutils").IBounds;
    updateSingallineAABBBounds(text: number | string): IAABBBounds;
    protected updateMultilineAABBBounds(text: (number | string)[]): IAABBBounds;
    guessLineHeightBuf(fontSize: number): number;
    updateHorizontalMultilineAABBBounds(text: (number | string)[]): IAABBBounds;
    updateWrapAABBBounds(text: (number | string) | (number | string)[]): import("@visactor/vutils").IBounds;
    updateVerticalMultilineAABBBounds(text: (number | string)[]): IAABBBounds;
    protected getMaxWidth(theme: ITextGraphicAttribute): number;
    protected getLineHeight(attribute: ITextGraphicAttribute, textTheme: ITextGraphicAttribute, buf: number): number;
    protected needUpdateTags(keys: string[], k?: string[]): boolean;
    protected needUpdateTag(key: string, k?: string[]): boolean;
    protected _interpolate(key: string, ratio: number, lastStepVal: any, nextStepVal: any, nextAttributes: any): void;
    clone(): Text;
    getNoWorkAnimateAttr(): Record<string, number>;
    getBaselineMapAlign(): Record<string, string>;
    getAlignMapBaseline(): Record<string, string>;
    static baselineMapAlign: {
        top: string;
        bottom: string;
        middle: string;
    };
    static alignMapBaseline: {
        left: string;
        right: string;
        center: string;
    };
}
export declare function createText(attributes: ITextGraphicAttribute): IText;
