import type { NonInteractiveModeState } from '../app/types.js';
import type { DevelopmentMode, LLMClient } from '../types/index.js';
interface UseNonInteractiveModeProps {
    nonInteractivePrompt?: string;
    nonInteractiveMode: boolean;
    mcpInitialized: boolean;
    client: LLMClient | null;
    appState: NonInteractiveModeState;
    setDevelopmentMode: (mode: DevelopmentMode) => void;
    handleMessageSubmit: (message: string) => Promise<void>;
    /**
     * Development mode to run under. Defaults to 'auto-accept' (the
     * historical behavior for `run`). Set to anything else via `--mode`.
     */
    developmentMode?: DevelopmentMode;
}
export interface NonInteractiveModeResult {
    nonInteractiveSubmitted: boolean;
    nonInteractiveLoadingMessage: string | null;
}
/**
 * Calculates the effective timeout based on provider configuration.
 *
 * @param client - The LLM client which may have provider-level timeouts
 * @returns Final timeout in milliseconds
 */
export declare function calculateEffectiveTimeout(client: LLMClient | null): number;
/**
 * Handles non-interactive mode logic:
 * - Automatically submits prompt when ready
 * - Sets auto-accept mode
 * - Monitors completion and exits when done
 */
export declare function useNonInteractiveMode({ nonInteractivePrompt, mcpInitialized, client, appState, setDevelopmentMode, handleMessageSubmit, developmentMode, }: UseNonInteractiveModeProps): NonInteractiveModeResult;
export {};
//# sourceMappingURL=useNonInteractiveMode.d.ts.map