import type { TextRenderer, TrProps, TextRenderInfo } from './text-rendering/TextRenderer.js';
import { CoreNode, CoreNodeRenderState, type CoreNodeProps } from './CoreNode.js';
import type { Stage } from './Stage.js';
import type { RectWithValid } from './lib/utils.js';
import type { CoreRenderer } from './renderers/CoreRenderer.js';
import type { TextureLoadedEventHandler } from './textures/Texture.js';
import { BufferCollection } from './renderers/webgl/internal/BufferCollection.js';
import type { SdfShaderProps } from './shaders/webgl/SdfShader.js';
import type { WebGlRenderer } from './renderers/webgl/WebGlRenderer.js';
export interface CoreTextNodeProps extends CoreNodeProps, TrProps {
    /**
     * Force Text Node to use a specific Text Renderer
     */
    textRendererOverride?: string | null;
    forceLoad: boolean;
}
export declare enum TextConstraint {
    'none' = 0,
    'width' = 1,
    'height' = 2,
    'both' = 3
}
export declare class CoreTextNode extends CoreNode implements CoreTextNodeProps {
    private textRenderer;
    private fontHandler;
    private _layoutGenerated;
    private _waitingForFont;
    private _containType;
    private _sdfBuffer;
    private _sdfQuadCollection;
    private _sdfShaderProps;
    textProps: CoreTextNodeProps;
    private _renderInfo;
    constructor(stage: Stage, props: CoreTextNodeProps, textRenderer: TextRenderer);
    protected onTextureLoaded: TextureLoadedEventHandler;
    /**
     * Delete the cached WebGLBuffer held by the SDF renderer ref and reset the
     * ref so the next renderQuads call allocates a fresh one.
     * Safe to call from destroy() or on text change.
     */
    private releaseSdfBuffer;
    allowTextGeneration(): boolean;
    updateLocalTransform(): void;
    /**
     * Override CoreNode's update method to handle text-specific updates
     */
    update(delta: number, parentClippingRect: RectWithValid): void;
    /**
     * Override is renderable check for SDF text nodes
     */
    updateIsRenderable(): void;
    /**
     * Handle the result of text rendering for both Canvas and SDF renderers
     */
    private handleRenderResult;
    private emitTextLoadedEvent;
    /**
     * Override renderQuads to handle SDF vs Canvas rendering
     */
    renderQuads(renderer: CoreRenderer): void;
    updateRenderState(renderState: CoreNodeRenderState): void;
    destroy(): void;
    /**
     * used in webgl SDF shader to get the quad buffer collection for rendering text quads
     */
    get quadBufferCollection(): BufferCollection;
    /**
     * used in webgl SDF shader to get the SDF shader props for rendering text quads
     */
    get sdfShaderProps(): SdfShaderProps;
    get isSdfRenderOp(): boolean;
    draw(renderer: WebGlRenderer): void;
    set w(value: number);
    get w(): number;
    set h(value: number);
    get h(): number;
    get maxWidth(): number;
    set maxWidth(value: number);
    get maxHeight(): number;
    set maxHeight(value: number);
    get contain(): TrProps['contain'];
    set contain(value: TrProps['contain']);
    get text(): string;
    set text(value: string);
    get fontSize(): number;
    set fontSize(value: number);
    get fontFamily(): string;
    set fontFamily(value: string);
    get fontStyle(): TrProps['fontStyle'];
    set fontStyle(value: TrProps['fontStyle']);
    get textAlign(): TrProps['textAlign'];
    set textAlign(value: TrProps['textAlign']);
    get letterSpacing(): number;
    set letterSpacing(value: number);
    get lineHeight(): number;
    set lineHeight(value: number);
    get maxLines(): number;
    set maxLines(value: number);
    get verticalAlign(): TrProps['verticalAlign'];
    set verticalAlign(value: TrProps['verticalAlign']);
    get overflowSuffix(): string;
    set overflowSuffix(value: string);
    get wordBreak(): TrProps['wordBreak'];
    set wordBreak(value: TrProps['wordBreak']);
    get offsetY(): number;
    set offsetY(value: number);
    get forceLoad(): boolean;
    set forceLoad(value: boolean);
    get renderInfo(): TextRenderInfo | null;
}
