import { DrawingObject, ChartPoint } from '../../types';
import { UnifiedCoordinateSystem } from '../../core/UnifiedCoordinateSystem';
export interface TextStyle {
    fontSize: number;
    fontFamily: string;
    color: string;
    bold: boolean;
    italic: boolean;
    underline: boolean;
    backgroundColor?: string;
    borderColor?: string;
    borderWidth?: number;
    padding?: number;
}
export interface TextObject extends DrawingObject {
    type: 'text';
    text: string;
    textStyle?: TextStyle;
}
export declare class TextRenderer {
    private container;
    private textElements;
    private coordSystem;
    private debugLogged;
    private onStyleEdit?;
    private isEditing;
    constructor(container: HTMLElement, coordSystem: UnifiedCoordinateSystem);
    private createTextContainer;
    /**
     * 텍스트 객체 렌더링
     */
    renderText(textObject: TextObject): void;
    /**
     * 새 텍스트 생성 및 즉시 편집 모드
     */
    createAndEditText(point: ChartPoint, style: TextStyle, onComplete: (text: string) => void): void;
    /**
     * 텍스트 요소 생성
     */
    private createTextElement;
    /**
     * 텍스트 위치 업데이트
     */
    private updateTextPosition;
    /**
     * 텍스트 스타일 업데이트
     */
    private updateTextStyle;
    /**
     * 모든 텍스트 재렌더링 (줌/패닝 시)
     */
    updateAllPositions(textObjects: TextObject[]): void;
    /**
     * 텍스트 제거
     */
    removeText(id: string): void;
    /**
     * 모든 텍스트 제거
     */
    clear(): void;
    /**
     * 텍스트 선택 상태 업데이트
     */
    updateSelection(id: string, selected: boolean): void;
    /**
     * 편집 모드 활성화
     */
    enableEdit(id: string, onComplete: (text: string) => void): void;
    /**
     * 더블클릭 핸들러
     */
    private handleDoubleClick;
    /**
     * 스타일 편집 콜백 설정
     */
    setStyleEditCallback(callback: (id: string, currentStyle: TextStyle) => void): void;
    /**
     * ID로 텍스트 객체 가져오기 (외부 관리자에서 호출)
     */
    private getTextObjectById;
    /**
     * 편집 중인지 확인
     */
    isTextEditing(): boolean;
    /**
     * 컨테이너 정리
     */
    dispose(): void;
}
