/**
 * 터미널 출력 정렬과 강조를 위한 문자열 보조 함수를 모아둔 파일이다.
 * 배너, 도움말, 상태 텍스트가 한눈에 읽히도록 포맷 규칙을 공통화한다.
 */
export declare const ANSI: {
    readonly blue: "\u001B[34m";
    readonly bold: "\u001B[1m";
    readonly cyan: "\u001B[36m";
    readonly dim: "\u001B[2m";
    readonly gray: "\u001B[90m";
    readonly green: "\u001B[32m";
    readonly red: "\u001B[31m";
    readonly reset: "\u001B[0m";
    readonly white: "\u001B[37m";
    readonly yellow: "\u001B[33m";
};
/**
 * Prompt Render Layout 관련 타입이다.
 * hover 정보만으로도 용도와 필드 의미를 파악할 수 있도록 이 선언을 유지한다.
 */
export type PromptRenderLayout = {
    /**
     * cursor Column 값
     */
    cursorColumn: number;
    /**
     * cursor Row Offset 값
     */
    cursorRowOffset: number;
    /**
     * lines 값
     */
    lines: string[];
    /**
     * total Lines 값
     */
    totalLines: number;
};
/**
 * Prompt Render State 상태 구조다.
 * hover 정보만으로도 용도와 필드 의미를 파악할 수 있도록 이 선언을 유지한다.
 */
export type PromptRenderState = {
    /** 렌더 블록 최상단에서 커서까지의 행 오프셋 */
    cursorRowOffset: number;
    /** 이전 렌더에서 출력한 전체 줄 수 */
    totalLines: number;
};
/**
 * Status Render State 상태 구조다.
 * hover 정보만으로도 용도와 필드 의미를 파악할 수 있도록 이 선언을 유지한다.
 */
export type StatusRenderState = {
    /**
     * total Lines 값
     */
    totalLines: number;
};
/**
 * @description 텍스트에 ANSI 색상을 적용한다.
 * @param text 원본 텍스트
 * @param color ANSI 색상 코드
 * @returns ANSI 색상이 적용된 문자열
 */
export declare function colorize(text: string, color: string): string;
/**
 * @description 사용자 입력과 한글/이모지 조합 문자열을 터미널 셀 기준으로 안전하게 순회하기 위해 grapheme 단위로 분리한다.
 */
export declare function segmentGraphemes(value: string): string[];
/**
 * @description ANSI 코드가 제거된 단일 grapheme 이 실제 터미널에서 차지하는 셀 폭을 계산한다.
 */
export declare function getGraphemeWidth(grapheme: string): number;
/**
 * Visible Token 관련 타입이다.
 * hover 정보만으로도 용도와 필드 의미를 파악할 수 있도록 이 선언을 유지한다.
 */
type VisibleToken = {
    /**
     * 실제 선택 결과 값
     */
    value: string;
    /**
     * visible Width 값
     */
    visibleWidth: number;
};
/**
 * @description 일반 문자열을 실제 렌더링 폭을 가진 토큰으로 변환한다.
 */
export declare function tokenizePlainText(value: string): {
    value: string;
    visibleWidth: number;
}[];
/**
 * @description 박스 렌더링 중 ANSI 코드는 유지하고, 실제 보이는 글자만 셀 폭 기준으로 계산하기 위한 토큰 목록을 만든다.
 */
export declare function tokenizeVisibleText(value: string): VisibleToken[];
/**
 * @description ANSI 포함 문자열의 실제 터미널 표시 너비를 계산한다.
 */
export declare function visibleLength(value: string): number;
/**
 * @description ANSI 스타일은 유지하면서 지정된 셀 폭만큼만 문자열을 잘라낸다.
 */
export declare function sliceVisible(value: string, width: number): string;
/**
 * @description 문자열을 지정 폭으로 패딩한다.
 */
export declare function padVisible(value: string, width: number): string;
/**
 * @description 문자열을 지정 폭으로 잘라내고, 초과 시 ... 을 붙인다.
 */
export declare function truncateValue(value: string, width: number): string;
/**
 * @description 뷰포트 너비를 반환한다 (최소 4, 최대 108).
 */
export declare function getViewportWidth(): number;
/**
 * @description 터미널 컬럼 수를 반환한다.
 */
export declare function getTerminalColumns(): number;
/**
 * @description 배지 텍스트를 색상으로 렌더링한다.
 */
export declare function renderBadge(text: string, tone: 'service' | 'accent' | 'warn' | 'muted'): string;
/**
 * @description 터미널 박스를 생성한다.
 */
export declare function createBox(title: string, lines: string[], footerLines?: string[]): string[];
/**
 * @description 전체 화면을 지우고 박스를 렌더링한다.
 */
export declare function renderScreenBox(title: string, lines: string[], footerLines?: string[]): void;
/**
 * @description 입력 버퍼를 터미널 셀 폭 기준으로 줄 단위로 감싸서 렌더링 가능한 plain text 줄 배열로 변환한다.
 */
export declare function wrapPlainText(value: string, firstLineWidth: number, continuationLineWidth: number): string[];
/**
 * @description 입력 프롬프트의 첫 줄과 이어지는 줄을 분리해, 줄바꿈이 발생해도 커서 위치를 안정적으로 계산한다.
 */
export declare function buildPromptRenderLayout(promptLabel: string, buffer: string, placeholder?: string): PromptRenderLayout;
/**
 * @description 이전 렌더 결과의 시작 위치로 복귀해 화면을 다시 그릴 준비를 한다.
 * totalLines를 활용하여, 커서 아래쪽 잔여 줄도 안전하게 지운다.
 */
export declare function clearRenderedPrompt(previousState?: PromptRenderState): void;
/**
 * @description 전체 프롬프트 블록을 다시 출력한 뒤, 실제 입력 커서가 있어야 하는 셀로 복원한다.
 */
export declare function renderPromptLayout(layout: PromptRenderLayout, previousState?: PromptRenderState): {
    cursorRowOffset: number;
    totalLines: number;
};
export {};
//# sourceMappingURL=text-utils.d.ts.map