/**
 * AIChat.session.ts — ChatSession 类
 *
 * 包含：
 * - ChatSession 构造函数（历史/sandbox/子 session/AgentRouter 注册）
 * - send()（含子 agent 结果注入、模板展开、图片压缩/上传、历史持久化）
 * - 消息管理（addUserMessage / addAssistantMessage / clear / getHistory）
 * - 消息修剪（_evictMessages / _evictExcessImages）
 * - 工作空间管理（setWorkspace / setMountFolder）
 * - AgentRouter 集成（executeTool / unregisterAgent）
 * - restartAgent（配置文件加载 + 状态重置）
 *
 * 该文件导出 `ChatSession` 类，并在模块求值时将其挂载到 AIChat.prototype.createSession。
 */
import AIChat, { type ChatMessage } from './AIChat.core';
import { type ChildSessionHost } from './ChildSessionMixin';
import SandboxToolEnv from './SandboxToolEnv';
/** ChatSession 构造选项 */
export interface ChatSessionOptions {
    chatId?: string;
    modId?: string;
    persistedId?: string;
    skipHistory?: boolean;
    model?: string;
    apiCacheKey?: string | null;
    historyLength?: number;
    systemPrompt?: string;
    system_prompt?: string;
    workspace?: string | null;
    mountFolder?: unknown;
    enabledCategories?: string[];
    toolProxy?: unknown;
    name?: string;
    parentSession?: unknown;
    onChildStream?: ((event: unknown) => void) | null;
    backgroundAgent?: boolean;
    _depth?: number;
    _maxDepth?: number;
    [key: string]: unknown;
}
/** 默认设置（restartAgent 回退用） */
interface DefaultSettings {
    model: string;
    historyLength: number;
    workspace: string | null;
    mountFolder: unknown;
    systemPrompt: string | null;
    enabledCategories: string[];
}
/**
 * ChatSession — 单个 AI 对话会话。
 *
 * 管理：
 * - 对话消息历史（messages 数组）
 * - 工具执行 sandbox（SandboxToolEnv）
 * - 子 agent 任务队列（via ChildSessionMixin）
 * - 历史持久化（upsertChatHistory / updateChatHistory）
 * - AgentRouter 注册（命名顶层 session 自动注册）
 * - agent 重启（restartAgent + AgentConfig 配置文件加载）
 */
