import React from 'react';
import type { ConversationStateManager } from '../../../app/utils/conversation-state.js';
import type { Task } from '../../../tools/tasks/types.js';
import type { ToolManager } from '../../../tools/tool-manager.js';
import type { TuneConfig } from '../../../types/config.js';
import type { ApiUsageSnapshot, LLMClient, Message } from '../../../types/core.js';
interface ProcessAssistantResponseParams {
    systemMessage: Message;
    messages: Message[];
    client: LLMClient;
    toolManager: ToolManager | null;
    abortController: AbortController | null;
    setAbortController: (controller: AbortController | null) => void;
    setIsGenerating: (generating: boolean) => void;
    setStreamingReasoning: (content: string) => void;
    setStreamingContent: (content: string) => void;
    setTokenCount: (count: number) => void;
    setMessages: (messages: Message[]) => void;
    addToChatQueue: (component: React.ReactNode) => void;
    currentProvider: string;
    currentModel: string;
    developmentMode: 'normal' | 'auto-accept' | 'yolo' | 'plan' | 'headless';
    developmentModeRef?: React.RefObject<'normal' | 'auto-accept' | 'yolo' | 'plan' | 'headless'>;
    nonInteractiveMode: boolean;
    conversationStateManager: React.MutableRefObject<ConversationStateManager>;
    onConversationComplete?: () => void;
    conversationStartTime?: number;
    reasoningExpandedRef?: React.RefObject<boolean>;
    compactToolDisplayRef?: React.RefObject<boolean>;
    onSetCompactToolCounts?: (counts: Record<string, number> | null) => void;
    compactToolCountsRef?: React.MutableRefObject<Record<string, number>>;
    onSetLiveTaskList?: (tasks: Task[] | null) => void;
    setLiveComponent?: (component: React.ReactNode) => void;
    setLastApiUsage?: (usage: ApiUsageSnapshot | null) => void;
    tune?: TuneConfig;
    emptyTurnCount?: number;
    malformedRetryCount?: number;
    compactRetryCount?: number;
    lastToolSignature?: string;
    repeatedToolCallCount?: number;
}
/** Reset the fallback notice flag (for testing). */
export declare const resetFallbackNotice: () => void;
/** Reset the reasoning-grouping flag (for testing). */
export declare const resetLastTurnHadReasoning: () => void;
/**
 * Main conversation loop that processes assistant responses and handles tool calls.
 * This function orchestrates the entire conversation flow including:
 * - Streaming responses from the LLM
 * - Parsing and validating tool calls
 * - Executing or requesting confirmation for tools
 * - Handling errors and self-correction
 * - Managing the conversation state
 */
export declare const processAssistantResponse: (params: ProcessAssistantResponseParams) => Promise<void>;
export {};
//# sourceMappingURL=conversation-loop.d.ts.map