/**
 * LarkTransport — 飞书消息传输层
 *
 * 职责: 将飞书 SDK 的原始消息格式转换为统一 AgentMessage，
 *        并把 Agent 的回复写回飞书。
 *
 * 架构位置:
 *   飞书 WS Event → LarkTransport.receive(rawEvent)
 *     → 解析文本/附件 → AgentMessage.fromLark(...)
 *     → IntentClassifier.classify(text)
 *     → 路由到 Bot Agent (服务端) 或 IDE Agent (VSCode)
 *     → 回复通过 replyFn/sendFn 写回飞书
 *
 * 与 remote.js 的关系:
 *   remote.js 仍然管理飞书 WS 连接和 HTTP 端点，
 *   LarkTransport 处理消息语义层 (NL 理解、Agent 路由、回复格式化)。
 *
 * @module LarkTransport
 */
import type { AgentRuntime } from '#agent/AgentRuntime.js';
interface AgentFactory {
    createLark(opts: RuntimeOverrides): AgentRuntime;
    createRemoteExec(opts: RuntimeOverrides): AgentRuntime;
    getAiProviderInfo(): {
        name: string;
        model?: string;
    };
}
interface RuntimeOverrides {
    lang?: string;
    onProgress?: (event: ProgressEvent) => void;
}
interface ProgressEvent {
    type: string;
    tool?: string;
    [key: string]: unknown;
}
interface LarkTransportConfig {
    agentFactory: AgentFactory;
    replyFn: (messageId: string, text: string) => Promise<void>;
    sendFn: (text: string) => Promise<undefined | boolean>;
    sendImageFn?: (caption: string) => Promise<{
        success: boolean;
        message: string;
    }>;
    getStatusFn?: () => Promise<string>;
    enqueueIdeFn?: (command: string, meta: Record<string, unknown>) => Promise<{
        id: string;
    }>;
    isUserAllowed?: (userId: string) => boolean;
    aiProvider?: import('#external/ai/AiProvider.js').AiProvider;
    projectRoot?: string;
}
/** Raw Lark im.message.receive_v1 event data */
interface LarkRawEvent {
    message?: LarkRawMessage;
    event?: {
        message?: LarkRawMessage;
        sender?: LarkRawSender;
    };
    sender?: LarkRawSender;
}
interface LarkRawMessage {
    message_id?: string;
    chat_id?: string;
    message_type?: string;
    content?: string;
}
interface LarkRawSender {
    sender_id?: {
        user_id?: string;
        open_id?: string;
    };
}
export declare class LarkTransport {
    #private;
    /** 对话历史最大轮数 */
    static MAX_HISTORY: number;
    /** 去重 TTL (5 分钟) */
    static DEDUP_TTL: number;
    constructor(config: LarkTransportConfig);
    /**
     * 接收原始飞书消息事件
     *
     * 这是唯一入口 — 替代了 remote.js 中的 handleLarkMessage()
     *
     * @param data 飞书 im.message.receive_v1 事件数据
     */
    receive(data: LarkRawEvent): Promise<void>;
}
export default LarkTransport;
