k2-im 0.1.32 → 0.1.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -40,7 +40,7 @@ interface ConversationDraft$1 {
40
40
  updatedAt: number;
41
41
  }
42
42
  /** 消息内容类型。sticker=表情/贴图(BMessage contentType=7);call=单聊通话记录(contentType=10);transfer=转账(contentType=16);gift=礼品/刮刮卡(contentType=17);robot=机器人卡片(contentType=18);miniProgram=小程序分享卡(contentType=22);redPacket=红包卡(contentType=25);game=小游戏(contentType=27);未知 wire 正文统一归一为 unknown。 */
43
- type MessageContentType = 'text' | 'system' | 'image' | 'video' | 'voice' | 'file' | 'sticker' | 'contact' | 'miniProgram' | 'game' | 'transfer' | 'gift' | 'call' | 'redPacket' | 'mediaAlbum' | 'robot' | 'unknown';
43
+ type MessageContentType = 'text' | 'system' | 'image' | 'video' | 'voice' | 'file' | 'sticker' | 'contact' | 'miniProgram' | 'game' | 'transfer' | 'gift' | 'call' | 'redPacket' | 'mediaAlbum' | 'filesAlbum' | 'robot' | 'unknown';
44
44
  /**
45
45
  * 发送态(客户端态):消息从本地创建到服务端确认的生命周期。
46
46
  * `uploading` 仅媒体消息使用:文件上传阶段(uploading→pending→sending→sent);
@@ -122,6 +122,12 @@ type LastMessageSummary = {
122
122
  kind: 'voice';
123
123
  durationMs?: number;
124
124
  }
125
+ /** 文件合集的有序文件数量与可选配文,文案由 i18n 决定。 */
126
+ | {
127
+ kind: 'filesAlbum';
128
+ count: number;
129
+ caption?: string;
130
+ }
125
131
  /**
126
132
  * 媒体合集(contentType 28)。
127
133
  *
@@ -214,6 +220,13 @@ interface ImVideoBody {
214
220
  /** 文件加密类型:1=不加密,3=完整 TEA(BMessage.fileEncryptType;视频与图片同体系走完整 TEA)。 */
215
221
  fileEncryptType?: number;
216
222
  }
223
+ /** 文件合集正文;接收保留所有有序文件项,首次发送每条只包含一个文件。 */
224
+ interface ImFilesAlbumBody {
225
+ /** 文件下方的配文;无配文时省略。 */
226
+ caption?: string;
227
+ /** 文件元数据与独立解密参数;本地上传占位允许 URL 暂为空。 */
228
+ items: readonly ImFileBody[];
229
+ }
217
230
  /**
218
231
  * 文件(附件)消息内容体(contentType==='file')。领域友好类型(string/number),协议 BMessage 的 bytes/bigint 字段在 mapping 层互转。
219
232
  * 对齐 Android IMFileMsgBody / BMessage 文件字段(见 outputs/architecture/subagent-read-docs/研究Android文件上传实现.md):
@@ -625,6 +638,8 @@ interface ImMessageBody {
625
638
  redPacket?: ImRedPacketBody;
626
639
  /** contentType==='mediaAlbum' 时的媒体合集正文(配文 + 1~9 个图片/视频项)。 */
627
640
  mediaAlbum?: ImMediaAlbumBody;
641
+ /** 文件合集(协议 29),与图片/视频合集独立。 */
642
+ filesAlbum?: ImFilesAlbumBody;
628
643
  /** contentType==='robot' 时的机器人卡片。 */
629
644
  robot?: ImRobotBody;
630
645
  /** contentType==='unknown' 时的稳定未知正文,不含原始 wire type。 */
@@ -661,7 +676,7 @@ type ImMessageFailureReason = 'timeout' | 'rejected' | 'encrypt_failed' | 'netwo
661
676
  * 失败**展示语义**码(强类型枚举,非裸串):供 im-i18n 按 locale 渲染失败气泡文案。
662
677
  * 由 `reason` / `SendMediaFailReason` / ACK errcode 穷尽映射而来,与 im-i18n failure catalog 键一一对应(media.* 带 mediaKind 参数)。
663
678
  */
