import type { TextRenderer, TextRendererMap, TrProps, TextRendererState } from './text-rendering/renderers/TextRenderer.js';
import { LngNode, type LngNodeWritableProps } from './LngNode.js';
import type { Stage } from './Stage.js';
import type { CoreRenderer } from './renderers/CoreRenderer.js';
import type { RectWithValid } from './lib/utils.js';
export interface TextNodeWritableProps extends LngNodeWritableProps, TrProps {
    /**
     * Force Text Node to use a specific Text Renderer
     *
     * @remarks
     * By default, Text Nodes resolve the Text Renderer to use based on the font
     * that is matched using the font family and other font selection properties.
     *
     * If two fonts supported by two separate Text Renderers are matched setting
     * this override forces the Text Node to resolve to the Text Renderer defined
     * here.
     *
     * @default null
     */
    textRendererOverride: keyof TextRendererMap | null;
}
/**
 * An LngNode in the Renderer scene graph that renders text.
 *
 * @remarks
 * A Text Node is the second graphical building block of the Renderer scene
 * graph. It renders text using a specific text renderer that is automatically
 * chosen based on the font requested and what type of fonts are installed
 * into an app.
 *
 * The text renderer can be overridden by setting the `textRendererOverride`
 *
 * The `texture` and `shader` properties are managed by loaded text renderer and
 * should not be set directly.
 *
 * For non-text rendering, see {@link LngNode}.
 */
export declare class TextNode extends LngNode implements TextNodeWritableProps {
    textRenderer: TextRenderer;
    trState: TextRendererState;
    private _textRendererOverride;
    constructor(stage: Stage, props: TextNodeWritableProps);
    private onTextLoaded;
    private onTextFailed;
    get width(): number;
    set width(value: number);
    get height(): number;
    set height(value: number);
    get color(): number;
    set color(value: number);
    get text(): string;
    set text(value: string);
    get textRendererOverride(): TextNodeWritableProps['textRendererOverride'];
    set textRendererOverride(value: TextNodeWritableProps['textRendererOverride']);
    get fontSize(): TextNodeWritableProps['fontSize'];
    set fontSize(value: TextNodeWritableProps['fontSize']);
    get fontFamily(): TextNodeWritableProps['fontFamily'];
    set fontFamily(value: TextNodeWritableProps['fontFamily']);
    get fontStretch(): TextNodeWritableProps['fontStretch'];
    set fontStretch(value: TextNodeWritableProps['fontStretch']);
    get fontStyle(): TextNodeWritableProps['fontStyle'];
    set fontStyle(value: TextNodeWritableProps['fontStyle']);
    get fontWeight(): TextNodeWritableProps['fontWeight'];
    set fontWeight(value: TextNodeWritableProps['fontWeight']);
    get textAlign(): TextNodeWritableProps['textAlign'];
    set textAlign(value: TextNodeWritableProps['textAlign']);
    get contain(): TextNodeWritableProps['contain'];
    set contain(value: TextNodeWritableProps['contain']);
    get scrollable(): TextNodeWritableProps['scrollable'];
    set scrollable(value: TextNodeWritableProps['scrollable']);
    get scrollY(): TextNodeWritableProps['scrollY'];
    set scrollY(value: TextNodeWritableProps['scrollY']);
    get offsetY(): TextNodeWritableProps['offsetY'];
    set offsetY(value: TextNodeWritableProps['offsetY']);
    get letterSpacing(): TextNodeWritableProps['letterSpacing'];
    set letterSpacing(value: TextNodeWritableProps['letterSpacing']);
    get lineHeight(): TextNodeWritableProps['lineHeight'];
    set lineHeight(value: TextNodeWritableProps['lineHeight']);
    get maxLines(): TextNodeWritableProps['maxLines'];
    set maxLines(value: TextNodeWritableProps['maxLines']);
    get textBaseline(): TextNodeWritableProps['textBaseline'];
    set textBaseline(value: TextNodeWritableProps['textBaseline']);
    get verticalAlign(): TextNodeWritableProps['verticalAlign'];
    set verticalAlign(value: TextNodeWritableProps['verticalAlign']);
    get overflowSuffix(): TextNodeWritableProps['overflowSuffix'];
    set overflowSuffix(value: TextNodeWritableProps['overflowSuffix']);
    get debug(): TextNodeWritableProps['debug'];
    set debug(value: TextNodeWritableProps['debug']);
    update(delta: number, parentClippingRect: RectWithValid): void;
    checkRenderProps(): boolean;
    onChangeIsRenderable(isRenderable: boolean): void;
    renderQuads(renderer: CoreRenderer): void;
    /**
     * Destroy the node and cleanup all resources
     */
    destroy(): void;
    /**
     * Resolve a text renderer and a new state based on the current text renderer props provided
     * @param props
     * @returns
     */
    private resolveTextRendererAndState;
}
