/**
 * @license
 * Copyright 2025 Vybestack LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import { Config, GeminiClient, EditorType, ThoughtSummary, type RecordingIntegration } from '@vybestack/llxprt-code-core';
import { type PartListUnion } from '@google/genai';
import { LoadedSettings } from '../../config/settings.js';
import { StreamingState, HistoryItem, HistoryItemWithoutId, SlashCommandProcessorResult } from '../types.js';
import { UseHistoryManagerReturn } from './useHistoryManager.js';
export declare function mergePartListUnions(list: PartListUnion[]): PartListUnion;
export declare function mergePendingToolGroupsForDisplay(pendingHistoryItem: HistoryItemWithoutId | null | undefined, pendingToolCallGroupDisplay: HistoryItemWithoutId | null | undefined): HistoryItemWithoutId[];
/**
 * Manages the Gemini stream, including user input, command processing,
 * API interaction, and tool call lifecycle.
 */
/**
 * @plan:PLAN-20260211-SESSIONRECORDING.P26
 * @pseudocode recording-integration.md lines 100-108
 */
export declare const useGeminiStream: (geminiClient: GeminiClient, history: HistoryItem[], addItem: UseHistoryManagerReturn["addItem"], config: Config, settings: LoadedSettings, onDebugMessage: (message: string) => void, handleSlashCommand: (cmd: PartListUnion) => Promise<SlashCommandProcessorResult | false>, shellModeActive: boolean, getPreferredEditor: () => EditorType | undefined, onAuthError: () => void, performMemoryRefresh: () => Promise<void>, onEditorClose: () => void, onCancelSubmit: (shouldRestorePrompt?: boolean) => void, setShellInputFocused: (value: boolean) => void, terminalWidth?: number, terminalHeight?: number, onTodoPause?: () => void, onEditorOpen?: () => void, recordingIntegration?: RecordingIntegration) => {
    streamingState: StreamingState;
    submitQuery: (query: PartListUnion, options?: {
        isContinuation: boolean;
    }, prompt_id?: string) => Promise<void>;
    initError: string | null;
    pendingHistoryItems: HistoryItemWithoutId[];
    thought: ThoughtSummary | null;
    cancelOngoingRequest: () => void;
    activeShellPtyId: number | null;
    lastOutputTime: number;
};
