import { LangGraphClient, LangGraphClientConfig } from "./LangGraphClient.js";
import type { Thread } from "@langchain/langgraph-sdk";
export interface SessionInfo {
    /** 会话唯一标识，同时也是 threadId */
    sessionId: string;
    /** LangGraphClient 实例（懒加载） */
    client?: LangGraphClient;
    /** Thread 信息（懒加载，第一条消息后才创建） */
    thread?: Thread<any>;
    /** Agent 名称 */
    agentName: string;
    /** 会话元数据 */
    metadata?: Record<string, any>;
}
export interface CreateSessionOptions {
    /** 会话 ID / Thread ID，不提供则自动生成 */
    sessionId?: string;
    /** Agent 名称 */
    agentName?: string;
    /** 是否从已有 Thread 恢复会话 */
    restore?: boolean;
    /** Graph ID */
    graphId?: string;
    /** 会话元数据 */
    metadata?: Record<string, any>;
}
/**
 * @zh History 类用于管理多个 LangGraphClient 实例，支持多会话场景
 * @en History class manages multiple LangGraphClient instances for multi-session scenarios
 */
export declare class History {
    /** 存储所有会话的 Map */
    private sessions;
    /** 当前活跃的会话 ID */
    private activeSessionId;
    /** 客户端配置，用于创建新的 LangGraphClient 实例 */
    private clientConfig;
    /** 虚拟 Client，用于查询操作（不绑定特定 Thread） */
    private virtualClient;
    constructor(clientConfig: LangGraphClientConfig);
    /**
     * @zh 创建新会话（延迟创建 Thread，直到发送第一条消息）
     * @en Creates a new session (lazy Thread creation until first message)
     */
    createSession(options?: CreateSessionOptions): Promise<SessionInfo>;
    /**
     * @zh 激活指定会话（懒加载创建 Client）
     * @en Activates the specified session (lazy load client)
     */
    activateSession(sessionId: string, mustResetStream?: boolean): Promise<SessionInfo>;
    /**
     * @zh 获取当前活跃的会话
     * @en Gets the current active session
     */
    getActiveSession(): SessionInfo | null;
    /**
     * @zh 获取指定会话
     * @en Gets the specified session
     */
    getSession(sessionId: string): SessionInfo | null;
    /**
     * @zh 获取所有会话
     * @en Gets all sessions
     */
    getAllSessions(): SessionInfo[];
    /**
     * @zh 删除指定会话
     * @en Deletes the specified session
     */
    deleteSession(sessionId: string): Promise<boolean>;
    /**
     * @zh 清空所有会话
     * @en Clears all sessions
     */
    clearAllSessions(): Promise<void>;
    /**
     * @zh 获取会话数量
     * @en Gets the number of sessions
     */
    getSessionCount(): number;
    /**
     * @zh 生成会话 ID (UUID v4 格式)
     * @en Generates a session ID (UUID v4 format)
     */
    private generateSessionId;
    /**
     * @zh 从已有的 Thread 添加会话（仅添加元数据，不创建 Client）
     * @en Adds a session from an existing Thread (metadata only, no client created)
     */
    addSessionFromThread(threadId: string, agentName?: string): Promise<SessionInfo>;
    /**
     * @zh 获取当前活跃的客户端
     * @en Gets the current active client
     */
    getActiveClient(): LangGraphClient | null;
    /**
     * @zh 从远程列出所有会话
     * @en Lists all sessions from remote
     */
    listRemoteSessions(options?: {
        ids?: string[];
        metadata?: Record<string, any>;
        status?: "idle" | "busy" | "interrupted" | "error";
        values?: any;
        limit?: number;
        offset?: number;
        sortBy?: "thread_id" | "status" | "created_at" | "updated_at";
        sortOrder?: "asc" | "desc";
        select?: Array<"thread_id" | "created_at" | "updated_at" | "metadata" | "config" | "context" | "status" | "values" | "interrupts">;
        withoutDetails?: boolean;
    }): Promise<Thread<unknown, unknown>[]>;
    /**
     * @zh 从远程同步会话到本地（仅同步元数据，不创建 Client）
     * @en Syncs sessions from remote to local (metadata only, no client created)
     */
    syncFromRemote(options?: {
        limit?: number;
        agentName?: string;
    }): Promise<SessionInfo[]>;
    /**
     * @zh 初始化 History（必须先调用）
     * @en Initializes History (must be called first)
     */
    init(agentName?: string, config?: {
        fallbackToAvailableAssistants?: boolean;
    }): Promise<import("@langchain/langgraph-sdk").Assistant | undefined>;
}
