@mtkruto/node 0.192.0 → 0.194.0

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.
Files changed (200) hide show
  1. package/README.md +5 -5
  2. package/esm/0_errors.d.ts +6 -0
  3. package/esm/0_errors.d.ts.map +1 -1
  4. package/esm/0_errors.js +12 -0
  5. package/esm/3_types.d.ts +8 -2
  6. package/esm/3_types.d.ts.map +1 -1
  7. package/esm/3_types.js +8 -2
  8. package/esm/client/0_html.d.ts +2 -1
  9. package/esm/client/0_html.d.ts.map +1 -1
  10. package/esm/client/0_html.js +18 -16
  11. package/esm/client/0_markdown.d.ts +3 -2
  12. package/esm/client/0_markdown.d.ts.map +1 -1
  13. package/esm/client/0_markdown.js +9 -7
  14. package/esm/client/0_params.d.ts +51 -0
  15. package/esm/client/0_params.d.ts.map +1 -1
  16. package/esm/client/0_password.js +5 -5
  17. package/esm/client/0_storage_operations.d.ts +9 -0
  18. package/esm/client/0_storage_operations.d.ts.map +1 -1
  19. package/esm/client/0_storage_operations.js +40 -51
  20. package/esm/client/1_client_generic.d.ts +161 -13
  21. package/esm/client/1_client_generic.d.ts.map +1 -1
  22. package/esm/client/1_client_plain.d.ts.map +1 -1
  23. package/esm/client/1_client_plain.js +2 -1
  24. package/esm/client/2_client_encrypted.d.ts.map +1 -1
  25. package/esm/client/2_client_encrypted.js +2 -4
  26. package/esm/client/2_reaction_manager.d.ts +2 -1
  27. package/esm/client/2_reaction_manager.d.ts.map +1 -1
  28. package/esm/client/2_reaction_manager.js +7 -0
  29. package/esm/client/2_update_manager.d.ts +1 -1
  30. package/esm/client/2_update_manager.d.ts.map +1 -1
  31. package/esm/client/2_update_manager.js +13 -12
  32. package/esm/client/3_account_manager.d.ts +8 -2
  33. package/esm/client/3_account_manager.d.ts.map +1 -1
  34. package/esm/client/3_account_manager.js +54 -2
  35. package/esm/client/3_message_manager.js +6 -6
  36. package/esm/client/3_secret_chat_manager.d.ts +7 -2
  37. package/esm/client/3_secret_chat_manager.d.ts.map +1 -1
  38. package/esm/client/3_secret_chat_manager.js +65 -16
  39. package/esm/client/3_sticker_set_manager.d.ts +5 -0
  40. package/esm/client/3_sticker_set_manager.d.ts.map +1 -1
  41. package/esm/client/3_sticker_set_manager.js +40 -9
  42. package/esm/client/4_chat_manager.d.ts +9 -3
  43. package/esm/client/4_chat_manager.d.ts.map +1 -1
  44. package/esm/client/4_chat_manager.js +102 -3
  45. package/esm/client/4_checklist_manager.js +1 -1
  46. package/esm/client/4_context.d.ts +17 -3
  47. package/esm/client/4_context.d.ts.map +1 -1
  48. package/esm/client/4_context.js +38 -0
  49. package/esm/client/4_forum_manager.d.ts +1 -0
  50. package/esm/client/4_forum_manager.d.ts.map +1 -1
  51. package/esm/client/4_forum_manager.js +5 -0
  52. package/esm/client/6_client.d.ts +159 -11
  53. package/esm/client/6_client.d.ts.map +1 -1
  54. package/esm/client/6_client.js +223 -25
  55. package/esm/client/6_client_dispatcher.d.ts +160 -12
  56. package/esm/client/6_client_dispatcher.d.ts.map +1 -1
  57. package/esm/client/6_client_dispatcher.js +198 -8
  58. package/esm/storage/2_storage_indexed_db.js +5 -5
  59. package/esm/storage/2_storage_session_storage.js +2 -2
  60. package/esm/tl/0_utilities.d.ts +1 -1
  61. package/esm/tl/0_utilities.d.ts.map +1 -1
  62. package/esm/tl/0_utilities.js +3 -2
  63. package/esm/tl/1_tl_reader.js +1 -1
  64. package/esm/tl/1_tl_writer.js +1 -1
  65. package/esm/types/1_available_reactions.d.ts +3 -2
  66. package/esm/types/1_available_reactions.d.ts.map +1 -1
  67. package/esm/types/1_available_reactions.js +18 -1
  68. package/esm/types/1_channel_location.d.ts +27 -0
  69. package/esm/types/1_channel_location.d.ts.map +1 -0
  70. package/esm/types/1_channel_location.js +30 -0
  71. package/esm/types/1_sticker_set_p.d.ts +48 -0
  72. package/esm/types/1_sticker_set_p.d.ts.map +1 -0
  73. package/esm/types/1_sticker_set_p.js +73 -0
  74. package/esm/types/2_poll_voter.d.ts +19 -0
  75. package/esm/types/2_poll_voter.d.ts.map +1 -1
  76. package/esm/types/2_poll_voter.js +19 -0
  77. package/esm/types/3_chat_join_result.d.ts +40 -0
  78. package/esm/types/3_chat_join_result.d.ts.map +1 -0
  79. package/esm/types/3_chat_join_result.js +45 -0
  80. package/esm/types/3_resolved_invite_link.d.ts +63 -0
  81. package/esm/types/3_resolved_invite_link.d.ts.map +1 -0
  82. package/esm/types/3_resolved_invite_link.js +45 -0
  83. package/esm/types/3_rich_text_component.d.ts +24 -0
  84. package/esm/types/3_rich_text_component.d.ts.map +1 -1
  85. package/esm/types/4_page_block.d.ts +45 -1
  86. package/esm/types/4_page_block.d.ts.map +1 -1
  87. package/esm/types/B_recent_action.d.ts +244 -0
  88. package/esm/types/B_recent_action.d.ts.map +1 -0
  89. package/esm/types/B_recent_action.js +322 -0
  90. package/esm/types/B_topic_list_item.d.ts +22 -0
  91. package/esm/types/B_topic_list_item.d.ts.map +1 -1
  92. package/esm/types/B_topic_list_item.js +19 -0
  93. package/esm/types/C_recent_actions_entry.d.ts +32 -0
  94. package/esm/types/C_recent_actions_entry.d.ts.map +1 -0
  95. package/esm/types/C_recent_actions_entry.js +32 -0
  96. package/esm/types/C_topic_list.d.ts +20 -0
  97. package/esm/types/C_topic_list.d.ts.map +1 -1
  98. package/esm/types/C_topic_list.js +19 -0
  99. package/esm/utilities/1_auth.d.ts.map +1 -1
  100. package/esm/utilities/1_auth.js +2 -1
  101. package/package.json +1 -1
  102. package/script/0_errors.d.ts +6 -0
  103. package/script/0_errors.d.ts.map +1 -1
  104. package/script/0_errors.js +15 -1
  105. package/script/3_types.d.ts +8 -2
  106. package/script/3_types.d.ts.map +1 -1
  107. package/script/3_types.js +8 -2
  108. package/script/client/0_html.d.ts +2 -1
  109. package/script/client/0_html.d.ts.map +1 -1
  110. package/script/client/0_html.js +17 -15
  111. package/script/client/0_markdown.d.ts +3 -2
  112. package/script/client/0_markdown.d.ts.map +1 -1
  113. package/script/client/0_markdown.js +8 -6
  114. package/script/client/0_params.d.ts +51 -0
  115. package/script/client/0_params.d.ts.map +1 -1
  116. package/script/client/0_password.js +5 -5
  117. package/script/client/0_storage_operations.d.ts +9 -0
  118. package/script/client/0_storage_operations.d.ts.map +1 -1
  119. package/script/client/0_storage_operations.js +42 -53
  120. package/script/client/1_client_generic.d.ts +161 -13
  121. package/script/client/1_client_generic.d.ts.map +1 -1
  122. package/script/client/1_client_plain.d.ts.map +1 -1
  123. package/script/client/1_client_plain.js +2 -1
  124. package/script/client/2_client_encrypted.d.ts.map +1 -1
  125. package/script/client/2_client_encrypted.js +4 -6
  126. package/script/client/2_reaction_manager.d.ts +2 -1
  127. package/script/client/2_reaction_manager.d.ts.map +1 -1
  128. package/script/client/2_reaction_manager.js +7 -0
  129. package/script/client/2_update_manager.d.ts +1 -1
  130. package/script/client/2_update_manager.d.ts.map +1 -1
  131. package/script/client/2_update_manager.js +13 -12
  132. package/script/client/3_account_manager.d.ts +8 -2
  133. package/script/client/3_account_manager.d.ts.map +1 -1
  134. package/script/client/3_account_manager.js +54 -2
  135. package/script/client/3_message_manager.js +6 -6
  136. package/script/client/3_secret_chat_manager.d.ts +7 -2
  137. package/script/client/3_secret_chat_manager.d.ts.map +1 -1
  138. package/script/client/3_secret_chat_manager.js +65 -16
  139. package/script/client/3_sticker_set_manager.d.ts +5 -0
  140. package/script/client/3_sticker_set_manager.d.ts.map +1 -1
  141. package/script/client/3_sticker_set_manager.js +39 -8
  142. package/script/client/4_chat_manager.d.ts +9 -3
  143. package/script/client/4_chat_manager.d.ts.map +1 -1
  144. package/script/client/4_chat_manager.js +101 -2
  145. package/script/client/4_checklist_manager.js +1 -1
  146. package/script/client/4_context.d.ts +17 -3
  147. package/script/client/4_context.d.ts.map +1 -1
  148. package/script/client/4_context.js +38 -0
  149. package/script/client/4_forum_manager.d.ts +1 -0
  150. package/script/client/4_forum_manager.d.ts.map +1 -1
  151. package/script/client/4_forum_manager.js +5 -0
  152. package/script/client/6_client.d.ts +159 -11
  153. package/script/client/6_client.d.ts.map +1 -1
  154. package/script/client/6_client.js +223 -25
  155. package/script/client/6_client_dispatcher.d.ts +160 -12
  156. package/script/client/6_client_dispatcher.d.ts.map +1 -1
  157. package/script/client/6_client_dispatcher.js +198 -8
  158. package/script/storage/2_storage_indexed_db.js +5 -5
  159. package/script/storage/2_storage_session_storage.js +2 -2
  160. package/script/tl/0_utilities.d.ts +1 -1
  161. package/script/tl/0_utilities.d.ts.map +1 -1
  162. package/script/tl/0_utilities.js +3 -2
  163. package/script/tl/1_tl_reader.js +1 -1
  164. package/script/tl/1_tl_writer.js +1 -1
  165. package/script/types/1_available_reactions.d.ts +3 -2
  166. package/script/types/1_available_reactions.d.ts.map +1 -1
  167. package/script/types/1_available_reactions.js +18 -0
  168. package/script/types/1_channel_location.d.ts +27 -0
  169. package/script/types/1_channel_location.d.ts.map +1 -0
  170. package/script/types/1_channel_location.js +33 -0
  171. package/script/types/1_sticker_set_p.d.ts +48 -0
  172. package/script/types/1_sticker_set_p.d.ts.map +1 -0
  173. package/script/types/1_sticker_set_p.js +76 -0
  174. package/script/types/2_poll_voter.d.ts +19 -0
  175. package/script/types/2_poll_voter.d.ts.map +1 -1
  176. package/script/types/2_poll_voter.js +19 -0
  177. package/script/types/3_chat_join_result.d.ts +40 -0
  178. package/script/types/3_chat_join_result.d.ts.map +1 -0
  179. package/script/types/3_chat_join_result.js +48 -0
  180. package/script/types/3_resolved_invite_link.d.ts +63 -0
  181. package/script/types/3_resolved_invite_link.d.ts.map +1 -0
  182. package/script/types/3_resolved_invite_link.js +48 -0
  183. package/script/types/3_rich_text_component.d.ts +24 -0
  184. package/script/types/3_rich_text_component.d.ts.map +1 -1
  185. package/script/types/4_page_block.d.ts +45 -1
  186. package/script/types/4_page_block.d.ts.map +1 -1
  187. package/script/types/B_recent_action.d.ts +244 -0
  188. package/script/types/B_recent_action.d.ts.map +1 -0
  189. package/script/types/B_recent_action.js +325 -0
  190. package/script/types/B_topic_list_item.d.ts +22 -0
  191. package/script/types/B_topic_list_item.d.ts.map +1 -1
  192. package/script/types/B_topic_list_item.js +19 -0
  193. package/script/types/C_recent_actions_entry.d.ts +32 -0
  194. package/script/types/C_recent_actions_entry.d.ts.map +1 -0
  195. package/script/types/C_recent_actions_entry.js +35 -0
  196. package/script/types/C_topic_list.d.ts +20 -0
  197. package/script/types/C_topic_list.d.ts.map +1 -1
  198. package/script/types/C_topic_list.js +19 -0
  199. package/script/utilities/1_auth.d.ts.map +1 -1
  200. package/script/utilities/1_auth.js +2 -1
