/**
 * AI 서비스 호출 1회를 수행하고 결과를 수집하는 파일이다.
 * 재시도 루프에서 공통으로 필요한 stdout/stderr 처리와 실패 분류를 담당한다.
 */
import type { FailedServiceAttempt, ServiceCommandExecutionResult } from './types';
import type { AIServiceType, ServiceCommandAttemptSpec, TraceLogger } from '../../types/index';
type StreamOutputOptions = {
    /**
     * 외부에서 현재 AI 작업을 ESC와 동일하게 취소하기 위한 AbortSignal이다.
     */
    abortSignal?: AbortSignal;
    /**
     * process.stdin 의 raw-mode/keypress 제어 여부다.
     * REPL과 동시에 stdin을 쓰는 백그라운드 호출에서는 false로 둬야 REPL이 망가지지 않는다. (기본 true)
     */
    manageStdin?: boolean;
    /**
     * 구조화 또는 plain-text stdout/stderr를 실시간 처리할지 여부다.
     */
    enabled: boolean;
    /**
     * 실시간 출력 조각을 터미널 대신 외부 소비자에게 전달할 때 사용하는 콜백이다.
     */
    onChunk?: (chunk: string, stream: 'stdout' | 'stderr') => void;
    /**
     * 실시간 출력 조각을 실제 터미널에도 그대로 쓸지 여부다.
     */
    writeToTerminal?: boolean;
};
/**
 * @description
 * `executeServiceCommandAttempt` 는 service Command Attempt를 실행한다.
 * 서비스별 차이와 공통 실행 규칙을 분리해 같은 인터페이스로 다루기 위해 사용한다.
 *
 * @param command command 값
 * @param attempt 파싱된 명령 인자 목록과 출력 프로토콜
 * @param trace 실행 흐름 추적 로거
 * @param streamOutput stream Output 값
 * @returns executeServiceCommandAttempt 비동기 처리 결과
 */
export declare function executeServiceCommandAttempt(command: string, attempt: ServiceCommandAttemptSpec, trace: TraceLogger, streamOutputOptions?: boolean | StreamOutputOptions): Promise<ServiceCommandExecutionResult>;
/**
 * @description
 * 모든 모델 후보가 실패한 경우 시도 순서와 실패 요약을 한 번에 묶어 에러로 반환합니다.
 */
export declare function createAttemptFailureError(service: AIServiceType, failures: FailedServiceAttempt[]): Error;
export {};
//# sourceMappingURL=execute-attempt.d.ts.map