/**
 * AI 서비스 실행 내부 모듈이 함께 쓰는 공용 유틸리티 파일이다.
 * 임시 파일, 프롬프트 직렬화, subprocess 후처리 같은 반복 코드를 묶는다.
 */
import type { AIServiceType, PromptOptimizationAudit, ServiceCommandAttemptSpec, ServiceCommandOutputProtocol, ServiceCommandSpec } from '../../types/index';
export declare const ACCOUNT_DEFAULT_MODEL = "account-default";
/**
 * Service Failure Kind 관련 타입이다.
 * hover 정보만으로도 용도와 필드 의미를 파악할 수 있도록 이 선언을 유지한다.
 */
export type ServiceFailureKind = 'capacity' | 'generic';
/**
 * @description
 * `quoteArgs` 는 quote Args 처리를 담당한다.
 * 서비스별 차이와 공통 실행 규칙을 분리해 같은 인터페이스로 다루기 위해 사용한다.
 *
 * @param args 파싱된 명령 인자 목록
 * @returns quoteArgs 실행 결과
 */
export declare function quoteArgs(args: string[]): string;
/**
 * @description
 * `toUnique` 는 to Unique 처리를 담당한다.
 * 서비스별 차이와 공통 실행 규칙을 분리해 같은 인터페이스로 다루기 위해 사용한다.
 *
 * @param values values 값
 * @returns toUnique 실행 결과
 */
export declare function toUnique(values: string[]): string[];
/**
 * @description 서비스별 기본 fallback map 에 사용자 지정 모델을 합쳐 시도 순서를 만든다.
 */
export declare function buildServiceModelCandidates(service: AIServiceType, preferredModel?: string): string[];
/**
 * @description account-default 시도인지 판별한다.
 */
export declare function isAccountDefaultModel(model: string): model is "account-default";
/**
 * @description stderr/stdout 패턴 기준으로 사용량 한도 계열 실패인지 판별한다.
 */
export declare function classifyServiceFailureKind(stderr: string, stdout: string): ServiceFailureKind;
/**
 * @description 현재 attempt 진행 상태를 사용자에게 보여줄 문구를 만든다.
 */
export declare function formatServiceAttemptMessage(baseMessage: string, attempt: ServiceCommandAttemptSpec, index: number, total: number): string;
/**
 * @description 실패한 attempt 다음으로 fallback 할 때 출력할 안내 문구를 만든다.
 */
export declare function formatServiceFallbackMessage(service: AIServiceType, failedAttempt: ServiceCommandAttemptSpec, nextAttempt: ServiceCommandAttemptSpec, failureKind: ServiceFailureKind): string;
/**
 * @description
 * 서비스별 모델 후보를 순차 실행할 수 있도록 단일 명령 스펙으로 정규화합니다.
 */
export declare function createServiceCommandSpec(command: AIServiceType, attempts: Array<{
    /**
     * 파싱된 명령 인자 목록
     */
    args: string[];
    /**
     * 선택 UI에 표시할 라벨
     */
    label: string;
    /**
     * model Name 값
     */
    modelName: string;
    /**
     * stdout 출력 해석 프로토콜
     */
    outputProtocol?: ServiceCommandOutputProtocol;
    /**
     * 최종 stdout 복원용 캡처 모드
     */
    stdoutCaptureMode?: ServiceCommandAttemptSpec['stdoutCaptureMode'];
}>, promptAudit?: PromptOptimizationAudit): ServiceCommandSpec;
//# sourceMappingURL=shared.d.ts.map