import Phaser from 'phaser';
import { TextBoxConfig } from '../types';
import { Container } from './Container';
import { BaseScene } from "../game";
import { Label } from './Label';
/**
 * A text input box component that supports text selection, cursor movement, and IME input
 */
export declare class TextBox<T extends TextBoxConfig = TextBoxConfig> extends Container<T> {
    protected _config?: T;
    label: Label;
    selection: Phaser.GameObjects.Rectangle;
    cursor: Phaser.GameObjects.Text;
    timerEvent?: Phaser.Time.TimerEvent;
    hiddenInput?: HTMLInputElement;
    private static measureCanvas;
    private static measureContext;
    private static activeTextBox;
    protected isFocus: boolean;
    protected charWidths: number[];
    protected selectionStart?: number;
    protected selectionEnd?: number;
    protected isSelecting: boolean;
    protected maxWidth: number;
    protected isComposing: boolean;
    protected compositionText: string;
    protected placeholder: string;
    protected previousValue: string;
    constructor(scene: BaseScene, config: T);
    reDraw(config?: T): void;
    private clearPreviousElements;
    private initializeState;
    private createLabel;
    private updatePlaceholder;
    private createCursor;
    private createSelection;
    private setupEventHandlers;
    private setupKeyboardEvents;
    handleKeydown(event: KeyboardEvent): void;
    handleKeyup(event: KeyboardEvent): void;
    getCursorPosition(): number;
    private updateCharWidths;
    createHiddenInput(): void;
    private setupHiddenInputStyles;
    private setupHiddenInputEvents;
    handleInput(): void;
    handleCompositionEnd(): void;
    getTextWidth(text: string): number;
    private getOrCreateMeasureContext;
    updateSelectionAfterInput(): void;
    handleOver(): void;
    handleOut(): void;
    handlePointerDown(pointer: Phaser.Input.Pointer): void;
    private deactivateTextBox;
    private resetSelection;
    handlePointerMove(pointer: Phaser.Input.Pointer): void;
    handlePointerUp(): void;
    updateCursorPosition(): void;
    private resetCursorBlink;
    updateSelection(): void;
    private updateSelectionVisuals;
    handleMoveCursor(): void;
    setDomCursorPosition(): void;
    setNativeCursorPosition(): void;
    getCharacterIndexAtPosition(x: number): number;
    getCharacterWidths(): number[];
    getCharacterXPosition(index: number): number;
    addTimerEvent(): void;
    getLabelWorldPoint(): Phaser.Math.Vector2;
    destroy(fromScene?: boolean): void;
    private removeEventListeners;
    private destroyComponents;
}
//# sourceMappingURL=TextBox.d.ts.map