@@ -156,6 +156,42 @@ export class ClientDispatcher extends Composer {
156
156
  async sendCode(phoneNumber) {
157
157
  return await this.#dispatch("sendCode", phoneNumber);
158
158
  }
159
+ /**
160
+ * Allow unpaid messages from a user. User-only.
161
+ *
162
+ * @method ac
163
+ * @param userId The identifier of the user.
164
+ */
165
+ async allowUnpaidMessagesFromUser(userId, params) {
166
+ return await this.#dispatch("allowUnpaidMessagesFromUser", userId, params);
167
+ }
168
+ /**
169
+ * Disallow unpaid messages from a user. User-only.
170
+ *
171
+ * @method ac
172
+ * @param userId The identifier of the user.
173
+ */
174
+ async disallowUnpaidMessagesFromUser(userId, params) {
175
+ return await this.#dispatch("disallowUnpaidMessagesFromUser", userId, params);
176
+ }
177
+ /**
178
+ * Allow a bot to set custom emoji status. User-only.
179
+ *
180
+ * @param botId The user identifier of the bot.
181
+ * @method ac
182
+ */
183
+ async allowBotToSetCustomEmojiStatus(botId) {
184
+ return await this.#dispatch("allowBotToSetCustomEmojiStatus", botId);
185
+ }
186
+ /**
187
+ * Disallow a bot to set custom emoji status. User-only.
188
+ *
189
+ * @param botId The user identifier of the bot.
190
+ * @method ac
191
+ */
192
+ async disallowBotToSetCustomEmojiStatus(botId) {
193
+ return await this.#dispatch("disallowBotToSetCustomEmojiStatus", botId);
194
+ }
159
195
  /**
160
196
  * Check if a code entered by the user was the same as the verification code.
161
197
  *
@@ -268,6 +304,14 @@ export class ClientDispatcher extends Composer {
268
304
  async checkUsername(username, params) {
269
305
  return await this.#dispatch("checkUsername", username, params);
270
306
  }
307
+ /**
308
+ * Clear recent emoji statuses. User-only.
309
+ *
310
+ * @method ac
311
+ */
312
+ async clearRecentEmojiStatuses() {
313
+ return await this.#dispatch("clearRecentEmojiStatuses");
314
+ }
271
315
  /**
272
316
  * Delete the current account. User-only.
273
317
  *
@@ -319,6 +363,14 @@ export class ClientDispatcher extends Composer {
319
363
  async getAccountTtl() {
320
364
  return await this.#dispatch("getAccountTtl");
321
365
  }
366
+ /**
367
+ * Get application configuration. User-only.
368
+ *
369
+ * @method ac
370
+ */
371
+ async getApplicationConfiguration() {
372
+ return await this.#dispatch("getApplicationConfiguration");
373
+ }
322
374
  /**
323
375
  * Get app support. User-only.
324
376
  *
@@ -411,6 +463,14 @@ export class ClientDispatcher extends Composer {
411
463
  async getProfilePhotos(userId, params) {
412
464
  return await this.#dispatch("getProfilePhotos", userId, params);
413
465
  }
466
+ /**
467
+ * Get recent emoji statuses. User-only.
468
+ *
469
+ * @method ac
470
+ */
471
+ async getRecentEmojiStatuses() {
472
+ return await this.#dispatch("getRecentEmojiStatuses");
473
+ }
414
474
  /**
415
475
  * Get timezones. User-only.
416
476
  *
@@ -792,7 +852,7 @@ export class ClientDispatcher extends Composer {
792
852
  return await this.#dispatch("deleteMessages", chatId, messageIds, params);
793
853
  }
794
854
  /**
795
- * Delete a scheduled message.
855
+ * Delete a scheduled message. User-only.
796
856
  *
797
857
  * @method ms
798
858
  * @param chatId The identifier of a chat.
@@ -802,7 +862,7 @@ export class ClientDispatcher extends Composer {
802
862
  return await this.#dispatch("deleteScheduledMessage", chatId, messageId);
803
863
  }
804
864
  /**
805
- * Delete multiple scheduled messages.
865
+ * Delete multiple scheduled messages. User-only.
806
866
  *
807
867
  * @method ms
808
868
  * @param chatId The identifier of a chat.
@@ -833,7 +893,7 @@ export class ClientDispatcher extends Composer {
833
893
  return await this.#dispatch("editInlineMessageLiveLocation", inlineMessageId, latitude, longitude, params);
834
894
  }
835
895
  /**
836
- * Edit an inline message's media.
896
+ * Edit an inline message's media. User-only.
837
897
  *
838
898
  * @method ms
839
899
  * @param inlineMessageId The identifier of the inline message.
@@ -1108,7 +1168,7 @@ export class ClientDispatcher extends Composer {
1108
1168
  return await this.#dispatch("getSavedChats", params);
1109
1169
  }
1110
1170
  /**
1111
- * Get messages saved from a specific chat.
1171
+ * Get messages saved from a specific chat. User-only.
1112
1172
  *
1113
1173
  * @method ms
1114
1174
  * @param chatId The identifier of a chat.
@@ -1174,6 +1234,17 @@ export class ClientDispatcher extends Composer {
1174
1234
  async removeStickerFromRecents(fileId) {
1175
1235
  return await this.#dispatch("removeStickerFromRecents", fileId);
1176
1236
  }
1237
+ /**
1238
+ * Report a message reaction. User-only.
1239
+ *
1240
+ * @method ms
1241
+ * @param chatId The identifier of the chat including the messages.
1242
+ * @param messageId The identifiers of the message.
1243
+ * @param reactionActorId The identifier of the chat that made the reaction.
1244
+ */
1245
+ async reportReaction(chatId, messageId, reactionActorId) {
1246
+ return await this.#dispatch("reportReaction", chatId, messageId, reactionActorId);
1247
+ }
1177
1248
  /**
1178
1249
  * Retrieve a message using its link.
1179
1250
  *
@@ -1399,7 +1470,7 @@ export class ClientDispatcher extends Composer {
1399
1470
  return await this.#dispatch("sendRichTextDraft", chatId, draftId, richText, params);
1400
1471
  }
1401
1472
  /**
1402
- * Send a scheduled message before its schedule.
1473
+ * Send a scheduled message before its schedule. User-only.
1403
1474
  *
1404
1475
  * @method ms
1405
1476
  * @param chatId The identifier of a chat.
@@ -1409,7 +1480,7 @@ export class ClientDispatcher extends Composer {
1409
1480
  return await this.#dispatch("sendScheduledMessage", chatId, messageId);
1410
1481
  }
1411
1482
  /**
1412
- * Send multiple scheduled messages before their schedule.
1483
+ * Send multiple scheduled messages before their schedule. User-only.
1413
1484
  *
1414
1485
  * @method ms
1415
1486
  * @param chatId The identifier of a chat.
@@ -1878,6 +1949,15 @@ export class ClientDispatcher extends Composer {
1878
1949
  async banChatMember(chatId, memberId, params) {
1879
1950
  return await this.#dispatch("banChatMember", chatId, memberId, params);
1880
1951
  }
1952
+ /**
1953
+ * Add a single user to a chat. User-only.
1954
+ *
1955
+ * @method ch
1956
+ * @param chatId The identifier of the chat to boost.
1957
+ */
1958
+ async boostChat(chatId, params) {
1959
+ return await this.#dispatch("boostChat", chatId, params);
1960
+ }
1881
1961
  /**
1882
1962
  * Close a chat previously opened by openChat.
1883
1963
  *
@@ -1994,6 +2074,26 @@ export class ClientDispatcher extends Composer {
1994
2074
  async deleteChatStickerSet(chatId) {
1995
2075
  return await this.#dispatch("deleteChatStickerSet", chatId);
1996
2076
  }
2077
+ /**
2078
+ * Delete revoked invite links. User-only.
2079
+ *
2080
+ * @method ch
2081
+ * @param chatId The identifier of the chat.
2082
+ * @param userId The user identifier of a chat admin.
2083
+ */
2084
+ async deleteRevokedInviteLinks(chatId, userId) {
2085
+ return await this.#dispatch("deleteRevokedInviteLinks", chatId, userId);
2086
+ }
2087
+ /**
2088
+ * Delete a forum topic.
2089
+ *
2090
+ * @method ch
2091
+ * @param chatId The identifier of the chat.
2092
+ * @param topicId The identifier of the topic.
2093
+ */
2094
+ async deleteTopic(chatId, topicId) {
2095
+ return await this.#dispatch("deleteTopic", chatId, topicId);
2096
+ }
1997
2097
  /**
1998
2098
  * Disable automatic anti-spam in a group. User-only.
1999
2099
  *
@@ -2142,6 +2242,15 @@ export class ClientDispatcher extends Composer {
2142
2242
  async enableTopics(chatId, isShownAsTabs) {
2143
2243
  return await this.#dispatch("enableTopics", chatId, isShownAsTabs);
2144
2244
  }
2245
+ /**
2246
+ * Get administered chats. User-only.
2247
+ *
2248
+ * @method ch
2249
+ * @returns A list of administered chats.
2250
+ */
2251
+ async getAdministeredChats(params) {
2252
+ return await this.#dispatch("getAdministeredChats", params);
2253
+ }
2145
2254
  /**
2146
2255
  * Get a chat.
2147
2256
  *
@@ -2279,6 +2388,15 @@ export class ClientDispatcher extends Composer {
2279
2388
  async getPinnedChats(from) {
2280
2389
  return await this.#dispatch("getPinnedChats", from);
2281
2390
  }
2391
+ /**
2392
+ * Get the recent actions of a channel or a supergroup. User-only.
2393
+ *
2394
+ * @method ch
2395
+ * @param chatId The identifier of the chat.
2396
+ */
2397
+ async getRecentActions(chatId, params) {
2398
+ return await this.#dispatch("getRecentActions", chatId, params);
2399
+ }
2282
2400
  /**
2283
2401
  * Get recommended channels. User-only.
2284
2402
  *
@@ -2364,6 +2482,15 @@ export class ClientDispatcher extends Composer {
2364
2482
  async joinChat(chatId) {
2365
2483
  return await this.#dispatch("joinChat", chatId);
2366
2484
  }
2485
+ /**
2486
+ * Join a chat using an invite link. User-only.
2487
+ *
2488
+ * @method ch
2489
+ * @param inviteLink The chat's invite link.
2490
+ */
2491
+ async joinChatByInviteLink(inviteLink) {
2492
+ return await this.#dispatch("joinChatByInviteLink", inviteLink);
2493
+ }
2367
2494
  /**
2368
2495
  * Kick a member from a chat. Same as a banChatMember call followed by unbanChatMember.
2369
2496
  *
@@ -2459,6 +2586,15 @@ export class ClientDispatcher extends Composer {
2459
2586
  async reportChat(chatId, reason, params) {
2460
2587
  return await this.#dispatch("reportChat", chatId, reason, params);
2461
2588
  }
2589
+ /**
2590
+ * Resolve an invite link. User-only.
2591
+ *
2592
+ * @method ch
2593
+ * @param inviteLink The invite link to resolve.
2594
+ */
2595
+ async resolveInviteLink(inviteLink) {
2596
+ return await this.#dispatch("resolveInviteLink", inviteLink);
2597
+ }
2462
2598
  /**
2463
2599
  * Set a chat's available reactions. User-only.
2464
2600
  *
@@ -3232,7 +3368,7 @@ export class ClientDispatcher extends Composer {
3232
3368
  return await this.#dispatch("getContacts");
3233
3369
  }
3234
3370
  /**
3235
- * Set a contact note.
3371
+ * Set a contact note. User-only.
3236
3372
  *
3237
3373
  * @method co
3238
3374
  * @param userId The identifier of the user to update the note for.
@@ -3384,6 +3520,16 @@ export class ClientDispatcher extends Composer {
3384
3520
  async removeGiftsFromCollection(chatId, collectionId, gifts) {
3385
3521
  return await this.#dispatch("removeGiftsFromCollection", chatId, collectionId, gifts);
3386
3522
  }
3523
+ /**
3524
+ * Reorder gift collections. User-only.
3525
+ *
3526
+ * @method gc
3527
+ * @param chatId The identifier of the chat that includes the gift collections.
3528
+ * @param collectionIds The identifiers of the gift collections.
3529
+ */
3530
+ async reorderGiftCollections(chatId, collectionIds) {
3531
+ return await this.#dispatch("reorderGiftCollections", chatId, collectionIds);
3532
+ }
3387
3533
  /**
3388
3534
  * Reorder gifts in a gift collection. User-only.
3389
3535
  *
@@ -3439,6 +3585,15 @@ export class ClientDispatcher extends Composer {
3439
3585
  //
3440
3586
  // ========================= STICKER SETS ========================= //
3441
3587
  //
3588
+ /**
3589
+ * Add a sticker set. User-only.
3590
+ *
3591
+ * @method ss
3592
+ * @param slug The slug of the sticker set or its link.
3593
+ */
3594
+ async addStickerSet(slug) {
3595
+ return await this.#dispatch("addStickerSet", slug);
3596
+ }
3442
3597
  /**
3443
3598
  * Add a sticker to a sticker set.
3444
3599
  *
@@ -3449,6 +3604,15 @@ export class ClientDispatcher extends Composer {
3449
3604
  async addStickerToStickerSet(slug, sticker, params) {
3450
3605
  return await this.#dispatch("addStickerToStickerSet", slug, sticker, params);
3451
3606
  }
3607
+ /**
3608
+ * Archive a sticker set. User-only.
3609
+ *
3610
+ * @method ss
3611
+ * @param slug The slug of the sticker set or its link.
3612
+ */
3613
+ async archiveStickerSet(slug) {
3614
+ return await this.#dispatch("archiveStickerSet", slug);
3615
+ }
3452
3616
  /**
3453
3617
  * Change the position of a sticker in its set.
3454
3618
  *
@@ -3489,6 +3653,14 @@ export class ClientDispatcher extends Composer {
3489
3653
  async deleteStickerSet(slug) {
3490
3654
  return await this.#dispatch("deleteStickerSet", slug);
3491
3655
  }
3656
+ /**
3657
+ * Get added sticker sets. User-only.
3658
+ *
3659
+ * @method ss
3660
+ */
3661
+ async getAddedStickerSets() {
3662
+ return await this.#dispatch("getAddedStickerSets");
3663
+ }
3492
3664
  /**
3493
3665
  * Get a dice sticker set.
3494
3666
  *
@@ -3516,6 +3688,15 @@ export class ClientDispatcher extends Composer {
3516
3688
  async removeStickerFromStickerSet(fileId) {
3517
3689
  return await this.#dispatch("removeStickerFromStickerSet", fileId);
3518
3690
  }
3691
+ /**
3692
+ * Remove a sticker set. User-only.
3693
+ *
3694
+ * @method ss
3695
+ * @param slug The slug of the sticker set or its link.
3696
+ */
3697
+ async removeStickerSet(slug) {
3698
+ return await this.#dispatch("removeStickerSet", slug);
3699
+ }
3519
3700
  /**
3520
3701
  * Replace a sticker's emoji.
3521
3702
  *
@@ -3570,12 +3751,21 @@ export class ClientDispatcher extends Composer {
3570
3751
  * Suggest a sticker set slug from its title.
3571
3752
  *
3572
3753
  * @method ss
3573
- * @param title A title of a sticker set.
3754
+ * @param title A sticker set title.
3574
3755
  * @returns The suggested slug.
3575
3756
  */
3576
3757
  async suggestStickerSetSlug(title) {
3577
3758
  return await this.#dispatch("suggestStickerSetSlug", title);
3578
3759
  }
3760
+ /**
3761
+ * Unarchive a sticker set. User-only.
3762
+ *
3763
+ * @method ss
3764
+ * @param slug The slug of the sticker set or its link.
3765
+ */
3766
+ async unarchiveStickerSet(slug) {
3767
+ return await this.#dispatch("unarchiveStickerSet", slug);
3768
+ }
3579
3769
  //
3580
3770
  // ========================= MANAGED BOTS ========================= //
3581
3771
  //
@@ -27,7 +27,7 @@ export class StorageIndexedDB {
27
27
  #supportsFiles;
28
28
  constructor(name, params) {
29
29
  if (typeof indexedDB === "undefined") {
30
- throw new Error("Unavailable in current environment");
30
+ throw new TypeError("Unavailable in current environment");
31
31
  }
32
32
  this.#name = name;
33
33
  this.#supportsFiles = params?.storeFiles ?? true;
@@ -74,7 +74,7 @@ export class StorageIndexedDB {
74
74
  set(k, v, tx_) {
75
75
  k = this.#fixKey(k);
76
76
  if (!this.database) {
77
- throw new Error("Not initialized");
77
+ throw new TypeError("Not initialized.");
78
78
  }
79
79
  const store = (tx_ ?? this.database
80
80
  .transaction(KV_OBJECT_STORE, "readwrite"))
@@ -99,7 +99,7 @@ export class StorageIndexedDB {
99
99
  k = this.#fixKey(k);
100
100
  }
101
101
  if (!this.database) {
102
- throw new Error("Not initialized");
102
+ throw new TypeError("Not initialized.");
103
103
  }
104
104
  const tx = (tx_ ?? this.database
105
105
  .transaction(KV_OBJECT_STORE, "readonly"))
@@ -123,7 +123,7 @@ export class StorageIndexedDB {
123
123
  filter.end = this.#fixKey(filter.end);
124
124
  }
125
125
  if (!this.database) {
126
- throw new Error("Not initialized");
126
+ throw new TypeError("Not initialized.");
127
127
  }
128
128
  if (params?.limit !== undefined && params.limit <= 0) {
129
129
  params.limit = 1;
@@ -162,7 +162,7 @@ export class StorageIndexedDB {
162
162
  }
163
163
  async incr(key, by) {
164
164
  if (!this.database) {
165
- throw new Error("Not initialized");
165
+ throw new TypeError("Not initialized.");
166
166
  }
167
167
  const tx = this.database
168
168
  .transaction(KV_OBJECT_STORE, "readwrite");
@@ -22,10 +22,10 @@ export class StorageSessionStorage {
22
22
  #prefix;
23
23
  constructor(prefix) {
24
24
  if (typeof sessionStorage === "undefined") {
25
- throw new Error("Unavailable in current environment");
25
+ throw new TypeError("Unavailable in current environment.");
26
26
  }
27
27
  if (prefix.length <= 0) {
28
- throw new Error("Empty prefix");
28
+ throw new TypeError("Empty prefix.");
29
29
  }
30
30
  this.#prefix = prefix;
31
31
  }
@@ -19,7 +19,7 @@
19
19
  */
20
20
  export declare function isOptionalParam(ntype: string): boolean;
21
21
  export declare function getOptionalParamInnerType(ntype: string): string;
22
- export declare function analyzeOptionalParam(ntype: string): {
22
+ export declare function analyzeOptionalParam(ntype: string, path: string[]): {
23
23
  flagField: string;
24
24
  bitIndex: number;
25
25
  };
@@ -1 +1 @@
1
- {"version":3,"file":"0_utilities.d.ts","sourceRoot":"","sources":["../../src/tl/0_utilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEtD;AACD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/D;AACD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAY3F;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAgClD;AAOD,wBAAgB,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,GAAG,CAkB3C;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK7D;AAID,eAAO,MAAM,CAAC,MAAM,CAAC;AACrB,eAAO,MAAM,MAAM,YAAa,CAAC;AACjC,eAAO,MAAM,SAAS,aAAa,CAAC;AACpC,eAAO,MAAM,UAAU,aAAa,CAAC;AAErC,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAEhE"}
1
+ {"version":3,"file":"0_utilities.d.ts","sourceRoot":"","sources":["../../src/tl/0_utilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEtD;AACD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/D;AACD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAY3G;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAgClD;AAOD,wBAAgB,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,GAAG,CAkB3C;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK7D;AAID,eAAO,MAAM,CAAC,MAAM,CAAC;AACrB,eAAO,MAAM,MAAM,YAAa,CAAC;AACjC,eAAO,MAAM,SAAS,aAAa,CAAC;AACpC,eAAO,MAAM,UAAU,aAAa,CAAC;AAErC,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAEhE"}
@@ -18,15 +18,16 @@
18
18
  * along with this program. If not, see <https://www.gnu.org/licenses/>.
19
19
  */
20
20
  import { assertEquals, assertFalse, encodeBase64, encodeHex } from "../0_deps.js";
21
+ import { TLError } from "../0_errors.js";
21
22
  export function isOptionalParam(ntype) {
22
23
  return ntype.includes("?");
23
24
  }
24
25
  export function getOptionalParamInnerType(ntype) {
25
26
  return ntype.split("?")[1];
26
27
  }
27
- export function analyzeOptionalParam(ntype) {
28
+ export function analyzeOptionalParam(ntype, path) {
28
29
  if (!isOptionalParam(ntype)) {
29
- throw new Error("Parameter not optional");
30
+ throw new TLError(`Parameter ${ntype} is not optional.`, path);
30
31
  }
31
32
  const flagField = ntype.split(".")[0];
32
33
  assertEquals(typeof flagField, "string");
@@ -148,7 +148,7 @@ export class TLReader {
148
148
  const flagFields = {};
149
149
  for (const [name, fieldType] of desc[1]) {
150
150
  if (isOptionalParam(fieldType)) {
151
- const { flagField, bitIndex } = analyzeOptionalParam(fieldType);
151
+ const { flagField, bitIndex } = analyzeOptionalParam(fieldType, this.#path);
152
152
  const bits = flagFields[flagField];
153
153
  if ((bits & (1 << bitIndex)) === 0) {
154
154
  continue;
@@ -119,7 +119,7 @@ export class TLWriter {
119
119
  const flagField_ = name;
120
120
  for (const [name, type] of parameters_) {
121
121
  if (isOptionalParam(type)) {
122
- const { flagField, bitIndex } = analyzeOptionalParam(type);
122
+ const { flagField, bitIndex } = analyzeOptionalParam(type, this.#path);
123
123
  if (flagField === flagField_) {
124
124
  if (type__[name] !== undefined) {
125
125
  flags |= 1 << bitIndex;
@@ -35,7 +35,7 @@ export interface AvailableReactionsSome {
35
35
  /** The allowed reactions. */
36
36
  reactions: Reaction[];
37
37
  /** The maximum number of allowed reactions on a single message. */
38
- maxReactionCount: number;
38
+ maxReactionCount?: number;
39
39
  }
40
40
  /**
41
41
  * An available reactions value allowing all types of reactions.
@@ -44,9 +44,10 @@ export interface AvailableReactionsSome {
44
44
  export interface AvailableReactionsAll {
45
45
  type: "all";
46
46
  /** The maximum number of allowed reactions on a single message. */
47
- maxReactionCount: number;
47
+ maxReactionCount?: number;
48
48
  }
49
49
  /** A chat's available reactions. */
50
50
  export type AvailableReactions = AvailableReactionsNone | AvailableReactionsSome | AvailableReactionsAll;
51
+ export declare function constructAvailableReactions(cr: Api.ChatReactions): AvailableReactions;
51
52
  export declare function availableReactionsToTlObject(chatAvailableReactions: AvailableReactions): Api.ChatReactions;
52
53
  //# sourceMappingURL=1_available_reactions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"1_available_reactions.d.ts","sourceRoot":"","sources":["../../src/types/1_available_reactions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,QAAQ,EAAsB,MAAM,iBAAiB,CAAC;AAEpE;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,mEAAmE;IACnE,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,KAAK,CAAC;IACZ,mEAAmE;IACnE,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,oCAAoC;AACpC,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,GAAG,sBAAsB,GAAG,qBAAqB,CAAC;AAEzG,wBAAgB,4BAA4B,CAAC,sBAAsB,EAAE,kBAAkB,GAAG,GAAG,CAAC,aAAa,CAS1G"}
1
+ {"version":3,"file":"1_available_reactions.d.ts","sourceRoot":"","sources":["../../src/types/1_available_reactions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAqB,KAAK,QAAQ,EAAsB,MAAM,iBAAiB,CAAC;AAEvF;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,KAAK,CAAC;IACZ,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,oCAAoC;AACpC,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,GAAG,sBAAsB,GAAG,qBAAqB,CAAC;AAEzG,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,GAAG,CAAC,aAAa,GAAG,kBAAkB,CAgBrF;AAED,wBAAgB,4BAA4B,CAAC,sBAAsB,EAAE,kBAAkB,GAAG,GAAG,CAAC,aAAa,CAS1G"}
@@ -17,7 +17,24 @@
17
17
  * You should have received a copy of the GNU Lesser General Public License
18
18
  * along with this program. If not, see <https://www.gnu.org/licenses/>.
19
19
  */
20
- import { reactionToTlObject } from "./0_reaction.js";
20
+ import { constructReaction, reactionToTlObject } from "./0_reaction.js";
21
+ export function constructAvailableReactions(cr) {
22
+ switch (cr._) {
23
+ case "chatReactionsNone":
24
+ return {
25
+ type: "none",
26
+ };
27
+ case "chatReactionsAll":
28
+ return {
29
+ type: "all",
30
+ };
31
+ case "chatReactionsSome":
32
+ return {
33
+ type: "some",
34
+ reactions: cr.reactions.map(constructReaction),
35
+ };
36
+ }
37
+ }
21
38
  export function availableReactionsToTlObject(chatAvailableReactions) {
22
39
  switch (chatAvailableReactions.type) {
23
40
  case "none":
@@ -0,0 +1,27 @@
1
+ /**
2
+ * MTKruto - Cross-runtime JavaScript library for building Telegram clients
3
+ * Copyright (C) 2023-2026 Roj <https://roj.im/>
4
+ *
5
+ * This file is part of MTKruto.
6
+ *
7
+ * This program is free software: you can redistribute it and/or modify
8
+ * it under the terms of the GNU Lesser General Public License as published by
9
+ * the Free Software Foundation, either version 3 of the License, or
10
+ * (at your option) any later version.
11
+ *
12
+ * This program is distributed in the hope that it will be useful,
13
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ * GNU Lesser General Public License for more details.
16
+ *
17
+ * You should have received a copy of the GNU Lesser General Public License
18
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
19
+ */
20
+ import { Api } from "../2_tl.js";
21
+ import { type Location } from "./0_location.js";
22
+ export interface ChannelLocation {
23
+ location?: Location;
24
+ address: string;
25
+ }
26
+ export declare function constructChannelLocation(cl: Api.channelLocation): ChannelLocation;
27
+ //# sourceMappingURL=1_channel_location.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1_channel_location.d.ts","sourceRoot":"","sources":["../../src/types/1_channel_location.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAqB,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEnE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,GAAG,CAAC,eAAe,GAAG,eAAe,CAOjF"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * MTKruto - Cross-runtime JavaScript library for building Telegram clients
3
+ * Copyright (C) 2023-2026 Roj <https://roj.im/>
4
+ *
5
+ * This file is part of MTKruto.
6
+ *
7
+ * This program is free software: you can redistribute it and/or modify
8
+ * it under the terms of the GNU Lesser General Public License as published by
9
+ * the Free Software Foundation, either version 3 of the License, or
10
+ * (at your option) any later version.
11
+ *
12
+ * This program is distributed in the hope that it will be useful,
13
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ * GNU Lesser General Public License for more details.
16
+ *
17
+ * You should have received a copy of the GNU Lesser General Public License
18
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
19
+ */
20
+ import { cleanObject } from "../1_utilities.js";
21
+ import { Api } from "../2_tl.js";
22
+ import { constructLocation } from "./0_location.js";
23
+ export function constructChannelLocation(cl) {
24
+ const location = Api.is("geoPoint", cl.geo_point) ? constructLocation(cl.geo_point) : undefined;
25
+ const address = cl.address;
26
+ return cleanObject({
27
+ location,
28
+ address,
29
+ });
30
+ }
@@ -0,0 +1,48 @@
1
+ /**
2
+ * MTKruto - Cross-runtime JavaScript library for building Telegram clients
3
+ * Copyright (C) 2023-2026 Roj <https://roj.im/>
4
+ *
5
+ * This file is part of MTKruto.
6
+ *
7
+ * This program is free software: you can redistribute it and/or modify
8
+ * it under the terms of the GNU Lesser General Public License as published by
9
+ * the Free Software Foundation, either version 3 of the License, or
10
+ * (at your option) any later version.
11
+ *
12
+ * This program is distributed in the hope that it will be useful,
13
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ * GNU Lesser General Public License for more details.
16
+ *
17
+ * You should have received a copy of the GNU Lesser General Public License
18
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
19
+ */
20
+ import { Api } from "../2_tl.js";
21
+ import type { Thumbnail } from "./0_thumbnail.js";
22
+ /** A partial sticker (or emoji) set. */
23
+ export interface StickerSetP {
24
+ /** The unique identifier of the set. */
25
+ id: string;
26
+ /** The set's slug. */
27
+ name: string;
28
+ /** The set's title. */
29
+ title: string;
30
+ /** The type of the set. */
31
+ type: "regular" | "mask" | "customEmoji";
32
+ /** Thumbnails if available. */
33
+ thumbnails: Thumbnail[];
34
+ /** Whether the emojis in the set are adaptive. */
35
+ isAdaptive: boolean;
36
+ /** Whether the emojis in the set can be set as channel status. */
37
+ canSetAsChannelStatus: boolean;
38
+ /** Whether the current account is the creator of the set. */
39
+ isCreator: boolean;
40
+ /** Whether the set is official. */
41
+ isOfficial: boolean;
42
+ /** Whether the set is archived. */
43
+ isArchived: boolean;
44
+ /** A point in time when the set was added to the current account. */
45
+ addedAt?: number;
46
+ }
47
+ export declare function constructStickerSetP(stickerSet: Api.StickerSet): StickerSetP;
48
+ //# sourceMappingURL=1_sticker_set_p.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1_sticker_set_p.d.ts","sourceRoot":"","sources":["../../src/types/1_sticker_set_p.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,wCAAwC;AACxC,MAAM,WAAW,WAAW;IAC1B,wCAAwC;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,aAAa,CAAC;IACzC,+BAA+B;IAC/B,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,kDAAkD;IAClD,UAAU,EAAE,OAAO,CAAC;IACpB,kEAAkE;IAClE,qBAAqB,EAAE,OAAO,CAAC;IAC/B,6DAA6D;IAC7D,SAAS,EAAE,OAAO,CAAC;IACnB,mCAAmC;IACnC,UAAU,EAAE,OAAO,CAAC;IACpB,mCAAmC;IACnC,UAAU,EAAE,OAAO,CAAC;IACpB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,WAAW,CAuD5E"}