import { ProviderName } from '../types';
import { ProviderRateLimiter } from './provider-rate-limiter';
export declare class RateLimitDetectedError extends Error {
    readonly provider: ProviderName;
    readonly originalError: string;
    constructor(provider: ProviderName, originalError: string);
}
export interface MonitoredProcessResult {
    stdout: string;
    stderr: string;
    exitCode: number | null;
    rateLimitDetected: boolean;
    terminatedEarly: boolean;
}
export declare class RateLimitMonitor {
    private readonly rateLimiter;
    constructor(rateLimiter: ProviderRateLimiter);
    spawnWithMonitoring(command: string, args: string[], provider: ProviderName, options?: {
        signal?: AbortSignal;
        stdinContent?: string;
        enableStreaming?: boolean;
    }): Promise<MonitoredProcessResult>;
    executeGeminiWithFallback(args: string[], options?: {
        signal?: AbortSignal;
        stdinContent?: string;
        enableStreaming?: boolean;
    }): Promise<MonitoredProcessResult>;
    executeClaudeWithMonitoring(args: string[], options?: {
        signal?: AbortSignal;
        stdinContent?: string;
        enableStreaming?: boolean;
    }): Promise<MonitoredProcessResult>;
    private handleStreamingOutput;
}
