import type { ReadonlySignal } from '@preact/signals-core';
import { Matrix4 } from 'three';
import { ClippingRect } from '../../clipping.js';
import { alignmentXMap, alignmentYMap } from '../../utils.js';
import { InstancedGlyphGroup } from './instanced-glyph-group.js';
import type { PositionedGlyphLayout } from '../layout/index.js';
import type { BaseOutProperties, Properties } from '../../properties/index.js';
import type { Font } from '../font.js';
import type { OrderInfo } from '../../order.js';
import type { RootContext } from '../../context.js';
export type TextAlignProperties = {
    textAlign?: keyof typeof alignmentXMap | 'justify';
};
export declare const additionalTextDefaults: {
    verticalAlign: keyof typeof alignmentYMap;
};
export type AdditionalTextDefaults = typeof additionalTextDefaults;
type InstancedTextProperties = AdditionalTextDefaults & BaseOutProperties;
export type InstancedTextTarget<OutProperties extends InstancedTextProperties = InstancedTextProperties> = {
    root: ReadonlySignal<RootContext>;
    fontSignal: ReadonlySignal<Font | undefined>;
    orderInfo: ReadonlySignal<OrderInfo | undefined>;
    properties: Properties<OutProperties>;
    globalTextMatrix: ReadonlySignal<Matrix4 | undefined>;
    isVisible: ReadonlySignal<boolean>;
    abortSignal: AbortSignal;
};
export declare function createInstancedText<OutProperties extends InstancedTextProperties>(text: InstancedTextTarget<OutProperties>, parentClippingRect: ReadonlySignal<ClippingRect | undefined> | undefined, layoutSignal: ReadonlySignal<PositionedGlyphLayout | undefined>): void;
export declare class InstancedText {
    private group;
    private properties;
    private layoutSignal;
    private matrix;
    private parentClippingRect;
    private glyphLines;
    private unsubscribeInitialList;
    private unsubscribeShowList;
    constructor(group: InstancedGlyphGroup, properties: Properties<InstancedTextProperties>, layoutSignal: ReadonlySignal<PositionedGlyphLayout | undefined>, matrix: ReadonlySignal<Matrix4 | undefined>, isVisible: ReadonlySignal<boolean>, parentClippingRect: ReadonlySignal<ClippingRect | undefined> | undefined);
    private show;
    private hide;
    destroy(): void;
}
export {};