664
- type ImFailureDisplayCode = 'media.empty' | 'media.noCrypto' | 'media.previewFailed' | 'media.encryptFailed' | 'media.uploadFailed' | 'media.cancelled' | 'media.invalidDuration' | 'media.uploadInterrupted' | 'media.contentTooLarge' | 'contactRequired' | 'messageRefused' | 'forbiddenOrLeft' | 'contentRejected' | 'groupDismissed' | 'groupUnavailable' | 'channelDismissed' | 'channelMuted' | 'channelNotMember' | 'channelAdminRequired' | 'conversationUnsupported' | 'sendCanceled' | 'sessionLoggedOut' | 'timeout' | 'network' | 'unknown';
679
+ type ImFailureDisplayCode = 'media.empty' | 'media.noCrypto' | 'media.previewFailed' | 'media.encryptFailed' | 'media.resumeUnavailable' | 'media.cleanupUnconfirmed' | 'media.uploadFailed' | 'media.uploadTimeout' | 'media.cancelled' | 'media.invalidDuration' | 'media.uploadInterrupted' | 'media.contentTooLarge' | 'contactRequired' | 'messageRefused' | 'forbiddenOrLeft' | 'contentRejected' | 'groupDismissed' | 'groupUnavailable' | 'channelDismissed' | 'channelMuted' | 'channelNotMember' | 'channelAdminRequired' | 'conversationUnsupported' | 'sendCanceled' | 'sessionLoggedOut' | 'timeout' | 'network' | 'unknown';
665
680
  interface ImMessageFailure {
666
681
  /** 归一后的错误码(来自 MESChatAck.errcode 或本地失败码,本地码用负值)。 */
667
682
  code: number;
@@ -687,7 +702,7 @@ interface MediaTaskUpdate {
687
702
  messageId: string;
688
703
  ref: ConversationRef;
689
704
  direction: 'upload' | 'download';
690
- state: 'queued' | 'running' | 'completed' | 'failed' | 'canceled';
705
+ state: 'queued' | 'running' | 'paused' | 'completed' | 'failed' | 'canceled';
691
706
  percent: number;
692
707
  /**
693
708
  * upload 任务子阶段。
@@ -695,7 +710,16 @@ interface MediaTaskUpdate {
695
710
  * `waiting-upload-slot` 与 `state: 'queued'` 同时出现,表示还没开始传字节(在生成缩略图或在等上传槽位),
696
711
  * 此时 percent 恒为 0;`transferring` 正在传字节;`finalizing` 是等待远端 URL 最终确认。
697
712
  */
698
- phase?: 'waiting-upload-slot' | 'transferring' | 'finalizing';
713
+ phase?: 'waiting-upload-slot' | 'waiting-retry' | 'transferring' | 'finalizing';
714
+ /** 当前发送意图的尝试序号与总上限。 */
715
+ attempt?: number;
716
+ maxAttempts?: number;
717
+ /** 已传与总字节数,供共享展示层估算速度。 */
718
+ bytesTransferred?: number;
719
+ bytesTotal?: number;
720
+ /** 跨刷新恢复可用性;缺省尚未建立恢复记录。 */
721
+ recovery?: 'available' | 'session-only';
722
+ recoveryReason?: string;
699
723
  failure?: ImMessageFailure;
700
724
  }
701
725
  interface ImMessageEncryption {
@@ -2368,6 +2392,11 @@ type ImEvent = {
2368
2392
  } | {
2369
2393
  type: 'sync:complete';
2370
2394
  conversations: ConversationRef[];
2395
+ }
2396
+ /** SDK 会话同步或前台内容读取的汇总状态;结束不代表所有请求成功。 */
2397
+ | {
2398
+ type: 'receiving:changed';
2399
+ receiving: boolean;
2371
2400
  } | {
2372
2401
  type: 'auth:invalid';
2373
2402
  issue: ImAuthIssue;
@@ -3123,12 +3152,17 @@ interface ImMessageReactions {
3123
3152
  aggregates: readonly ImMessageReactionAggregate[];
3124
3153
  }
3125
3154
  /** 可渲染媒体正文;密钥和底层文件加密策略只允许留在 SDK/Core。 */
3126
- interface ImMessageViewBody extends Omit<ImMessageBody, 'image' | 'video' | 'voice' | 'file' | 'sticker' | 'mediaAlbum'> {
3155
+ interface ImMessageViewBody extends Omit<ImMessageBody, 'image' | 'video' | 'voice' | 'file' | 'sticker' | 'mediaAlbum' | 'filesAlbum'> {
3127
3156
  image?: Readonly<Omit<NonNullable<ImMessageBody['image']>, 'teaKey' | 'fileEncryptType'>>;
3128
3157
  video?: Readonly<Omit<NonNullable<ImMessageBody['video']>, 'teaKey' | 'fileEncryptType'>>;
3129
3158
  voice?: Readonly<Omit<NonNullable<ImMessageBody['voice']>, 'teaKey' | 'fileEncryptType'>>;
3130
3159
  file?: Readonly<Omit<NonNullable<ImMessageBody['file']>, 'teaKey' | 'fileEncryptType'>>;
3131
3160
  sticker?: Readonly<NonNullable<ImMessageBody['sticker']>>;
3161
+ /** 文件合集产品视图不包含逐项密钥,下载只接受消息引用与下标。 */
3162
+ filesAlbum?: Readonly<{
3163
+ caption?: string;
3164
+ items: readonly Readonly<Omit<NonNullable<ImMessageBody['file']>, 'teaKey' | 'fileEncryptType'>>[];
3165
+ }>;
3132
3166
  /** 合集的每一项都带自己的密钥材料,逐项剥离后才交给产品层;按项下载走 SDK handle,不需要这些字段。 */
3133
3167
  mediaAlbum?: Readonly<Omit<NonNullable<ImMessageBody['mediaAlbum']>, 'items'> & {
3134
3168
  items: readonly Readonly<Omit<ImMediaAlbumItem, 'teaKey' | 'fileEncryptType'>>[];
@@ -3291,10 +3325,13 @@ interface VoiceMessageMetadata {
3291
3325
  /**
3292
3326
  * 文件发送附加数据。
3293
3327
  *
3294
- * @remarks 传 `Blob` 时必须提供 `fileName`;传 `File` 时默认读取其 name。当前协议无文件 caption,非空值显式 unsupported。
3328
+ * @remarks 传 `Blob` 时必须提供 `fileName`;传 `File` 时默认读取其 name。非空 caption 使用协议 29,无配文默认保持 11。
3295
3329
  */
3296
3330
  interface FileMessageOptions {
3331
+ /** 文件卡下方配文,最长 1024 字符。 */
3297
3332
  caption?: string;
3333
+ /** 同一带配文批次的前序文件使用 29,即使自身没有配文。 */
3334
+ filesAlbum?: boolean;
3298
3335
  fileName?: string;
3299
3336
  replyToMessageId?: string;
3300
3337
  }
@@ -3929,6 +3966,8 @@ interface ImLifecycleSnapshot {
3929
3966
  prepared: boolean;
3930
3967
  connectionDesired: boolean;
3931
3968
  authenticated: boolean;
3969
+ /** 会话同步或前台内容读取仍在进行;不包含后台预取、媒体下载和写操作,也不代表同步成功。 */
3970
+ receiving: boolean;
3932
3971
  }
3933
3972
  /** logout 的本地数据与在途消息策略。 */
3934
3973
  interface ImLogoutOptions {
@@ -4336,6 +4375,12 @@ type ConversationLastMessageSummary = {
4336
4375
  kind: 'voice';
4337
4376
  durationMs?: number;
4338
4377
  }
4378
+ /** 文件合集的文件数量与可选配文,供列表生成摘要。 */
4379
+ | {
4380
+ kind: 'filesAlbum';
4381
+ count: number;
4382
+ caption?: string;
4383
+ }
4339
4384
  /**
4340
4385
  * 媒体合集(一条消息内 1~9 个图片/视频 + 可选配文)。
4341
4386
  *
@@ -4871,9 +4916,9 @@ interface ConversationMessageApi {
4871
4916
  /** 显式添加/替换或移除,供参与者详情等不能用 toggle 猜动作的产品交互。 */
4872
4917
  setReaction: (messageId: string, emoji: string, action: ImReactionChangeAction) => Promise<ImReactionChangeResult>;
4873
4918
  /**
4874
- * 为刷新后上传中断的视频重新选择源文件,并原地替换同一条消息。
4919
+ * 为源文件已释放的视频重新选择源文件,并原地替换同一条消息。
4875
4920
  *
4876
- * @remarks 只接受当前 handle 中 `media.uploadInterrupted` 的失败视频。SDK 复用原消息 id 与排序时间,
4921
+ * @remarks 只接受上传中断、已取消或超时耗尽后的失败视频;必须重新选择文件。SDK 复用原消息 id 与排序时间,
4877
4922
  * 不清理当前 Composer 草稿;重新上传失败仍更新同一条消息。
4878
4923
  * @example
4879
4924
  * ```ts
@@ -4882,9 +4927,9 @@ interface ConversationMessageApi {
4882
4927
  */
4883
4928
  replaceInterruptedVideo: (messageId: string, file: File | Blob, options?: VideoMessageOptions) => Promise<SendMessageResult>;
4884
4929
  /**
4885
- * 为刷新后上传中断的文件重新选择源文件,并原地替换同一条消息。
4930
+ * 为源文件已释放的文件重新选择源文件,并原地替换同一条消息。
4886
4931
  *
4887
- * @remarks 只接受当前 handle 中 `media.uploadInterrupted` 的失败文件。SDK 复用原消息 id 与排序时间,
4932
+ * @remarks 只接受上传中断、已取消或超时耗尽后的失败文件或单项 filesAlbum;保留原配文。SDK 复用原消息 id 与排序时间,
4888
4933
  * 不清理当前 Composer 草稿;Blob 没有 name 时仍必须传 `fileName`。
4889
4934
  * @example
4890
4935
  * ```ts
@@ -5028,7 +5073,8 @@ interface ChannelConversationMessageApi extends ConversationMessageApi {
5028
5073
  * 由社群管理员或社群主删除一条全员可见消息。
5029
5074
  *
5030
5075
  * @remarks 不受本人撤回时间窗限制;权限由 CHANNEL profile 预检并由服务端最终校验。成功后消息进入
5031
- * `deletedForEveryone` 终态,所有端显示“管理员删除了一条消息”。该方法不用于本机删除,也不适用于普通群。
5076
+ * `deletedForEveryone` 终态;Chat Kit 时间线仅向社群群主和管理员显示删除提示,普通成员隐藏该项。
5077
+ * 该方法不用于本机删除,也不适用于普通群。
5032
5078
  * @example
5033
5079
  * ```ts
5034
5080
  * const channel = await client.openConversation({ conversationType: 'channel', conversationId: '9001' })
@@ -5211,7 +5257,7 @@ interface ImMediaTask {
5211
5257
  /** upload 来自发送链路,download 来自本产品 API。 */
5212
5258
  direction: 'upload' | 'download';
5213
5259
  /** 终态 completed/failed/canceled 不会被同一尝试的迟到 progress 回退。 */
5214
- state: 'queued' | 'running' | 'completed' | 'failed' | 'canceled';
5260
+ state: 'queued' | 'running' | 'paused' | 'completed' | 'failed' | 'canceled';
5215
5261
  /** 0-100 的归一化整数。 */
5216
5262
  percent: number;
5217
5263
  /**
@@ -5221,7 +5267,16 @@ interface ImMediaTask {
5221
5267
  * 等上传槽位),此时 `percent` 恒为 0——宿主应显示「等待中」而不是把 0 当成停住的进度。
5222
5268
  * `transferring` 是正在传字节,`finalizing` 是字节已传完、在等对象存储确认。
5223
5269
  */
5224
- phase?: 'waiting-upload-slot' | 'transferring' | 'finalizing';
5270
+ phase?: 'waiting-upload-slot' | 'waiting-retry' | 'transferring' | 'finalizing';
5271
+ /** 当前发送意图的尝试序号与总上限。 */
5272
+ attempt?: number;
5273
+ maxAttempts?: number;
5274
+ /** 已传与总字节数,供共享展示层估算速度。 */
5275
+ bytesTransferred?: number;
5276
+ bytesTotal?: number;
5277
+ /** 跨刷新恢复可用性;缺省尚未建立恢复记录。 */
5278
+ recovery?: 'available' | 'session-only';
5279
+ recoveryReason?: string;
5225
5280
  /** 可供产品按 code/category 决策的稳定错误;不含底层 URL、密钥或响应正文。 */
5226
5281
  error?: ImSdkErrorShape;
5227
5282
  }
@@ -5259,11 +5314,31 @@ interface ImMediaTasksApi {
5259
5314
  * @throws 未知任务、非法状态或底层未受理时以稳定 `IM_SDK_MEDIA_TASK_*` 错误拒绝。
5260
5315
  */
5261
5316
  cancel: (taskId: string) => Promise<void>;
5317
+ /** 暂停上传,等待请求收尾后返回;下载不支持暂停。 */
5318
+ pause: (taskId: string) => Promise<void>;
5319
+ /** 恢复已暂停上传,复用同一原文件与消息。 */
5320
+ resume: (taskId: string) => Promise<void>;
5321
+ /** 只暴露恢复可用性,不返回文件密钥或远端分片凭据。 */
5322
+ getUploadRecovery: (message: ImMessageRef) => Promise<{
5323
+ available: boolean;
5324
+ reason?: string;
5325
+ expiresAt?: number;
5326
+ }>;
5327
+ /** 用户重选原文件并通过完整内容校验后恢复原消息。 */
5328
+ resumeUpload: (message: ImMessageRef, input: {
5329
+ file: Blob;
5330
+ }) => Promise<void>;
5262
5331
  /**
5263
5332
  * 重试 failed/canceled 任务;上传复用保留原文件,下载重新解析同一精确消息引用。
5333
+ * 续传不可用或清理未确认时,必须先征得用户同意重新上传,再传 restartUpload:true。
5334
+ * 用户取消后的重发始终重新上传尚未完成的资源;成功的合集项仍可复用。
5335
+ * 下载取消已受理后即可创建新尝试,不复用旧取消 Promise;旧 loader 结束前仍占用并发槽,但不能覆盖新任务。
5264
5336
  * @throws 原文件已淘汰、任务仍在途或消息/下载 capability 不可用时显式拒绝。
5265
5337
  */
5266
- retry: (taskId: string) => Promise<void>;
5338
+ retry: (taskId: string, options?: {
5339
+ /** 用户已确认放弃旧进度并重新上传;仅上传任务接受,清理失败时仍停止。 */
5340
+ restartUpload?: boolean;
5341
+ }) => Promise<void>;
5267
5342
  /**
5268
5343
  * 下载并按消息正文合同解密,同一消息并发调用复用同一 Promise,成功返回 Blob。
5269
5344
  * @throws 消息不存在/非媒体/无远端 URL/未装配 capability、传输失败、取消或 teardown 均以稳定错误拒绝,不返回空 Blob。
@@ -5474,6 +5549,10 @@ interface ImProductEventMap {
5474
5549
  'sync:complete': Readonly<{
5475
5550
  conversations: readonly ConversationRef<ProductConversationListType>[];
5476
5551
  }>;
5552
+ /** 当前账号仍有会话同步或前台内容读取;false 仅表示读取结束,错误仍走 error 事件。 */
5553
+ 'receiving:changed': Readonly<{
5554
+ receiving: boolean;
5555
+ }>;
5477
5556
  /** `lastLoginTime` 为服务端记录的上次登录时间(毫秒),仅被踢且走登录 ACK 的路径才有值。 */
5478
5557
  'auth:invalid': Readonly<{
5479
5558
  code: string;
@@ -6059,6 +6138,10 @@ interface ImClientOptions {
6059
6138
  * 缺省则**不装配媒体传输端口** → `sendImage`/`sendVideo`/`loadImage`/`loadVideo` 显式不可用(connection 层 reject,非静默);预览(Canvas 缩略图/封面)不依赖此配置、恒可用。
6060
6139
  */
6061
6140
  media?: ImMediaConfig;
6141
+ /** 显式开启视频/文件跨刷新续传。最多 3 条、24 小时,保存加密密钥但不保存文件副本;注销清除。 */
6142
+ uploadRecovery?: {
6143
+ enabled: boolean;
6144
+ };
6062
6145
  }
6063
6146
  /**
6064
6147
  * 官方 UI Kit、调试工具与高级宿主的装配参数。
@@ -6605,7 +6688,7 @@ type ConversationListPreviewSegment = {
6605
6688
  * `mediaAlbum` 专指「照片和视频混装」的合集,产品用相机图标;只有照片或只有视频的合集归到
6606
6689
  * `image` / `video`,因为用户看到的文案也是「2张照片」「2个视频」。
6607
6690
  */
6608
- type ConversationListPreviewMediaKind = 'image' | 'video' | 'gif' | 'sticker' | 'mediaAlbum';
6691
+ type ConversationListPreviewMediaKind = 'image' | 'video' | 'gif' | 'sticker' | 'mediaAlbum' | 'voice';
6609
6692
  /** 由各宿主按当前产品语言注入的会话列表标签。 */
6610
6693
  interface ConversationListPresentationLabels {
6611
6694
  /** 没有草稿和最后消息时显示的占位文案。 */
@@ -6644,7 +6727,7 @@ interface ConversationListPresentation {
6644
6727
  /**
6645
6728
  * 摘要前面该显示哪个类型图标;不需要图标时缺省。
6646
6729
  *
6647
- * 草稿、撤回、管理员删除、系统事件显示的是整句话而不是类型占位,一律不给图标;语音、文件、
6730
+ * 草稿、撤回、管理员删除、系统事件显示的是整句话而不是类型占位,一律不给图标;文件、
6648
6731
  * 名片等没有产品 glyph 的类型同样不给,它们的文案自带方括号来和真实文本区分。
6649
6732
  */
6650
6733
  previewMediaKind?: ConversationListPreviewMediaKind;
@@ -6936,6 +7019,10 @@ interface ChatRuntimeHostDeps {
6936
7019
  clientType: number;
6937
7020
  /** 获取当前环境的媒体上传下载配置;未启用媒体能力时返回 `undefined`。 */
6938
7021
  getMediaConfig: () => ImMediaConfig | undefined;
7022
+ /** 显式启用账号隔离的跨刷新恢复记录;保存密钥、不保存原文件,注销清除。 */
7023
+ uploadRecovery?: {
7024
+ enabled: boolean;
7025
+ };
6939
7026
  /** 获取 GIF provider 配置;API key 只留在宿主闭包与 SDK adapter,不进入共享 Store。 */
6940
7027
  getExpressionOptions?: () => ImExpressionOptions | undefined;
6941
7028
  }
@@ -7552,6 +7639,27 @@ declare namespace forward_service {
7552
7639
  export type { forward_service_ForwardCommandHooks as ForwardCommandHooks, forward_service_ImForwardOperationResult as ImForwardOperationResult };
7553
7640
  }
7554
7641
 
7642
+ /** 整条消息复制时的文字;合集取配文,预览复制单项图片时不调用此方法。 */
7643
+ declare function getMessageCopyText(message: ImMessageView | undefined): string;
7644
+ /** 与复制资格使用同一图片选择规则,供宿主检测异步操作期间资源是否变化。 */
7645
+ declare function getMessageCopyImageUrl(message: ImMessageView | undefined, itemIndex?: number): string | undefined;
7646
+ /**
7647
+ * 菜单支持单图及单张图片加配文;预览传入合集项下标,视频、终态及未发送消息不开放。
7648
+ * @example canCopyMessageImage(message); canCopyMessageImage(albumMessage, 0);
7649
+ */
7650
+ declare function canCopyMessageImage(message: ImMessageView | undefined, itemIndex?: number): boolean;
7651
+ /**
7652
+ * 为浏览器剪贴板提供高清与缩略图 Blob,不创建页面资源、不显示 Toast。
7653
+ * SDK media.download 负责缓存、下载和解密;宿主用 isCurrent 绑定页面、菜单或预览的操作身份。
7654
+ * 返回的 isCurrent 还会核验 Runtime 账号;宿主须检查最新消息的终态、资源地址及当前合集项。
7655
+ * @example copyImageToClipboard(createMessageImageCopySource(runtime, message, isCurrent));
7656
+ */
7657
+ declare function createMessageImageCopySource(runtime: ChatRuntime, message: ImMessageView, isCurrent: () => boolean, itemIndex?: number): {
7658
+ isCurrent: () => boolean;
7659
+ loadOriginal(): Promise<Blob>;
7660
+ loadThumbnail(): Promise<Blob>;
7661
+ };
7662
+
7555
7663
  /** 媒体入口的去向;不支持的图片必须提示用户,不能自动作为附件发送。 */
7556
7664
  type MediaFileClassification = 'image' | 'video' | 'sticker' | 'file' | 'unsupported-image';
7557
7665
  /**
@@ -7667,7 +7775,7 @@ declare function loadCachedImageObjectUrl(runtime: ChatRuntime, message: ImMessa
7667
7775
  *
7668
7776
  * `onProgress` 可更新下载进度。空文件或失败返回 `null` 并显示提示;保存动作结束后调用方必须撤销地址。
7669
7777
  */
7670
- declare function loadFileObjectUrl(runtime: ChatRuntime, message: ImMessageView, hooks: ServiceNoteHooks, onProgress?: (percent: number) => void): Promise<string | null>;
7778
+ declare function loadFileObjectUrl(runtime: ChatRuntime, message: ImMessageView, hooks: ServiceNoteHooks, onProgress?: (percent: number) => void, itemIndex?: number): Promise<string | null>;
7671
7779
 
7672
7780
  declare const media_service_acquireMediaBlob: typeof acquireMediaBlob;
7673
7781
  declare const media_service_detectImageMime: typeof detectImageMime;
@@ -7764,10 +7872,14 @@ declare function executeDeleteChannelMessageForEveryone(runtime: ChatRuntime, in
7764
7872
  *
7765
7873
  * 如果该消息有失败或已取消的上传任务,优先重试媒体上传;否则查找 SDK 待发送队列中的普通消息。
7766
7874
  * 任务必须同时匹配当前会话类型、会话 ID 和消息 ID,找不到时返回 `not-ready`。
7875
+ * `restartUpload` 只能在宿主明确说明完整重传并取得用户确认后传入;普通重发保留续传资格。
7767
7876
  */
7768
7877
  declare function executeRetryMessage(runtime: ChatRuntime, input: {
7769
7878
  handle: ProductConversationHandle | undefined;
7770
7879
  messageId: string;
7880
+ options?: {
7881
+ restartUpload?: boolean;
7882
+ };
7771
7883
  }): Promise<ImMessageActionResult>;
7772
7884
  /** 撤回当前线程中的一条消息;成功由 SDK 事件刷新气泡,失败通过稳定文案 key 提示。 */
7773
7885
  declare function recallMessage(runtime: ChatRuntime, input: {
@@ -8259,6 +8371,9 @@ declare function sendText(runtime: ChatRuntime, input: {
8259
8371
  */
8260
8372
  declare function sendMediaFile(runtime: ChatRuntime, input: {
8261
8373
  kind: 'image' | 'video' | 'file' | 'sticker';
8374
+ /** 文件配文与带配文批次标记,仅 file 消费。 */
8375
+ caption?: string;
8376
+ filesAlbum?: boolean;
8262
8377
  file: File;
8263
8378
  conversationId: string;
8264
8379
  conversationType: ConversationType | undefined;
@@ -8314,6 +8429,8 @@ declare function sendMediaFilesBatch(runtime: ChatRuntime, input: {
8314
8429
  /** 批量“作为文件发送”;即使选中图片或视频,也生成普通文件消息,不创建图片/视频预览气泡。 */
8315
8430
  declare function sendAsFilesBatch(runtime: ChatRuntime, input: {
8316
8431
  files: File[];
8432
+ /** 有配文时本批每项发 29,配文只挂数量上限内最后一个通过文件基础校验的文件。 */
8433
+ caption?: string;
8317
8434
  conversationId: string;
8318
8435
  conversationType: ConversationType | undefined;
8319
8436
  refMessageId?: string;
@@ -8328,10 +8445,13 @@ declare function cancelMediaUpload(runtime: ChatRuntime, messageId: string, hook
8328
8445
  /**
8329
8446
  * 重试当前线程中的一条失败消息。
8330
8447
  *
8331
- * 上传失败或取消的媒体从头重试原上传任务;已经完成媒体上传但消息发送失败,或普通文本失败时,重试
8448
+ * 上传失败时尝试续传,取消后重新上传未完成资源;restartUpload 只接受宿主明确确认后的完整重传。
8449
+ * 已经完成媒体上传但消息发送失败,或普通文本失败时,重试
8332
8450
  * SDK 待发送队列。两种路径都复用原消息 ID,不新增气泡。只有账号未变化且 SDK 接受重试时返回 `true`。
8333
8451
  */
8334
- declare function retryMessage(runtime: ChatRuntime, messageId: string, hooks: Pick<SendCommandHooks, 'getConversationHandle' | 'refreshActiveMessages' | 'setNote' | 't'>): Promise<boolean>;
8452
+ declare function retryMessage(runtime: ChatRuntime, messageId: string, hooks: Pick<SendCommandHooks, 'getConversationHandle' | 'refreshActiveMessages' | 'setNote' | 't'>, options?: {
8453
+ restartUpload?: boolean;
8454
+ }): Promise<boolean>;
8335
8455
 
8336
8456
  interface ImThreadDateMarkerMetric {
8337
8457
  key: string;
@@ -9100,5 +9220,5 @@ declare function resampleWaveform(data: readonly number[], targetCount: number):
9100
9220
  */
9101
9221
  declare function placeholderWaveform(seed: string, count: number): number[];
9102
9222
 
9103
- export { DEFAULT_EMOJI_ASSET_BASE, DEFAULT_LOADING_MINIMUM_VISIBLE_MS, DEFAULT_LOADING_SHOW_DELAY_MS, EMOJI_CATALOG, EMOJI_GAME_DICE_STABLE_KEY, EMOJI_GAME_RPS_STABLE_KEY, EMOJI_TOKEN_RE, MAX_BATCH_FILES, MAX_RECENT_EMOJI_COUNT, MINI_PROGRAM_GAME_PREVIEW_FALLBACK_HEIGHT, MINI_PROGRAM_GAME_PREVIEW_FALLBACK_WIDTH, MINI_PROGRAM_LANG_NUMBERS, SPIKE_STEP, UNICODE_EMOJI_CATALOG, blockReasonForChannelSession, blockReasonForChannelState, blockReasonForGroupState, blockReasonForSession, calculateMediaBox, canEditMessage, canPinChannelMessage, canPinGroupMessage, canPinMessage, canPromoteMediaPresentationSource, canRecallMessage, canTransmit, canTransmitByType, canTransmitContent, cancelMediaUpload, captureRuntimeClientOperation, captureRuntimeOperation, channelMiniProgramRelKey, classifyGifFile, classifyMediaFile, countUnreadConversations, createChatRuntime, createConversationPrefetchController, createDelayedLoadingIndicator, createEmojiMatcher, createLinkMatcher, createNewMessageBadgeController, createThreadItems, csvIncludes, decideChannelMiniProgramRelOpen, decideConversationAction, decideMemberTargetAction, decideMessageAction, emojiAssetUrl, emojiUrlByCode, fetchConversationFileBatch, fetchConversationImageBatch, fetchConversationMessageBatch, fetchConversationVideoBatch, fetchConversationVoiceBatch, fetchNextConversationSearchBatch, formatChatDateSeparator, formatConversationDisplayTime, formatConversationUnreadBadge, formatFileSize, formatMediaDuration, forward_service as forwardService, getFileExtension, getLocalDayKey, hasEmojiCandidate, hasLinkCandidate, highlightSegments, isGifFile, isMessageLocateScrollProtected, isMessageTailChangeFromOlderWindowTrim, isMessageViewportMeasurable, isMessageVisibleForNewMessageBadge, isMiniProgramShowTypeOpenable, isPinnedMessageProtected, isVoiceStorageConfigured, loadOlderUntilBoundary, mediaBatchBudgetBytes, media_service as mediaService, message_service as messageService, normalizeLinkHref, parseUnicodeEmojiCode, pinnedMessage_service as pinnedMessageService, placeholderWaveform, prependRecentEmoji, profile_service as profileService, read_service as readService, refreshPrependMessageAnchorPosition, replaceInterruptedMediaFile, requiresConversationEncryption, requiresForwardTypeConfirmation, resampleWaveform, resolveBestMediaPresentationSource, resolveCenteredMessageScrollTop, resolveChannelMemberAvatarUrl, resolveChannelMemberDisplayName, resolveChannelMiniProgramRelIcon, resolveChannelMiniProgramRelName, resolveChannelMiniProgramRelOpenSurface, resolveChannelMiniProgramRelUrl, resolveChannelPinnedGameCopy, resolveConversationListPresentation, resolveDisplayTimestamp, resolveEmojiToken, resolveFriendDisplayName, resolveImProfileAccessDestination, resolveImThreadActiveDate, resolveMediaPresentation, resolveMemberDisplayName, resolveMessageBodyKind, resolveMessageNotificationDecision, resolveMessageTimelineTimestamp, resolveMiniProgramFloatLinkUrl, resolveMiniProgramGamePreviewLayout, resolveMiniProgramOpenUrl, resolvePrependMessageAnchor, resolvePrependMessageAnchorAdjustment, resolvePrependMessageAnchorPosition, resolvePublicNickname, resolveQuotedMessagePresentation, resolveSenderAvatarUrl, resolveStandaloneEmojiMessage, resolveSurvivingMessageAnchorAdjustment, resolveUnicodeEmoji, resolveVisibleChannelMiniProgramRels, resolveVisibleMessageAnchorPositions, retryMessage, runMediaSendBatch, sendAsFilesBatch, sendBlockReasonForDecision, sendMediaAlbum, sendMediaFile, sendMediaFilesBatch, sendText, sendVoice, shouldCompleteInitialViewport, shouldFillInitialHistoryViewport, shouldFollowIncomingMessage, shouldLoadNewerHistoryPage, shouldPrefetchOlderHistory, shouldRestoreMessageViewportFocus, shouldShowChatDateSeparator, shouldTrackRemoteMessageForBadge, sortChannelMiniProgramFloatingItems, spikeCountForDuration, supportsConversationMention, unicodeEmojiTextFromCode };
9223
+ export { DEFAULT_EMOJI_ASSET_BASE, DEFAULT_LOADING_MINIMUM_VISIBLE_MS, DEFAULT_LOADING_SHOW_DELAY_MS, EMOJI_CATALOG, EMOJI_GAME_DICE_STABLE_KEY, EMOJI_GAME_RPS_STABLE_KEY, EMOJI_TOKEN_RE, MAX_BATCH_FILES, MAX_RECENT_EMOJI_COUNT, MINI_PROGRAM_GAME_PREVIEW_FALLBACK_HEIGHT, MINI_PROGRAM_GAME_PREVIEW_FALLBACK_WIDTH, MINI_PROGRAM_LANG_NUMBERS, SPIKE_STEP, UNICODE_EMOJI_CATALOG, blockReasonForChannelSession, blockReasonForChannelState, blockReasonForGroupState, blockReasonForSession, calculateMediaBox, canCopyMessageImage, canEditMessage, canPinChannelMessage, canPinGroupMessage, canPinMessage, canPromoteMediaPresentationSource, canRecallMessage, canTransmit, canTransmitByType, canTransmitContent, cancelMediaUpload, captureRuntimeClientOperation, captureRuntimeOperation, channelMiniProgramRelKey, classifyGifFile, classifyMediaFile, countUnreadConversations, createChatRuntime, createConversationPrefetchController, createDelayedLoadingIndicator, createEmojiMatcher, createLinkMatcher, createMessageImageCopySource, createNewMessageBadgeController, createThreadItems, csvIncludes, decideChannelMiniProgramRelOpen, decideConversationAction, decideMemberTargetAction, decideMessageAction, emojiAssetUrl, emojiUrlByCode, fetchConversationFileBatch, fetchConversationImageBatch, fetchConversationMessageBatch, fetchConversationVideoBatch, fetchConversationVoiceBatch, fetchNextConversationSearchBatch, formatChatDateSeparator, formatConversationDisplayTime, formatConversationUnreadBadge, formatFileSize, formatMediaDuration, forward_service as forwardService, getFileExtension, getLocalDayKey, getMessageCopyImageUrl, getMessageCopyText, hasEmojiCandidate, hasLinkCandidate, highlightSegments, isGifFile, isMessageLocateScrollProtected, isMessageTailChangeFromOlderWindowTrim, isMessageViewportMeasurable, isMessageVisibleForNewMessageBadge, isMiniProgramShowTypeOpenable, isPinnedMessageProtected, isVoiceStorageConfigured, loadOlderUntilBoundary, mediaBatchBudgetBytes, media_service as mediaService, message_service as messageService, normalizeLinkHref, parseUnicodeEmojiCode, pinnedMessage_service as pinnedMessageService, placeholderWaveform, prependRecentEmoji, profile_service as profileService, read_service as readService, refreshPrependMessageAnchorPosition, replaceInterruptedMediaFile, requiresConversationEncryption, requiresForwardTypeConfirmation, resampleWaveform, resolveBestMediaPresentationSource, resolveCenteredMessageScrollTop, resolveChannelMemberAvatarUrl, resolveChannelMemberDisplayName, resolveChannelMiniProgramRelIcon, resolveChannelMiniProgramRelName, resolveChannelMiniProgramRelOpenSurface, resolveChannelMiniProgramRelUrl, resolveChannelPinnedGameCopy, resolveConversationListPresentation, resolveDisplayTimestamp, resolveEmojiToken, resolveFriendDisplayName, resolveImProfileAccessDestination, resolveImThreadActiveDate, resolveMediaPresentation, resolveMemberDisplayName, resolveMessageBodyKind, resolveMessageNotificationDecision, resolveMessageTimelineTimestamp, resolveMiniProgramFloatLinkUrl, resolveMiniProgramGamePreviewLayout, resolveMiniProgramOpenUrl, resolvePrependMessageAnchor, resolvePrependMessageAnchorAdjustment, resolvePrependMessageAnchorPosition, resolvePublicNickname, resolveQuotedMessagePresentation, resolveSenderAvatarUrl, resolveStandaloneEmojiMessage, resolveSurvivingMessageAnchorAdjustment, resolveUnicodeEmoji, resolveVisibleChannelMiniProgramRels, resolveVisibleMessageAnchorPositions, retryMessage, runMediaSendBatch, sendAsFilesBatch, sendBlockReasonForDecision, sendMediaAlbum, sendMediaFile, sendMediaFilesBatch, sendText, sendVoice, shouldCompleteInitialViewport, shouldFillInitialHistoryViewport, shouldFollowIncomingMessage, shouldLoadNewerHistoryPage, shouldPrefetchOlderHistory, shouldRestoreMessageViewportFocus, shouldShowChatDateSeparator, shouldTrackRemoteMessageForBadge, sortChannelMiniProgramFloatingItems, spikeCountForDuration, supportsConversationMention, unicodeEmojiTextFromCode };
9104
9224
  export type { ApplySessionResult, BrowseMessagesInput, CanPinMessageInput, CenteredMessageScrollInput, ChannelMiniProgramOpenGame, ChannelMiniProgramRelOpenDecision, ChannelMiniProgramRelOpenSurface, ChatMediaMessageRef, ChatProfileAdapter, ChatRuntime, ChatRuntimeCredentials, ChatRuntimeFactories, ChatRuntimeHostDeps, ChatRuntimeOpResult, ConversationCapabilityAction, ConversationListPresentation, ConversationListPresentationLabels, ConversationListPresentationOptions, ConversationListPreviewMediaKind, ConversationListPreviewSegment, ConversationPrefetchController, ConversationPrefetchControllerOptions, ConversationSearchCategory, CreateThreadItemsInput, DelayedLoadingIndicator, DelayedLoadingIndicatorOptions, EmojiEntry, EmojiRecentItem, EmojiSegment, FormatTimeDisplayContext, ForwardCommandHooks, GifFileClassification, HighlightSegment, ImChannelMemberPresentation, ImChannelMentionPresentation, ImChannelProfilePresentation, ImForwardOperationResult, ImGroupMemberPresentation, ImMediaBatchSendResult, ImMessageActionResult, ImMessageBodyKind, ImMessageView, ImPinnedMessageActionResult, ImPinnedMessageSnapshot, ImProfileAccessDestination, ImQuotedMessagePresentation, ImTextResolver, ImThreadActiveDateSnapshot, ImThreadDateMarkerMetric, ImThreadDecoration, ImThreadEncryptionItem, ImThreadIntent, ImThreadItem, ImThreadPresentationAdapter, ImThreadReadActions, ImThreadReadTargetResolver, ImThreadViewportMetrics, IncomingMessageFollowInput, InitialHistoryViewportFillInput, InitialViewportCompletionInput, LinkSegment, MediaBatchBudgetOptions, MediaBatchLimitInfo, MediaFileClassification, MediaLimitItem, MediaObjectUrlLease, MediaPresentationFit, MediaPresentationPolicy, MediaPresentationRule, MediaPresentationSourceCandidate, MediaPresentationSourceQuality, MediaSendBatchResult, MemberTargetCapabilityAction, MemberTargetCapabilityInput, MessageCapabilityAction, MessageCapabilityInput, MessageLocateScrollProtectionInput, MessageNotificationDecision, MessageNotificationInput, MiniProgramGamePreviewInput, MiniProgramGamePreviewLayout, MiniProgramHostLocale, MiniProgramOpenUrlInput, NewMessageBadgeController, NewMessageBadgeCountListener, NewMessageBadgeVisibilityInput, NewerHistoryPageTriggerInput, OlderHistoryPrefetchInput, PrependAnchorCandidate, PrependAnchorViewport, PrependMessageAnchorPosition, RemoteMessageBadgeTrackingInput, ResolveMediaPresentationInput, ResolvedMediaPresentation, RichExtraSegment, RuntimeClientOperation, RuntimeOperation, SearchBatchResult, SearchFilesInput, SearchMessagesInput, SearchTextMessagesInput, SendCapabilityMode, SendCommandHooks, SendVoicePayload, SenderProfileEntry, ServiceNoteHooks, StandaloneEmojiMessage, UnicodeEmojiEntry, VisibleChannelMiniProgramRels };
package/dist/chat-kit.js CHANGED
@@ -1 +1 @@
1
- export{q as DEFAULT_LOADING_MINIMUM_VISIBLE_MS,p as DEFAULT_LOADING_SHOW_DELAY_MS,v as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_HEIGHT,u as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_WIDTH,e as MINI_PROGRAM_LANG_NUMBERS,M as SPIKE_STEP,I as calculateMediaBox,t as canPromoteMediaPresentationSource,z as captureRuntimeClientOperation,y as captureRuntimeOperation,n as channelMiniProgramRelKey,x as createConversationPrefetchController,r as createDelayedLoadingIndicator,G as createLinkMatcher,f as csvIncludes,d as decideChannelMiniProgramRelOpen,K as formatFileSize,J as formatMediaDuration,L as getFileExtension,F as hasLinkCandidate,D as highlightSegments,a as isMiniProgramShowTypeOpenable,A as mediaService,E as normalizeLinkHref,P as placeholderWaveform,B as readService,O as resampleWaveform,s as resolveBestMediaPresentationSource,h as resolveChannelMiniProgramRelIcon,g as resolveChannelMiniProgramRelName,j as resolveChannelMiniProgramRelOpenSurface,i as resolveChannelMiniProgramRelUrl,k as resolveChannelPinnedGameCopy,o as resolveConversationListPresentation,H as resolveMediaPresentation,c as resolveMiniProgramFloatLinkUrl,w as resolveMiniProgramGamePreviewLayout,b as resolveMiniProgramOpenUrl,C as resolveQuotedMessagePresentation,m as resolveVisibleChannelMiniProgramRels,l as sortChannelMiniProgramFloatingItems,N as spikeCountForDuration}from'./chunk-JA5TKCQ2.js';export{j as DEFAULT_EMOJI_ASSET_BASE,i as EMOJI_CATALOG,c as EMOJI_GAME_DICE_STABLE_KEY,b as EMOJI_GAME_RPS_STABLE_KEY,m as EMOJI_TOKEN_RE,N as MAX_BATCH_FILES,a as MAX_RECENT_EMOJI_COUNT,g as UNICODE_EMOJI_CATALOG,M as blockReasonForChannelSession,L as blockReasonForChannelState,T as blockReasonForGroupState,W as blockReasonForSession,G as canEditMessage,w as canPinChannelMessage,v as canPinGroupMessage,x as canPinMessage,F as canRecallMessage,da as cancelMediaUpload,R as classifyGifFile,Q as classifyMediaFile,s as countUnreadConversations,u as createChatRuntime,p as createEmojiMatcher,I as decideConversationAction,K as decideMemberTargetAction,J as decideMessageAction,l as emojiAssetUrl,n as emojiUrlByCode,Da as fetchConversationFileBatch,Ea as fetchConversationImageBatch,Ba as fetchConversationMessageBatch,Fa as fetchConversationVideoBatch,Ga as fetchConversationVoiceBatch,Ha as fetchNextConversationSearchBatch,r as formatConversationUnreadBadge,ga as forwardService,o as hasEmojiCandidate,S as isGifFile,y as isPinnedMessageProtected,_ as isVoiceStorageConfigured,O as mediaBatchBudgetBytes,la as messageService,e as parseUnicodeEmojiCode,qa as pinnedMessageService,d as prependRecentEmoji,Aa as profileService,Z as replaceInterruptedMediaFile,U as requiresConversationEncryption,B as resolveChannelMemberAvatarUrl,A as resolveChannelMemberDisplayName,k as resolveEmojiToken,E as resolveFriendDisplayName,ra as resolveImProfileAccessDestination,z as resolveMemberDisplayName,t as resolveMessageNotificationDecision,D as resolvePublicNickname,C as resolveSenderAvatarUrl,q as resolveStandaloneEmojiMessage,h as resolveUnicodeEmoji,ea as retryMessage,P as runMediaSendBatch,ca as sendAsFilesBatch,H as sendBlockReasonForDecision,aa as sendMediaAlbum,Y as sendMediaFile,ba as sendMediaFilesBatch,X as sendText,$ as sendVoice,V as supportsConversationMention,f as unicodeEmojiTextFromCode}from'./chunk-HSVVRLGM.js';export{C as createNewMessageBadgeController,i as createThreadItems,f as formatChatDateSeparator,e as formatConversationDisplayTime,c as getLocalDayKey,l as isMessageLocateScrollProtected,v as isMessageTailChangeFromOlderWindowTrim,k as isMessageViewportMeasurable,B as isMessageVisibleForNewMessageBadge,x as loadOlderUntilBoundary,p as refreshPrependMessageAnchorPosition,j as resolveCenteredMessageScrollTop,a as resolveDisplayTimestamp,g as resolveImThreadActiveDate,h as resolveMessageBodyKind,b as resolveMessageTimelineTimestamp,n as resolvePrependMessageAnchor,q as resolvePrependMessageAnchorAdjustment,o as resolvePrependMessageAnchorPosition,s as resolveSurvivingMessageAnchorAdjustment,r as resolveVisibleMessageAnchorPositions,t as shouldCompleteInitialViewport,y as shouldFillInitialHistoryViewport,u as shouldFollowIncomingMessage,z as shouldLoadNewerHistoryPage,m as shouldPrefetchOlderHistory,w as shouldRestoreMessageViewportFocus,d as shouldShowChatDateSeparator,A as shouldTrackRemoteMessageForBadge}from'./chunk-OYH7COTJ.js';import'./chunk-SEHHXKP7.js';import'./chunk-MIFIQ45I.js';import'./chunk-GAAHNTJM.js';export{va as canTransmit,ta as canTransmitByType,ua as canTransmitContent,sa as requiresForwardTypeConfirmation}from'./chunk-QQ23QYWK.js';import'./chunk-WOT6VMZA.js';
1
+ export{q as DEFAULT_LOADING_MINIMUM_VISIBLE_MS,p as DEFAULT_LOADING_SHOW_DELAY_MS,v as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_HEIGHT,u as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_WIDTH,e as MINI_PROGRAM_LANG_NUMBERS,Q as SPIKE_STEP,M as calculateMediaBox,C as canCopyMessageImage,t as canPromoteMediaPresentationSource,z as captureRuntimeClientOperation,y as captureRuntimeOperation,n as channelMiniProgramRelKey,x as createConversationPrefetchController,r as createDelayedLoadingIndicator,K as createLinkMatcher,D as createMessageImageCopySource,f as csvIncludes,d as decideChannelMiniProgramRelOpen,O as formatFileSize,N as formatMediaDuration,P as getFileExtension,B as getMessageCopyImageUrl,A as getMessageCopyText,J as hasLinkCandidate,H as highlightSegments,a as isMiniProgramShowTypeOpenable,E as mediaService,I as normalizeLinkHref,T as placeholderWaveform,F as readService,S as resampleWaveform,s as resolveBestMediaPresentationSource,h as resolveChannelMiniProgramRelIcon,g as resolveChannelMiniProgramRelName,j as resolveChannelMiniProgramRelOpenSurface,i as resolveChannelMiniProgramRelUrl,k as resolveChannelPinnedGameCopy,o as resolveConversationListPresentation,L as resolveMediaPresentation,c as resolveMiniProgramFloatLinkUrl,w as resolveMiniProgramGamePreviewLayout,b as resolveMiniProgramOpenUrl,G as resolveQuotedMessagePresentation,m as resolveVisibleChannelMiniProgramRels,l as sortChannelMiniProgramFloatingItems,R as spikeCountForDuration}from'./chunk-QK3UXZKZ.js';export{j as DEFAULT_EMOJI_ASSET_BASE,i as EMOJI_CATALOG,c as EMOJI_GAME_DICE_STABLE_KEY,b as EMOJI_GAME_RPS_STABLE_KEY,m as EMOJI_TOKEN_RE,N as MAX_BATCH_FILES,a as MAX_RECENT_EMOJI_COUNT,g as UNICODE_EMOJI_CATALOG,M as blockReasonForChannelSession,L as blockReasonForChannelState,T as blockReasonForGroupState,W as blockReasonForSession,G as canEditMessage,w as canPinChannelMessage,v as canPinGroupMessage,x as canPinMessage,F as canRecallMessage,da as cancelMediaUpload,R as classifyGifFile,Q as classifyMediaFile,s as countUnreadConversations,u as createChatRuntime,p as createEmojiMatcher,I as decideConversationAction,K as decideMemberTargetAction,J as decideMessageAction,l as emojiAssetUrl,n as emojiUrlByCode,Da as fetchConversationFileBatch,Ea as fetchConversationImageBatch,Ba as fetchConversationMessageBatch,Fa as fetchConversationVideoBatch,Ga as fetchConversationVoiceBatch,Ha as fetchNextConversationSearchBatch,r as formatConversationUnreadBadge,ga as forwardService,o as hasEmojiCandidate,S as isGifFile,y as isPinnedMessageProtected,_ as isVoiceStorageConfigured,O as mediaBatchBudgetBytes,la as messageService,e as parseUnicodeEmojiCode,qa as pinnedMessageService,d as prependRecentEmoji,Aa as profileService,Z as replaceInterruptedMediaFile,U as requiresConversationEncryption,B as resolveChannelMemberAvatarUrl,A as resolveChannelMemberDisplayName,k as resolveEmojiToken,E as resolveFriendDisplayName,ra as resolveImProfileAccessDestination,z as resolveMemberDisplayName,t as resolveMessageNotificationDecision,D as resolvePublicNickname,C as resolveSenderAvatarUrl,q as resolveStandaloneEmojiMessage,h as resolveUnicodeEmoji,ea as retryMessage,P as runMediaSendBatch,ca as sendAsFilesBatch,H as sendBlockReasonForDecision,aa as sendMediaAlbum,Y as sendMediaFile,ba as sendMediaFilesBatch,X as sendText,$ as sendVoice,V as supportsConversationMention,f as unicodeEmojiTextFromCode}from'./chunk-QDQNYCIH.js';export{C as createNewMessageBadgeController,i as createThreadItems,f as formatChatDateSeparator,e as formatConversationDisplayTime,c as getLocalDayKey,l as isMessageLocateScrollProtected,v as isMessageTailChangeFromOlderWindowTrim,k as isMessageViewportMeasurable,B as isMessageVisibleForNewMessageBadge,x as loadOlderUntilBoundary,p as refreshPrependMessageAnchorPosition,j as resolveCenteredMessageScrollTop,a as resolveDisplayTimestamp,g as resolveImThreadActiveDate,h as resolveMessageBodyKind,b as resolveMessageTimelineTimestamp,n as resolvePrependMessageAnchor,q as resolvePrependMessageAnchorAdjustment,o as resolvePrependMessageAnchorPosition,s as resolveSurvivingMessageAnchorAdjustment,r as resolveVisibleMessageAnchorPositions,t as shouldCompleteInitialViewport,y as shouldFillInitialHistoryViewport,u as shouldFollowIncomingMessage,z as shouldLoadNewerHistoryPage,m as shouldPrefetchOlderHistory,w as shouldRestoreMessageViewportFocus,d as shouldShowChatDateSeparator,A as shouldTrackRemoteMessageForBadge}from'./chunk-YEXLMW5J.js';import'./chunk-4HJR3NAM.js';import'./chunk-WQBCUQ6Q.js';import'./chunk-IEFK5A7T.js';export{va as canTransmit,ta as canTransmitByType,ua as canTransmitContent,sa as requiresForwardTypeConfirmation}from'./chunk-PJ2PW42T.js';import'./chunk-WOT6VMZA.js';