import type { AgentChatMessage } from "../../services/agentService";
import type { AiProfile } from "../../services/aiService";
import { calculateTotalTokens } from "../agentMessageGrouping";
import type { AgentSessionState } from "./types";
export interface AgentSessionPendingApproval {
    messageId: string;
    dbMessageId?: string;
    toolCallId: string;
    summary: string;
    riskLevel?: "low" | "medium" | "high";
    functionName: string;
}
export interface AgentSessionMessageStats {
    assistantMessageCount: number;
    assistantGroupCount: number;
    assistantGroupsWithRenderableToolCalls: number;
    messagesWithToolCallsCount: number;
    totalToolCallCount: number;
    incompleteToolCallCount: number;
}
export interface AgentSessionSummaryAssistantGroup {
    messages: AgentChatMessage[];
    isLastGroup: boolean;
}
export type AgentSessionTotalTokens = ReturnType<typeof calculateTotalTokens>;
export interface AgentSessionEffectiveModelInput {
    activeProfile?: Pick<AiProfile, "models" | "defaultModelId">;
    selectedModelId?: string;
}
export interface AgentSessionWatchdogInput {
    isExecuting: boolean;
    isAgentThinking: boolean;
    isSubmitting: boolean;
    isConnecting: boolean;
    isWaitingForResponse: boolean;
    hasActiveStreaming: boolean;
    isStopGuardActive: boolean;
}
export interface AgentSessionThinkingDotsInput {
    activeInlineDialog: unknown;
    allPendingApprovalsCount: number;
    isAgentThinking: boolean;
    isConnecting: boolean;
    isExecuting: boolean;
    isStreamPaused?: boolean;
    isSubmitting: boolean;
    isWaitingForResponse: boolean;
    messages: AgentChatMessage[];
    sessionCostLimitExceeded: unknown;
    showInitialThinkingSplash: boolean;
}
export declare function selectReadOnly(state: AgentSessionState): boolean;
export declare function selectAgentCostLimit(state: AgentSessionState): number | undefined;
export declare function selectEffectiveModelName(state: AgentSessionState, input?: AgentSessionEffectiveModelInput): string | undefined;
export declare function selectIsWatchdogActive(input: AgentSessionWatchdogInput): boolean;
export declare function selectShouldShowThinkingDots(input: AgentSessionThinkingDotsInput): boolean;
export declare function selectHasSpawnedAgents(state: AgentSessionState): boolean;
export declare function selectHasTodoContent(state: AgentSessionState): boolean;
export declare function selectIsExecuting(state: AgentSessionState): boolean;
export declare function selectPendingApprovals(state: AgentSessionState): AgentSessionPendingApproval[];
export declare function selectTotalTokens(state: AgentSessionState): AgentSessionTotalTokens;
export declare function selectTotalTokensFromMessages(messages: AgentChatMessage[], fallbackImageCost?: number): AgentSessionTotalTokens;
export declare function selectMessageStats(state: AgentSessionState): AgentSessionMessageStats;
export declare function selectMessageStatsFromMessages(messages: AgentChatMessage[]): AgentSessionMessageStats;
export declare function selectLatestSummaryAssistantGroup(messages: AgentChatMessage[], hideSummaryMessages: boolean): AgentSessionSummaryAssistantGroup | null;
export declare function selectPendingApprovalsFromMessages(messages: AgentChatMessage[]): AgentSessionPendingApproval[];
