/**
 * Agent 客户端核心模块
 * 负责与调度中心通信，管理消息循环
 */
import { StatusReporter } from "./status-reporter.js";
import type { AgentConfig, DirectMessage, DmHistoryResponse, GroupHistoryResponse, GroupRoomsResponse, HireColleagueArgs, HireColleaguesBatchArgs, HireBatchResult, HiredColleagueResult, MessageHandler, OnlineListResponse, ProfileInfo, RegisterResult, SendDmResult, SendMessageResult, UnreadMessagesResult } from "./types.js";
export type ProfileHandler = (profile: ProfileInfo) => void;
export declare class AgentClient {
    private wsClient;
    private httpClient;
    private agentConfig;
    private serverConfig;
    private agentId;
    private displayName;
    private projectName;
    private isRunning;
    private messageHandler;
    private profileHandler;
    private pollTimer;
    private statusReporter;
    /**
     * Profile 缓存
     * 用于处理 PROFILE_INFO 消息在 profileHandler 设置之前到达的情况
     */
    private cachedProfile;
    constructor();
    initialize(): Promise<void>;
    private setupWebSocketListeners;
    /**
     * 注册 Agent 上线
     */
    register(): Promise<RegisterResult>;
    private hasPresetAgentId;
    /**
     * 使用预设 AgentID 注册（绑定已有实例）
     */
    private registerWithExistingAgentId;
    /**
     * 作为新 Agent 注册
     */
    private registerAsNewAgent;
    /**
     * 注销 Agent 下线
     */
    unregister(): Promise<void>;
    /**
     * 获取当前 Agent 可见的同事列表（包含离线 Agent）。
     */
    discoverColleagues(): Promise<OnlineListResponse>;
    /**
     * 获取当前 Agent 在关系图中可发现的群组列表。
     */
    discoverGroupRooms(): Promise<GroupRoomsResponse>;
    /**
     * 招聘同事并创建新的 Agent 实例。
     * 主流程：校验当前实例已注册 -> 透传创建角色参数到服务端 MCP tool -> 返回新实例信息。
     */
    hireColleague(args: HireColleagueArgs): Promise<HiredColleagueResult>;
    /**
     * 批量发起招聘审批请求。
     * 主流程：校验当前实例已注册 -> 透传批量招聘参数到服务端 MCP tool -> 返回整批审批与创建结果。
     */
    hireColleaguesBatch(args: HireColleaguesBatchArgs): Promise<HireBatchResult>;
    /**
     * 发送群消息
     * @param content 消息内容
     * @param projectName 目标项目名，不传则使用 Agent 所属项目（由服务端决定）
     * @param roomId 目标群房间 ID，小组群场景下优先使用以避免误发到项目公共群
     */
    sendGroupMessage(content: string, projectName?: string, roomId?: string): Promise<SendMessageResult>;
    /**
     * 发送私信
     */
    sendDirectMessage(targetId: string, content: string, waitReply?: boolean, replyToCallId?: string, timeoutMs?: number): Promise<SendDmResult>;
    /**
     * 发送私信并等待回复（阻塞式）
     */
    sendCallAndWaitReply(targetId: string, content: string, timeoutMs?: number): Promise<DirectMessage>;
    /**
     * 回复调用式消息
     */
    replyToCall(callId: string, targetId: string, content: string): Promise<SendDmResult>;
    /**
     * 获取私信历史消息
     */
    getDmHistory(targetUserId?: string, limit?: number, since?: string): Promise<DmHistoryResponse>;
    /**
     * 获取群消息历史记录
     */
    getGroupHistory(limit?: number, roomId?: string, since?: string): Promise<GroupHistoryResponse>;
    /**
     * 拉取当前 Agent 尚未消费的未读消息。
     * 主流程：校验注册状态 -> 获取未读私信 -> 获取未读群消息 -> 合并返回。
     * @param since 可选的起始时间（ISO 8601），早于该时间的消息将被过滤
     */
    fetchUnreadMessages(options?: {
        since?: string;
        blockIfEmpty?: boolean;
    }): Promise<UnreadMessagesResult>;
    /**
     * 收集当前项目下 Agent 可访问的群房间 ID，避免离线补拉和历史查询遗漏小组群。
     */
    private collectRoomIds;
    /**
     * 获取当前 Agent 的个人信息
     */
    getProfile(): Promise<ProfileInfo>;
    private getProfileByAgentId;
    /**
     * 获取当前 Agent 被分配的流程线任务列表
     */
    getMyTasks(): Promise<unknown[]>;
    /**
     * 开始处理流程线任务节点（将 PENDING 状态转为 PROCESSING）
     */
    startTask(nodeId: string): Promise<unknown>;
    /**
     * 提交流程线任务结果
     */
    submitTaskResult(nodeId: string, outputPayload: string): Promise<unknown>;
    /**
     * 拒绝流程线任务
     */
    rejectTask(nodeId: string, reason: string): Promise<unknown>;
    /**
     * 终止流程线任务（终止后不再流转）
     */
    terminateTask(taskInstanceId: string, reason: string): Promise<unknown>;
    /**
     * 启动消息监听
     */
    start(handler: MessageHandler, options?: {
        pollMode?: boolean;
        profileHandler?: ProfileHandler;
    }): void;
    /**
     * 停止消息监听
     */
    stop(): void;
    private messageLoop;
    private handleIncomingDm;
    private handleIncomingGroup;
    /**
     * 处理收到的 Profile 信息
     * 由服务端在 Agent 连接时自动推送
     */
    private handleProfileInfo;
    private processMessage;
    private ensureRegistered;
    private delay;
    getState(): {
        agentId: string | null;
        displayName: string | null;
        projectName: string | null;
        isConnected: boolean;
        isRunning: boolean;
    };
    getAgentConfig(): AgentConfig;
    reloadConfig(): void;
    /**
     * 初始化状态报告器
     */
    private initializeStatusReporter;
    /**
     * 上报 MCP Node.js 进程自身日志。
     * 主流程：logger 写入 stderr/file -> sink 回调 -> WebSocket 转发给调度中心和面板。
     */
    private reportMcpNodeLog;
    /**
     * 获取状态报告器（供 MCP Server 使用）
     */
    getStatusReporter(): StatusReporter | null;
}
//# sourceMappingURL=agent-client.d.ts.map