import type { TransportClient } from "../transport/types.js"; export type SendResult = { ok: true; platformMsgId: string; method: "card" | "text" | "file"; deliveredContent: string; } | { ok: false; error: string; methodsTried: string[]; uncertain?: boolean; }; type ResponseSenderOptions = { timeoutMs?: number; tempDir?: string; }; type SendFinalResponseOptions = { chatId: string; header: string; content: string; footer?: string; replyToMsgId?: string; replyInThread?: boolean; /** false 时禁止 create,只处理 reply;必须有 replyToMsgId。 */ allowChatFallback?: boolean; signal?: AbortSignal; /** 跳过卡片,直接走文本。 */ preferText?: boolean; /** 卡片发送失败后的文本降级内容(默认 = content);可传函数按卡片失败原因动态构建(如「发送失败:<原因>」提示) */ textFallback?: string | ((error: unknown) => string); }; export declare class ResponseSender { private readonly transport; private readonly timeoutMs; private readonly tempDir; constructor(transport: TransportClient, options?: ResponseSenderOptions); sendText(chatId: string, text: string, signal?: AbortSignal): Promise; sendReply(chatId: string, text: string, replyToMsgId: string, signal?: AbortSignal, replyInThread?: boolean): Promise; sendCard(chatId: string, header: string, content: string, footer?: string, replyToMsgId?: string, signal?: AbortSignal, replyInThread?: boolean): Promise; sendFile(chatId: string, filePath: string, fileName?: string, signal?: AbortSignal, replyToMsgId?: string, replyInThread?: boolean): Promise; addReaction(chatId: string, msgId: string, emoji: string, signal?: AbortSignal): Promise; removeReaction(chatId: string, msgId: string, emoji: string, signal?: AbortSignal): Promise; sendFinalResponse(options: SendFinalResponseOptions): Promise; private sendResponseFile; private sendWithTelemetry; private runDelivery; } export {};