/**
 * @license
 * Copyright 2025 Vybestack LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import { CompressionStatus, GeminiCLIExtension, ToolCallConfirmationDetails, ToolResultDisplay, type ThinkingBlock } from '@vybestack/llxprt-code-core';
export declare enum StreamingState {
    Idle = "idle",
    Responding = "responding",
    WaitingForConfirmation = "waiting_for_confirmation"
}
export declare enum GeminiEventType {
    Content = "content",
    ToolCallRequest = "tool_call_request"
}
export declare enum ToolCallStatus {
    Pending = "Pending",
    Canceled = "Canceled",
    Confirming = "Confirming",
    Executing = "Executing",
    Success = "Success",
    Error = "Error"
}
export interface ToolCallEvent {
    type: 'tool_call';
    status: ToolCallStatus;
    callId: string;
    name: string;
    args: Record<string, never>;
    resultDisplay: ToolResultDisplay | undefined;
    confirmationDetails: ToolCallConfirmationDetails | undefined;
}
export interface IndividualToolCallDisplay {
    callId: string;
    name: string;
    description: string;
    resultDisplay: ToolResultDisplay | undefined;
    status: ToolCallStatus;
    confirmationDetails: ToolCallConfirmationDetails | undefined;
    renderOutputAsMarkdown?: boolean;
    isFocused?: boolean;
    ptyId?: number;
}
export interface CompressionProps {
    isPending: boolean;
    originalTokenCount: number | null;
    newTokenCount: number | null;
    compressionStatus: CompressionStatus | null;
}
export interface HistoryItemBase {
    text?: string;
}
export type HistoryItemUser = HistoryItemBase & {
    type: 'user';
    text: string;
};
export type HistoryItemGemini = HistoryItemBase & {
    type: 'gemini';
    text: string;
    model?: string;
    profileName?: string;
    thinkingBlocks?: ThinkingBlock[];
};
export type HistoryItemGeminiContent = HistoryItemBase & {
    type: 'gemini_content';
    text: string;
    model?: string;
    profileName?: string;
    thinkingBlocks?: ThinkingBlock[];
};
export type HistoryItemOAuthURL = HistoryItemBase & {
    type: 'oauth_url';
    text: string;
    url: string;
};
export type HistoryItemInfo = HistoryItemBase & {
    type: 'info';
    text: string;
    icon?: string;
    color?: string;
};
export type HistoryItemError = HistoryItemBase & {
    type: 'error';
    text: string;
};
export type HistoryItemWarning = HistoryItemBase & {
    type: 'warning';
    text: string;
};
export type HistoryItemAbout = HistoryItemBase & {
    type: 'about';
    cliVersion: string;
    osVersion: string;
    sandboxEnv: string;
    modelVersion: string;
    gcpProject: string;
    /**
     * Path to the configured keyfile for the active provider. Empty string if none.
     */
    keyfile: string;
    /**
     * "active" when an API key is configured for the active provider, otherwise empty string.
     */
    key: string;
    ideClient: string;
    provider: string;
    baseURL: string;
};
export type HistoryItemHelp = HistoryItemBase & {
    type: 'help';
    timestamp: Date;
};
export type HistoryItemStats = HistoryItemBase & {
    type: 'stats';
    duration: string;
    quotaLines?: string[];
};
export type HistoryItemModelStats = HistoryItemBase & {
    type: 'model_stats';
};
export type HistoryItemToolStats = HistoryItemBase & {
    type: 'tool_stats';
};
export type HistoryItemCacheStats = HistoryItemBase & {
    type: 'cache_stats';
};
export type HistoryItemLBStats = HistoryItemBase & {
    type: 'lb_stats';
};
export type HistoryItemQuit = HistoryItemBase & {
    type: 'quit';
    duration: string;
};
export type HistoryItemToolGroup = HistoryItemBase & {
    type: 'tool_group';
    agentId?: string;
    tools: IndividualToolCallDisplay[];
};
export type HistoryItemUserShell = HistoryItemBase & {
    type: 'user_shell';
    text: string;
};
export type HistoryItemCompression = HistoryItemBase & {
    type: 'compression';
    compression: CompressionProps;
};
export type HistoryItemExtensionsList = HistoryItemBase & {
    type: 'extensions_list';
    extensions: GeminiCLIExtension[];
};
export type HistoryItemHooksList = HistoryItemBase & {
    type: 'hooks_list';
    hooks: Array<import('@vybestack/llxprt-code-core').HookRegistryEntry>;
};
export interface ChatDetail {
    name: string;
    mtime: string;
}
export type HistoryItemChatList = HistoryItemBase & {
    type: 'chat_list';
    chats: ChatDetail[];
};
export interface ToolDefinition {
    name: string;
    displayName: string;
    description?: string;
}
export type HistoryItemToolsList = HistoryItemBase & {
    type: 'tools_list';
    tools: ToolDefinition[];
    showDescriptions: boolean;
};
export interface McpServer {
    name: string;
    connected: boolean;
    description?: string;
    environment?: Record<string, string>;
    error?: string;
    tools: string[];
    prompts: string[];
    resources: string[];
}
export type HistoryItemMcpStatus = HistoryItemBase & {
    type: 'mcp_status';
    servers: McpServer[];
};
export type HistoryItemProfileChange = HistoryItemBase & {
    type: 'profile_change';
    profileName: string;
};
export type HistoryItemWithoutId = HistoryItemUser | HistoryItemUserShell | HistoryItemGemini | HistoryItemGeminiContent | HistoryItemInfo | HistoryItemError | HistoryItemWarning | HistoryItemAbout | HistoryItemHelp | HistoryItemToolGroup | HistoryItemStats | HistoryItemModelStats | HistoryItemToolStats | HistoryItemCacheStats | HistoryItemLBStats | HistoryItemQuit | HistoryItemCompression | HistoryItemOAuthURL | HistoryItemExtensionsList | HistoryItemHooksList | HistoryItemToolsList | HistoryItemMcpStatus | HistoryItemChatList | HistoryItemProfileChange;
export type HistoryItem = HistoryItemWithoutId & {
    id: number;
};
export declare const emptyIcon = "  ";
export declare enum MessageType {
    INFO = "info",
    ERROR = "error",
    WARNING = "warning",
    USER = "user",
    ABOUT = "about",
    HELP = "help",
    STATS = "stats",
    MODEL_STATS = "model_stats",
    TOOL_STATS = "tool_stats",
    CACHE_STATS = "cache_stats",
    LB_STATS = "lb_stats",
    QUIT = "quit",
    GEMINI = "gemini",
    COMPRESSION = "compression",
    EXTENSIONS_LIST = "extensions_list",
    CHAT_LIST = "chat_list",
    HOOKS_LIST = "hooks_list",
    PROFILE_CHANGE = "profile_change"
}
export type Message = {
    type: MessageType.INFO | MessageType.ERROR | MessageType.USER;
    content: string;
    timestamp: Date;
} | {
    type: MessageType.ABOUT;
    timestamp: Date;
    cliVersion: string;
    osVersion: string;
    sandboxEnv: string;
    modelVersion: string;
    gcpProject: string;
    keyfile: string;
    key: string;
    ideClient: string;
    provider: string;
    baseURL: string;
    content?: string;
} | {
    type: MessageType.HELP;
    timestamp: Date;
    content?: string;
} | {
    type: MessageType.STATS;
    timestamp: Date;
    duration: string;
    content?: string;
} | {
    type: MessageType.MODEL_STATS;
    timestamp: Date;
    content?: string;
} | {
    type: MessageType.TOOL_STATS;
    timestamp: Date;
    content?: string;
} | {
    type: MessageType.CACHE_STATS;
    timestamp: Date;
    content?: string;
} | {
    type: MessageType.LB_STATS;
    timestamp: Date;
    content?: string;
} | {
    type: MessageType.QUIT;
    timestamp: Date;
    duration: string;
    content?: string;
} | {
    type: MessageType.COMPRESSION;
    compression: CompressionProps;
    timestamp: Date;
};
export interface ConsoleMessageItem {
    type: 'log' | 'warn' | 'error' | 'debug' | 'info';
    content: string;
    count: number;
}
/**
 * Result type for a slash command that should immediately result in a prompt
 * being submitted to the Gemini model.
 */
export interface SubmitPromptResult {
    type: 'submit_prompt';
    content: string;
}
/**
 * Defines the result of the slash command processor for its consumer (useGeminiStream).
 */
export type SlashCommandProcessorResult = {
    type: 'schedule_tool';
    toolName: string;
    toolArgs: Record<string, unknown>;
} | {
    type: 'handled';
} | SubmitPromptResult;
export interface ConfirmationRequest {
    prompt: React.ReactNode;
    onConfirm: (confirm: boolean) => void;
}
