/**
 * 터미널 입력과 선택 UI에서 사용하는 공통 타입을 정의한다.
 * 자동완성 항목, 선택 옵션, 세션 프롬프트 상태 표시 계약을 이 파일에서 관리한다.
 */
import type { AIServiceType } from './app';
/**
 * 키보드 선택 UI에 표시할 단일 옵션 구조다.
 * `label` 은 화면 표시용, `value` 는 선택 결과, `description` 은 보조 설명으로 사용한다.
 */
export type SelectOption<T> = {
    /**
     * 옵션 옆에 보조 설명으로 보여줄 짧은 문자열이다.
     */
    description?: string;
    /**
     * 사용자가 화면에서 보는 메인 라벨이다.
     */
    label: string;
    /**
     * 사용자가 선택했을 때 실제로 반환할 값이다.
     */
    value: T;
};
/**
 * 입력창 자동완성과 도움말에 노출할 slash command 메타데이터다.
 * builtin 명령은 최종적으로 이 구조로 변환되어 prompt UI에 전달된다.
 */
export type SlashCommandOption = {
    /**
     * 자동완성 목록에 표시할 slash command 문자열이다.
     */
    command: string;
    /**
     * command 목적을 설명하는 짧은 문구다.
     */
    description: string;
    /**
     * 자동완성 선택 시 입력창에 실제로 채워 넣을 문자열이다.
     * 없으면 `command` 값을 그대로 사용한다.
     */
    insertValue?: string;
    /**
     * 자동완성 검색 시 함께 매칭할 추가 키워드 목록이다.
     */
    matchKeywords?: string[];
};
/**
 * 세션 입력 프롬프트를 띄울 때 필요한 옵션 묶음이다.
 * 현재 서비스, 명령 카탈로그, 최근 입력 이력을 함께 전달해 prompt UI를 구성한다.
 */
export type SessionPromptOptions = {
    /**
     * 현재 세션에서 자동완성에 노출할 slash command 목록이다.
     */
    commands: SlashCommandOption[];
    /**
     * 입력창 위아래 탐색에 사용할 최근 사용자 입력 이력이다.
     */
    history: string[];
    /**
     * 현재 세션에서 선택된 AI 서비스다.
     */
    service: AIServiceType;
    /**
     * 테스트 모드 배너와 입력 처리 규칙을 적용할지 여부다.
     */
    testMode?: boolean;
    /**
     * trace 모드 UI 힌트를 함께 보여줄지 여부다.
     */
    traceMode?: boolean;
};
/**
 * action 실행 중 단계 메시지를 출력하는 상태 핸들 계약이다.
 * 각 action은 이 인터페이스만 알면 진행 상태 출력 방식에 의존하지 않고 동작할 수 있다.
 */
export type SessionActionStatus = {
    /**
     * 현재 action을 실패 상태로 마무리하면서 사용자 메시지를 출력한다.
     * @param message 사용자에게 바로 보여줄 실패 메시지
     * @returns 반환값 없음
     */
    fail(message: string): void;
    /**
     * 현재 진행 중인 단계를 사용자에게 갱신해 보여준다.
     * @param message 단계 설명 문자열
     * @returns 반환값 없음
     */
    step(message: string): void;
    /**
     * 비동기 작업을 단계 메시지와 함께 실행하고 완료 값을 그대로 반환한다.
     * @param message 실행 중 표시할 단계 설명 문자열
     * @param task 실제로 수행할 비동기 작업
     * @returns `task` 가 반환한 비동기 결과
     */
    track<T>(message: string, task: () => Promise<T>): Promise<T>;
};
//# sourceMappingURL=ui.d.ts.map