declare class ChatSession implements ChildSessionHost {
    aiChat: any;
    messages: any[];
    chatId: string;
    modId: string | null;
    skipHistory: boolean;
    historyId?: string;
    historyRows: unknown[] | null;
    model: string;
    apiCacheKey: string | null;
    historyLength: number;
    options: ChatSessionOptions;
    sandbox: SandboxToolEnv;
    _workspaceExplicitlySet: boolean;
    workspace: string | null;
    mountFolder: unknown;
    _pendingContexts: string[];
    _restartedWithPromptFile: boolean;
    _savedMessages?: ChatMessage[] | null;
    _restartSignal?: unknown;
    _registeredAsAgent: boolean;
    _defaultSettings: DefaultSettings;
    name: string | null;
    parentSession: ChildSessionHost | null;
    _childSessions: Record<string, import('./ChildSessionMixin').ChildSessionEntry>;
    _pendingChildResults: import('./ChildSessionMixin').PendingChildResult[];
    _debounceTimers: ReturnType<typeof setTimeout>[];
    _isSending: boolean;
    _lastSendOptions: Record<string, unknown>;
    _maxChildSessions: number;
    _depth: number;
    _maxDepth: number;
    onChildStream: ((event: import('./ChildSessionMixin').ChildStreamEvent) => void) | null;
    constructor(aiChat: AIChat, options?: ChatSessionOptions);
    /** sdk 访问器（指向 aiChat.sdk） */
    get sdk(): unknown;
    /**
     * 入队后台上下文（将在下一次 send() 时注入到用户消息前）。
     * 多次调用会累积；下次 send() 时统一冲刷。
     * @param text - 要注入的上下文文本
     */
    sendContext(text: string): void;
    /**
     * 取消注册 AgentRouter 中的 agent 名称。
     * 当此 session 不再处理该 agent 任务时调用。
     */
    unregisterAgent(): void;
    /**
     * 直接通过 sandbox 执行工具（AgentRouter.toolCallOnly 路径使用）。
     */
    executeTool(fnName: string, fnArgs: unknown): Promise<unknown>;
    /**
     * 设置文件操作工作空间。
     * 同步更新 `this.workspace` 和 `this.sandbox.workspace`。
     * @param wsName - 工作空间名，null/'' 表示清除
     */
    setWorkspace(wsName: string | null): void;
    /**
     * 设置只读回退层的 mountFolder 配置。
     * @param mountFolderConfig - 挂载文件夹路径/对象，或 null 清除
     */
    setMountFolder(mountFolderConfig: unknown): void;
    /** 设置 API 缓存 Key（传递给 aiGenerators.chat）。 */
    setAPICacheKey(key: string): void;
    /**
     * 向会话历史追加用户消息（自动冲刷 _pendingContexts 并注入到消息前）。
     * @param content - 消息内容（字符串或多模态数组）
     */
    addUserMessage(content: unknown): ChatMessage;
    /**
     * 冲刷并返回所有待注入的上下文（包裹在 context_begin…context_end 块中）。
     * 若无待处理上下文则返回空字符串。
     * @private
     */
    _flushPendingContexts(): string;
    /**
     * 向会话历史追加助手消息。
     * @param content    - 助手文本内容
     * @param gptChatId  - 可选的 GPT Chat ID（用于历史关联）
     */
    addAssistantMessage(content: string | null | unknown, gptChatId?: string): void;
    /**
     * 发送消息并更新会话历史（主发送入口）。
     *
     * 处理流程：
     * 1. 取消 debounce 定时器
     * 2. 若 runCode=true，通过 sandbox.processTemplate 展开 ${...} 表达式
     * 3. 注入待处理的子 agent 结果（tool call 形式）
     * 4. 冲刷 _pendingContexts
     * 5. 压缩 / 上传内联 base64 图片
     * 6. 添加用户消息，修剪历史
     * 7. 调用 aiChat.chat()
     * 8. 追加助手消息，持久化历史
     *
     * @param userMessage - 用户消息（字符串、多模态数组，或 null 仅消费子 agent 结果）
     * @param options     - 发送选项（model / tools / enableTools / 流式回调等）
     */
    send(userMessage: unknown, options?: any): Promise<unknown>;
    /**
     * 将多模态 content 数组中的内联 base64 图片上传到临时 CDN，
     * 并将 data-URI 替换为远程 URL。
     * @private
     */
    _uploadInlineImages(contentArray: import('../utils/ImageUtils').ContentItem[]): Promise<import('../utils/ImageUtils').ContentItem[]>;
    /**
     * 按 historyLength 修剪旧消息轮次。
     * 保留所有前置 system 消息 + 最后 `historyLength` 轮对话。
     * @private
     */
    _evictMessages(): void;
    /**
     * 从历史中移除超出 maxCount 限制的旧图片，
     * 将被移除的 image_url 替换为 `(user_image)` 文本占位符。
     * @private
     */
    _evictExcessImages(maxCount: number): void;
    /** 清空对话历史（仅清空 messages 数组）。 */
    clear(): void;
    /** 获取当前对话历史的副本。 */
    getHistory(): ChatMessage[];
    /**
     * 重启 agent 会话（可选加载配置文件）。
     *
     * 行为：
     * - 无 promptFile：恢复所有设置到构造时的默认值
     * - 纯 Markdown（只有 system_prompt）：仅更换系统提示，其他设置保持默认
     * - 完整配置：临时覆盖设置；下次无 promptFile 的重启会恢复全部默认值
     *
     * @param promptFile - 配置文件 URL 或路径（.json / .yml / .yaml / .md）
     * @param tools      - 可选工具分类覆盖（空表示继承默认值）
     * @param _options   - 高级选项（预留）
     * @returns `{ configSource }`
     */
    restartAgent(promptFile?: string, tools?: string[], _options?: unknown): Promise<{
        configSource: string;
    }>;
    _triggerImmediateCallback(): Promise<void>;
}
/**
 * 安装 ChatSession 相关的全部 prototype 注册：
 * 1. 将 childSessionMethods 混入 ChatSession.prototype
 * 2. 覆盖 ChatSession.prototype._triggerImmediateCallback
 * 3. 将 AIChat.prototype.createSession 指向 ChatSession 工厂
 *
 * 注意：必须用「导出函数 + 在聚合入口实际调用」的方式注册，而非模块顶层裸语句
 * （如 `Object.assign(ChatSession.prototype, ...)` / `AIChat.prototype.createSession = ...`）。
 * 后者是对「跨模块导入/被聚合 re-export 的类」的无返回值顶层副作用语句，Rollup
 * tree-shaking 会因其无外部可观测副作用而删除，导致 createSession 退回 AIChat.core.ts
 * 的抛错占位符（createSession not yet initialized）、子 agent 方法缺失。
 * 把它们集中到本函数并由 AIChat.ts 引用调用，可被 Rollup 当作有副作用的调用保留。
 */
export declare function installAIChatSessionFactory(): void;
export { ChatSession };
export default ChatSession;
//# sourceMappingURL=AIChat.session.d.ts.map