@wirecat/tg-cli 0.0.0 → 0.43.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 (181) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +527 -0
  3. package/THIRD_PARTY_NOTICES +55 -0
  4. package/dist/app.d.ts +11 -0
  5. package/dist/app.d.ts.map +1 -0
  6. package/dist/app.js +16 -0
  7. package/dist/app.js.map +1 -0
  8. package/dist/bin/tg.d.ts +3 -0
  9. package/dist/bin/tg.d.ts.map +1 -0
  10. package/dist/bin/tg.js +18 -0
  11. package/dist/bin/tg.js.map +1 -0
  12. package/dist/bot/adapter.d.ts +9 -0
  13. package/dist/bot/adapter.d.ts.map +1 -0
  14. package/dist/bot/adapter.js +171 -0
  15. package/dist/bot/adapter.js.map +1 -0
  16. package/dist/bot/generated/definitions.d.ts +3 -0
  17. package/dist/bot/generated/definitions.d.ts.map +1 -0
  18. package/dist/bot/generated/definitions.js +19104 -0
  19. package/dist/bot/generated/definitions.js.map +1 -0
  20. package/dist/bot/generated/manifest.d.ts +3 -0
  21. package/dist/bot/generated/manifest.d.ts.map +1 -0
  22. package/dist/bot/generated/manifest.js +15354 -0
  23. package/dist/bot/generated/manifest.js.map +1 -0
  24. package/dist/bot/generated/schemas.d.ts +1407 -0
  25. package/dist/bot/generated/schemas.d.ts.map +1 -0
  26. package/dist/bot/generated/schemas.js +5118 -0
  27. package/dist/bot/generated/schemas.js.map +1 -0
  28. package/dist/bot/generated/types.d.ts +6884 -0
  29. package/dist/bot/generated/types.d.ts.map +1 -0
  30. package/dist/bot/generated/types.js +5 -0
  31. package/dist/bot/generated/types.js.map +1 -0
  32. package/dist/bot/map.d.ts +122 -0
  33. package/dist/bot/map.d.ts.map +1 -0
  34. package/dist/bot/map.js +193 -0
  35. package/dist/bot/map.js.map +1 -0
  36. package/dist/bot/proxy.d.ts +15 -0
  37. package/dist/bot/proxy.d.ts.map +1 -0
  38. package/dist/bot/proxy.js +64 -0
  39. package/dist/bot/proxy.js.map +1 -0
  40. package/dist/bot/transport.d.ts +42 -0
  41. package/dist/bot/transport.d.ts.map +1 -0
  42. package/dist/bot/transport.js +158 -0
  43. package/dist/bot/transport.js.map +1 -0
  44. package/dist/browser.d.ts +6 -0
  45. package/dist/browser.d.ts.map +1 -0
  46. package/dist/browser.js +18 -0
  47. package/dist/browser.js.map +1 -0
  48. package/dist/commands/bot-api.d.ts +3 -0
  49. package/dist/commands/bot-api.d.ts.map +1 -0
  50. package/dist/commands/bot-api.js +112 -0
  51. package/dist/commands/bot-api.js.map +1 -0
  52. package/dist/commands/bot.d.ts +7 -0
  53. package/dist/commands/bot.d.ts.map +1 -0
  54. package/dist/commands/bot.js +99 -0
  55. package/dist/commands/bot.js.map +1 -0
  56. package/dist/commands/context.d.ts +59 -0
  57. package/dist/commands/context.d.ts.map +1 -0
  58. package/dist/commands/context.js +176 -0
  59. package/dist/commands/context.js.map +1 -0
  60. package/dist/commands/proxy-config.d.ts +9 -0
  61. package/dist/commands/proxy-config.d.ts.map +1 -0
  62. package/dist/commands/proxy-config.js +63 -0
  63. package/dist/commands/proxy-config.js.map +1 -0
  64. package/dist/commands/session.d.ts +22 -0
  65. package/dist/commands/session.d.ts.map +1 -0
  66. package/dist/commands/session.js +191 -0
  67. package/dist/commands/session.js.map +1 -0
  68. package/dist/commands/setup.d.ts +3 -0
  69. package/dist/commands/setup.d.ts.map +1 -0
  70. package/dist/commands/setup.js +203 -0
  71. package/dist/commands/setup.js.map +1 -0
  72. package/dist/commands/update.d.ts +2 -0
  73. package/dist/commands/update.d.ts.map +1 -0
  74. package/dist/commands/update.js +35 -0
  75. package/dist/commands/update.js.map +1 -0
  76. package/dist/install/postinstall.d.ts +8 -0
  77. package/dist/install/postinstall.d.ts.map +1 -0
  78. package/dist/install/postinstall.js +62 -0
  79. package/dist/install/postinstall.js.map +1 -0
  80. package/dist/paths.d.ts +9 -0
  81. package/dist/paths.d.ts.map +1 -0
  82. package/dist/paths.js +11 -0
  83. package/dist/paths.js.map +1 -0
  84. package/dist/program.d.ts +8 -0
  85. package/dist/program.d.ts.map +1 -0
  86. package/dist/program.js +138 -0
  87. package/dist/program.js.map +1 -0
  88. package/dist/proxy.d.ts +31 -0
  89. package/dist/proxy.d.ts.map +1 -0
  90. package/dist/proxy.js +99 -0
  91. package/dist/proxy.js.map +1 -0
  92. package/dist/telegram/adapter.d.ts +432 -0
  93. package/dist/telegram/adapter.d.ts.map +1 -0
  94. package/dist/telegram/adapter.js +1898 -0
  95. package/dist/telegram/adapter.js.map +1 -0
  96. package/dist/telegram/bot-history.d.ts +18 -0
  97. package/dist/telegram/bot-history.d.ts.map +1 -0
  98. package/dist/telegram/bot-history.js +145 -0
  99. package/dist/telegram/bot-history.js.map +1 -0
  100. package/dist/telegram/comments.d.ts +18 -0
  101. package/dist/telegram/comments.d.ts.map +1 -0
  102. package/dist/telegram/comments.js +48 -0
  103. package/dist/telegram/comments.js.map +1 -0
  104. package/dist/telegram/credentials.d.ts +22 -0
  105. package/dist/telegram/credentials.d.ts.map +1 -0
  106. package/dist/telegram/credentials.js +49 -0
  107. package/dist/telegram/credentials.js.map +1 -0
  108. package/dist/telegram/errors.d.ts +6 -0
  109. package/dist/telegram/errors.d.ts.map +1 -0
  110. package/dist/telegram/errors.js +186 -0
  111. package/dist/telegram/errors.js.map +1 -0
  112. package/dist/telegram/folder-rules.d.ts +14 -0
  113. package/dist/telegram/folder-rules.d.ts.map +1 -0
  114. package/dist/telegram/folder-rules.js +23 -0
  115. package/dist/telegram/folder-rules.js.map +1 -0
  116. package/dist/telegram/format-html.d.ts +4 -0
  117. package/dist/telegram/format-html.d.ts.map +1 -0
  118. package/dist/telegram/format-html.js +29 -0
  119. package/dist/telegram/format-html.js.map +1 -0
  120. package/dist/telegram/format-markdown.d.ts +3 -0
  121. package/dist/telegram/format-markdown.d.ts.map +1 -0
  122. package/dist/telegram/format-markdown.js +160 -0
  123. package/dist/telegram/format-markdown.js.map +1 -0
  124. package/dist/telegram/join-requests.d.ts +15 -0
  125. package/dist/telegram/join-requests.d.ts.map +1 -0
  126. package/dist/telegram/join-requests.js +35 -0
  127. package/dist/telegram/join-requests.js.map +1 -0
  128. package/dist/telegram/map.d.ts +92 -0
  129. package/dist/telegram/map.d.ts.map +1 -0
  130. package/dist/telegram/map.js +471 -0
  131. package/dist/telegram/map.js.map +1 -0
  132. package/dist/telegram/poll-voters.d.ts +15 -0
  133. package/dist/telegram/poll-voters.d.ts.map +1 -0
  134. package/dist/telegram/poll-voters.js +31 -0
  135. package/dist/telegram/poll-voters.js.map +1 -0
  136. package/dist/telegram/polls.d.ts +5 -0
  137. package/dist/telegram/polls.d.ts.map +1 -0
  138. package/dist/telegram/polls.js +20 -0
  139. package/dist/telegram/polls.js.map +1 -0
  140. package/dist/telegram/profile.d.ts +9 -0
  141. package/dist/telegram/profile.d.ts.map +1 -0
  142. package/dist/telegram/profile.js +175 -0
  143. package/dist/telegram/profile.js.map +1 -0
  144. package/dist/telegram/proxy.d.ts +48 -0
  145. package/dist/telegram/proxy.d.ts.map +1 -0
  146. package/dist/telegram/proxy.js +108 -0
  147. package/dist/telegram/proxy.js.map +1 -0
  148. package/dist/telegram/registration.d.ts +31 -0
  149. package/dist/telegram/registration.d.ts.map +1 -0
  150. package/dist/telegram/registration.js +95 -0
  151. package/dist/telegram/registration.js.map +1 -0
  152. package/dist/telegram/send-as.d.ts +17 -0
  153. package/dist/telegram/send-as.d.ts.map +1 -0
  154. package/dist/telegram/send-as.js +67 -0
  155. package/dist/telegram/send-as.js.map +1 -0
  156. package/dist/telegram/stats.d.ts +13 -0
  157. package/dist/telegram/stats.d.ts.map +1 -0
  158. package/dist/telegram/stats.js +135 -0
  159. package/dist/telegram/stats.js.map +1 -0
  160. package/dist/telegram/storage.d.ts +4 -0
  161. package/dist/telegram/storage.d.ts.map +1 -0
  162. package/dist/telegram/storage.js +68 -0
  163. package/dist/telegram/storage.js.map +1 -0
  164. package/dist/telegram/upload.d.ts +9 -0
  165. package/dist/telegram/upload.d.ts.map +1 -0
  166. package/dist/telegram/upload.js +29 -0
  167. package/dist/telegram/upload.js.map +1 -0
  168. package/dist/update.d.ts +28 -0
  169. package/dist/update.d.ts.map +1 -0
  170. package/dist/update.js +56 -0
  171. package/dist/update.js.map +1 -0
  172. package/dist/version.d.ts +2 -0
  173. package/dist/version.d.ts.map +1 -0
  174. package/dist/version.js +2 -0
  175. package/dist/version.js.map +1 -0
  176. package/install/postinstall.mjs +3 -0
  177. package/install/windows.ps1 +161 -0
  178. package/package.json +71 -2
  179. package/skills/tg-cli/SKILL.md +489 -0
  180. package/spec/bot/LICENSE +21 -0
  181. package/spec/bot/README.md +16 -0
@@ -0,0 +1,432 @@
1
+ import type { TextSpan } from "@wirecat/cli-messaging";
2
+ import { type AccountSession, type AdminRight, type Attachment, type Chat, type ChatCard, type ChatEvents, type CounterField, type Discussion, type Folder, type FolderChange, type FolderRules, type GroupCard, type GroupChange, type GroupMember, type InviteLinkChange, type LinkTarget, type Markup, type Member, type Message, type MessageEvent, type MessageHit, type OfficialChatStats, type Page, type PersonCard, type PhoneBookEntry, type Poll, type ProfileFacts, type SenderIdentity, type Topic, type TopicChange } from "@wirecat/cli-messaging";
3
+ import type { After, Download, ForumState, MessengerAdapter, NewPoll, SendOptions, ServerQuery, Transcript } from "@wirecat/cli-messaging/cli";
4
+ import type { ProxyServer } from "../proxy.js";
5
+ import type { ApiCredentials } from "./credentials.js";
6
+ import { type Account, GROUP_SETTINGS } from "./map.js";
7
+ export interface AdapterOptions {
8
+ credentials: ApiCredentials;
9
+ sessionPath: string;
10
+ /** Where the library's own log lines go, when asked for. Never stdout. */
11
+ diagnostic?: (line: string) => void;
12
+ verbose?: boolean;
13
+ /** Receive updates — only `watch` and `serve` ask. */
14
+ listen?: boolean;
15
+ /** Fetch what arrived while nothing listened — `serve` only; a watch starts from now. */
16
+ catchUp?: boolean;
17
+ /** How to log in on this profile, for the error a dropped session gives. */
18
+ login?: string;
19
+ proxy?: ProxyServer;
20
+ /** Where a wait mtcute sits out is said — a warning, so `--quiet` drops it. The diagnostic stream if not given. */
21
+ note?: (message: string) => void;
22
+ }
23
+ export interface LoginPrompts {
24
+ method: "qr" | "phone";
25
+ forceSms?: boolean;
26
+ showQr: (url: string, expires: Date) => void;
27
+ phone: () => Promise<string>;
28
+ code: () => Promise<string>;
29
+ password: () => Promise<string>;
30
+ note: (message: string) => void;
31
+ }
32
+ export interface Sent {
33
+ message: Message;
34
+ /** Telegram's `random_id` for this send, as a string. Repeat it with `--send-id` after an unknown outcome. */
35
+ sendId: string;
36
+ }
37
+ /**
38
+ * One Telegram account over one connection, speaking only the domain model above this line. Every
39
+ * command closes it in a `finally`: an open socket keeps Node alive, and a piped command that prints
40
+ * and never returns is a defect.
41
+ */
42
+ export declare class TelegramAdapter {
43
+ #private;
44
+ formatMarkdown(text: string): Promise<import("@wirecat/cli-messaging").FormattedText>;
45
+ formatHtml(text: string): Promise<import("@wirecat/cli-messaging").FormattedText>;
46
+ /** Async because the runtime's SQLite module is imported on demand (cli-messaging `openCache`). */
47
+ static open(options: AdapterOptions): Promise<TelegramAdapter>;
48
+ private constructor();
49
+ login(prompts: LoginPrompts): Promise<Account>;
50
+ /** The logged-in user's id from the session, without a request; `null` before a login. */
51
+ self(): string | null;
52
+ /** Only here the phone: `account show` masks it, and a login's answer is printed as it is. */
53
+ me(): Promise<Account>;
54
+ /**
55
+ * For `doctor --online`: Telegram's clock, from `help.getConfig`'s `date` in whole seconds, and
56
+ * whether the account is frozen, from `help.getAppConfig`'s `freeze_*` fields
57
+ * (core.telegram.org/api/config, /api/auth#frozen-accounts). A frozen account still reads, so a
58
+ * working `me()` cannot tell. Both read only.
59
+ */
60
+ health(): Promise<{
61
+ serverTime: number;
62
+ serverTimeResolutionMs: number;
63
+ standingChecked: boolean;
64
+ standing?: FrozenStanding;
65
+ }>;
66
+ /** Telegram lists dialogs by position, so a page is the dialogs up to its end, cut; `limit` unset is every one. */
67
+ chats({ limit, offset }: {
68
+ limit?: number;
69
+ offset: number;
70
+ }): Promise<Page<Chat>>;
71
+ discussionOf(channelId: string, postId: string): Promise<Discussion>;
72
+ comments(channelId: string, postId: string, { limit, before }: {
73
+ limit: number;
74
+ before?: string;
75
+ }): Promise<Page<Message>>;
76
+ /** Telegram reads a thread with messages.search and its top message id (core.telegram.org/api/threads). */
77
+ topicHistory(reference: string, threadId: string, { limit, before }: {
78
+ limit: number;
79
+ before?: string;
80
+ }): Promise<Page<Message>>;
81
+ history(reference: string, { limit, before }: {
82
+ limit: number;
83
+ before?: string;
84
+ }): Promise<Page<Message>>;
85
+ /**
86
+ * Forward from a message or a moment: `reverse` reads upwards from the offset, inclusive, so an id
87
+ * starts one past it. The filter keeps a date offset honest — Telegram places it, it does not cut at it.
88
+ */
89
+ historyAfter(reference: string, { limit, after }: {
90
+ limit: number;
91
+ after: After;
92
+ }): Promise<Page<Message>>;
93
+ /** One person's newest messages in a chat: Telegram's search by sender, newest first, answered oldest first. */
94
+ historyFrom(reference: string, person: string, { limit }: {
95
+ limit: number;
96
+ }): Promise<Page<Message>>;
97
+ /**
98
+ * Telegram's own text search, newest first: in one chat with `chat`, in every chat otherwise. Its
99
+ * matching is undocumented, so the answer is candidates for the store's strict query.
100
+ */
101
+ searchMessages(query: ServerQuery, { limit, signal }: {
102
+ limit: number;
103
+ signal?: AbortSignal;
104
+ }): Promise<Page<MessageHit> & {
105
+ chats: Chat[];
106
+ }>;
107
+ /** Back from a moment, newest first as Telegram reads, answered oldest first. The filter cuts at the moment itself. */
108
+ historyBefore(reference: string, { limit, time }: {
109
+ limit: number;
110
+ time: number;
111
+ }): Promise<Page<Message>>;
112
+ /** The chat as its dialog describes it, and for a group, who is in it — at most 200, Telegram's cap. */
113
+ chat(reference: string): Promise<ChatCard>;
114
+ /** How many profile photos they show and the oldest one's date: the newest first, so the last page holds it. */
115
+ photos(person: string): Promise<{
116
+ count: number;
117
+ oldestAt: string | null;
118
+ }>;
119
+ /** A person, their bio, and the groups this account shares with them — newest conversation first. */
120
+ contact(reference: string): Promise<PersonCard>;
121
+ /** The same three requests as `contact`, with everything Telegram said kept. */
122
+ profile(reference: string): Promise<ProfileFacts>;
123
+ /**
124
+ * One request: history from just above the message, shifted `after` messages newer. Telegram's
125
+ * offset id is exclusive, hence the `+ 1`; ids are not contiguous, so the window is cut by position.
126
+ */
127
+ fetchCounters(reference: string, messageId: string, fields: readonly CounterField[], signal?: AbortSignal): Promise<Partial<Record<"comments" | "reactions" | "views", import("@wirecat/cli-messaging").CounterObservation>>>;
128
+ around(reference: string, messageId: string, { before, after }: {
129
+ before: number;
130
+ after: number;
131
+ }): Promise<(Message | {
132
+ id: import("@wirecat/cli-messaging").Id;
133
+ chatId: import("@wirecat/cli-messaging").Id;
134
+ senderId: import("@wirecat/cli-messaging").Id | null;
135
+ senderName: string | null;
136
+ senderUsername?: string;
137
+ mentions?: import("@wirecat/cli-messaging").Id[];
138
+ senderIsChat?: boolean;
139
+ timestamp: string;
140
+ editedAt: string | null;
141
+ text: string;
142
+ outgoing: boolean | null;
143
+ attachments: Attachment[];
144
+ replyTo: import("@wirecat/cli-messaging").QuotedMessage | null;
145
+ replyToId?: import("@wirecat/cli-messaging").Id;
146
+ forwardedFrom: import("@wirecat/cli-messaging").QuotedMessage | null;
147
+ threadId?: import("@wirecat/cli-messaging").Id;
148
+ reactions: import("@wirecat/cli-messaging").Reactions | null;
149
+ counterObservations?: import("@wirecat/cli-messaging").CounterObservations;
150
+ scheduledFor?: string;
151
+ providerMetadata?: import("@wirecat/cli-messaging").ProviderMetadata;
152
+ anchor: true;
153
+ })[]>;
154
+ /** The chat a reference names — by title, id, `@username` or `me` — so a write can be checked before it goes. */
155
+ resolve(reference: string): Promise<Chat>;
156
+ sendAsIdentities(chatId: string): Promise<SenderIdentity[]>;
157
+ savedSender(chatId: string): Promise<string | null>;
158
+ permalink(chatId: string, messageId: string): Promise<{
159
+ url: null;
160
+ access: "unavailable";
161
+ reason: "unsupported_chat";
162
+ } | {
163
+ url: string;
164
+ access: "public" | "restricted" | "unknown";
165
+ reason: null;
166
+ }>;
167
+ /**
168
+ * One logical send carries one `random_id`, made before the request and repeated by a retry:
169
+ * Telegram delivers one message for both (measured 2026-09-27, across two connections).
170
+ */
171
+ send(chatId: string, text: string, { sendId, replyTo, threadId, silent, noPreview, markup, formatting, at, attachments, sendAs, spoiler, captionAbove, }: SendOptions): Promise<Sent>;
172
+ /**
173
+ * New messages, edits, deletions and reaction changes as they arrive, until `signal` aborts. Only
174
+ * on an adapter opened with `listen`. `onReady` once the updates loop runs, not before.
175
+ */
176
+ watch(onEvent: (event: MessageEvent) => void, signal: AbortSignal, onReady?: () => void): Promise<void>;
177
+ scheduled(reference: string): Promise<Message[]>;
178
+ /** The message is fetched again, never taken from the store: Telegram's file references expire. */
179
+ download(reference: string, messageId: string): Promise<Download>;
180
+ /**
181
+ * Telegram's own speech recognition; mtcute has no high-level method for `messages.transcribeAudio`.
182
+ * A first answer is usually still pending. The finished text arrives as an update, which a one-shot
183
+ * connection does not receive, but asking again returns it — measured 2026-09-29 on a 19 s voice note.
184
+ */
185
+ transcribe(reference: string, messageId: string): Promise<Transcript>;
186
+ /** Forgets the session on Telegram's side too, so the device disappears from the account's list. */
187
+ logout(): Promise<void>;
188
+ close(): Promise<void>;
189
+ /**
190
+ * An edit has no `random_id`, but setting the same text twice is harmless: Telegram answers the
191
+ * repeat with MESSAGE_NOT_MODIFIED, taken here as done — so a retry after an unknown outcome is safe.
192
+ */
193
+ edit(chatId: string, messageId: string, text: string, { markup, formatting }?: {
194
+ markup?: Markup[];
195
+ formatting?: TextSpan[];
196
+ }): Promise<Message>;
197
+ /**
198
+ * The raw call, because mtcute's `forwardMessagesById` draws the `random_id` itself: a retry has to
199
+ * repeat the first one for Telegram to keep one copy, as a send does.
200
+ */
201
+ forward(fromChatId: string, messageId: string, toChatId: string, { sendId, silent, sendAs, threadId }: {
202
+ sendId: string;
203
+ silent?: boolean;
204
+ sendAs?: string;
205
+ threadId?: string;
206
+ }): Promise<Message>;
207
+ /** In a one-to-one chat the pin is on the owner's side only; `notify` reaches groups alone, as Telegram has it. */
208
+ pin(chatId: string, messageId: string, { notify }: {
209
+ notify: boolean;
210
+ }): Promise<void>;
211
+ unpin(chatId: string, messageId: string): Promise<void>;
212
+ /**
213
+ * Telegram sets the owner's reactions as a whole, so one emoji replaces what was there. An emoji the
214
+ * chat does not allow, or a second one without Premium, comes back as Telegram's refusal.
215
+ */
216
+ react(chatId: string, messageId: string, emoji: string | null): Promise<void>;
217
+ /** Up to `until`, or everything; mentions stay, as Telegram's own clients leave them until they are seen. */
218
+ markRead(chatId: string, until?: string): Promise<void>;
219
+ /** Telegram reads a topic as a discussion thread, up to a message id: without `until`, the topic's newest. */
220
+ markTopicRead(chatId: string, topicId: string, until?: string): Promise<void>;
221
+ /**
222
+ * mtcute deletes for everyone unless told otherwise, so `revoke` is always passed. In a supergroup or
223
+ * a channel Telegram has no "for me": a deletion there is for everyone, and without `forEveryone` it is refused.
224
+ *
225
+ * **Outside a channel the ids are checked against the chat first.** Telegram numbers private-chat and
226
+ * basic-group messages per account and `messages.deleteMessages` takes no chat, so an id from another
227
+ * chat — or the other side's number for the same message — deletes whatever this account has under it
228
+ * (SEC-30). `getMessages` answers null for an id that is not in the chat it was given.
229
+ */
230
+ delete(chatId: string, messageIds: string[], { forEveryone }: {
231
+ forEveryone: boolean;
232
+ }): Promise<void>;
233
+ poll(chatId: string, messageId: string): Promise<Poll>;
234
+ pollVoters(chatId: string, messageId: string, window: {
235
+ limit: number;
236
+ answerId?: string;
237
+ }): Promise<Page<import("@wirecat/cli-messaging").PollVote> & {
238
+ total: number;
239
+ }>;
240
+ /** Votes by the answers' own bytes, never by index: mtcute would fetch the poll and pick by position. */
241
+ vote(chatId: string, messageId: string, answerIds: string[]): Promise<Poll>;
242
+ closePoll(chatId: string, messageId: string): Promise<Poll>;
243
+ /**
244
+ * One `random_id` per logical create, as a send has: a retry repeats it and Telegram keeps one poll
245
+ * (measured 2026-10-08: the second call answered the first poll's message id — unlike topic creation).
246
+ */
247
+ createPoll(chatId: string, poll: NewPoll, { sendId, silent, threadId, sendAs }: {
248
+ sendId: string;
249
+ silent?: boolean;
250
+ threadId?: string;
251
+ sendAs?: string;
252
+ }): Promise<Sent>;
253
+ /** An invite is previewed; one the owner already joined, or a public link, is read as the chat. Nothing joins. */
254
+ inspect(link: string): Promise<LinkTarget>;
255
+ forumState(chatId: string): Promise<ForumState>;
256
+ upgradeForum(chatId: string): Promise<ForumState>;
257
+ enableForum(chatId: string): Promise<ForumState>;
258
+ createTopic(chatId: string, title: string, { sendId }: {
259
+ sendId: string;
260
+ }): Promise<Topic>;
261
+ /**
262
+ * A repeat answers TOPIC_NOT_MODIFIED: the change is already there, so the topic is read back as for a first.
263
+ * Pinning is Telegram's own call, made after the edit.
264
+ */
265
+ editTopic(chatId: string, topicId: string, { title, closed, pinned, hidden }: TopicChange): Promise<Topic>;
266
+ /** Without `force` Telegram only reorders: a topic that is not pinned stays as it is. */
267
+ orderPinnedTopics(chatId: string, topicIds: string[]): Promise<void>;
268
+ /** Telegram deletes the topic's history with it; a topic that is gone answers TOPIC_ID_INVALID, `not_found`. */
269
+ deleteTopic(chatId: string, topicId: string): Promise<void>;
270
+ validateThread(chatId: string, threadId: string, { replyTo }: {
271
+ replyTo?: string;
272
+ }): Promise<void>;
273
+ topic(reference: string, topicId: string): Promise<Topic>;
274
+ /** A forum's topics, newest activity first; Telegram matches `search` against their titles. */
275
+ topics(reference: string, { search, limit, offset }: {
276
+ search?: string;
277
+ limit?: number;
278
+ offset: number;
279
+ }): Promise<Page<Topic>>;
280
+ /** Telegram answers only where the person's privacy lets the owner find them by number. */
281
+ lookup(phone: string): Promise<Member>;
282
+ /** The owner's Telegram contacts — the address book, not the chats. */
283
+ addressBook(): Promise<Member[]>;
284
+ /** Every device and app logged in; the IP address Telegram also sends is left out. */
285
+ sessions(): Promise<AccountSession[]>;
286
+ /**
287
+ * A page of a group's members, 200 a request. Telegram gives at most `MEMBERS_MAX` of a big group,
288
+ * and a group that hides its list answers only its admins or refuses.
289
+ */
290
+ members(reference: string, { limit, offset }: {
291
+ limit?: number;
292
+ offset: number;
293
+ }): Promise<Page<GroupMember> & {
294
+ chatId: string;
295
+ participantsCount: number | null;
296
+ }>;
297
+ /**
298
+ * Service messages back to `since`, newest page first, at most `EVENT_PAGES` of them — a busy
299
+ * group's week can be thousands. The people a message names only by id are looked up in one call.
300
+ */
301
+ chatEvents(reference: string, { since }: {
302
+ since: number;
303
+ }): Promise<ChatEvents>;
304
+ /**
305
+ * A group's admins and its creator, for `review --unanswered`; `null` when the group hides them.
306
+ * A basic group ignores the `admins` filter and answers everyone, hence the status check.
307
+ */
308
+ admins(reference: string): Promise<string[] | null>;
309
+ /** `null` when the group hides its member list from us: that is an answer about the group, not a failure. */
310
+ /** Each reference as a user id, in order; a group or a channel is not a person and is refused. */
311
+ people(references: string[]): Promise<string[]>;
312
+ /**
313
+ * Always a supergroup, never a legacy group: a legacy group turns into a supergroup on some changes
314
+ * and its id changes with it. The people are added after, so a group exists even if some cannot be.
315
+ */
316
+ createGroup(title: string, people: string[], { channel }: {
317
+ channel: boolean;
318
+ }): Promise<GroupCard>;
319
+ /** An invite link, or a public one; a group that asks its admins first answers `requested`. */
320
+ join(link: string): Promise<GroupCard | {
321
+ requested: true;
322
+ }>;
323
+ leave(reference: string): Promise<{
324
+ chatId: string;
325
+ }>;
326
+ group(reference: string): Promise<GroupCard>;
327
+ /**
328
+ * Telegram computes these only on the chat's statistics server (`stats_dc`); mtcute opens that
329
+ * connection and carries the login over itself, and `close` ends it with the others.
330
+ */
331
+ officialChatStats(reference: string): Promise<OfficialChatStats>;
332
+ /**
333
+ * Telegram keeps what members may do as rights taken away, and sets them all at once: the current
334
+ * ones are read first, and only the switches asked for change.
335
+ */
336
+ updateGroup(chatId: string, { title, description, settings }: GroupChange): Promise<GroupCard>;
337
+ /** A new primary link for the owner; the old one stops working. */
338
+ resetInviteLink(chatId: string): Promise<GroupCard>;
339
+ createInviteLink(chatId: string, { approval, expiresAt, maxUses }: {
340
+ approval: boolean;
341
+ expiresAt?: string;
342
+ maxUses?: number;
343
+ }): Promise<import("@wirecat/cli-messaging").InviteLink>;
344
+ joinRequests(chatId: string, { limit, link, search }: {
345
+ limit: number;
346
+ link?: string;
347
+ search?: string;
348
+ }): Promise<Page<import("@wirecat/cli-messaging").JoinRequest> & {
349
+ total: number;
350
+ }>;
351
+ answerAllJoinRequests(chatId: string, accept: boolean, link?: string): Promise<void>;
352
+ /** Telegram shows an admin only their own links; the creator could ask for others', which we do not. */
353
+ inviteLinks(chatId: string, { limit, revoked }: {
354
+ limit: number;
355
+ revoked: boolean;
356
+ }): Promise<{
357
+ items: import("@wirecat/cli-messaging").InviteLink[];
358
+ hasMore: boolean;
359
+ }>;
360
+ revokeInviteLink(chatId: string, link: string): Promise<import("@wirecat/cli-messaging").InviteLink>;
361
+ updateInviteLink(chatId: string, link: string, { approval, expiresAt, maxUses }: InviteLinkChange): Promise<import("@wirecat/cli-messaging").InviteLink>;
362
+ answerJoinRequest(chatId: string, personId: string, accept: boolean): Promise<{
363
+ already: boolean;
364
+ }>;
365
+ /** A supergroup shows new members its history by its own setting, never per person: `history` is refused. */
366
+ addMembers(chatId: string, people: string[], { history }: {
367
+ history?: boolean;
368
+ }): Promise<{
369
+ notAdded: string[];
370
+ }>;
371
+ /** One request per person, in turn: Telegram rate-limits these hard. */
372
+ removeMembers(chatId: string, people: string[]): Promise<void>;
373
+ addAdmin(chatId: string, person: string, rights: AdminRight[]): Promise<void>;
374
+ removeAdmin(chatId: string, person: string): Promise<void>;
375
+ folders(): Promise<Folder[]>;
376
+ createFolder(title: string, chatIds: string[], rules?: FolderRules): Promise<Folder>;
377
+ /** Telegram replaces a folder's chats as a list, so the ones it has are read and only the asked ones change. */
378
+ updateFolder(folderId: string, change: FolderChange): Promise<Folder>;
379
+ deleteFolder(folderId: string): Promise<void>;
380
+ /** "All chats" (id 0) keeps its place: only Premium accounts may move it, and tg does not list it. */
381
+ orderFolders(folderIds: string[]): Promise<void>;
382
+ joinFolder(link: string): Promise<Folder>;
383
+ /** Under the name they show; `renameContact` gives one of the owner's own. */
384
+ addContact(personId: string): Promise<Member>;
385
+ removeContact(personId: string): Promise<void>;
386
+ block(personId: string): Promise<void>;
387
+ unblock(personId: string): Promise<void>;
388
+ renameContact(personId: string, firstName: string, lastName?: string): Promise<Member>;
389
+ /** The name is split at its first space into Telegram's first and last name. */
390
+ importContacts(entries: PhoneBookEntry[]): Promise<Member[]>;
391
+ /** Telegram calls the description the bio. A photo goes up as a new profile photo. */
392
+ updateProfile({ firstName, lastName, description, photo, }: Parameters<NonNullable<MessengerAdapter["updateProfile"]>>[0]): Promise<Account>;
393
+ /** mtcute has no call of its own for it; this is Telegram's `auth.resetAuthorizations`. */
394
+ endOtherSessions(): Promise<AccountSession[]>;
395
+ }
396
+ export { GROUP_SETTINGS };
397
+ export interface FrozenStanding {
398
+ state: "frozen";
399
+ since?: string;
400
+ until?: string;
401
+ appealUrl?: string;
402
+ hint: string;
403
+ }
404
+ /** Telegram sets `freeze_since_date` non-zero only on a frozen account; the dates are unix seconds. */
405
+ export declare const frozenOf: (config: Record<string, unknown>) => FrozenStanding | undefined;
406
+ /** The rights `tg chats admins add --can` offers: max's, less `read`. */
407
+ export declare const ADMIN_RIGHTS: AdminRight[];
408
+ /**
409
+ * How long mtcute sits out a FLOOD_WAIT before the wait becomes `rate_limited` with `retryAfterMs`, and
410
+ * how many times. One-shot: 10 s, mtcute's own default, which covers the routine short waits; past it a
411
+ * person or a script is better told the wait than held, and twice at most keeps a command under ~20 s
412
+ * of announced waiting. Listening (`watch`, `serve`): nobody is waiting on a request, and giving up
413
+ * costs a restart and a new connection — 120 s, tlgr's threshold. `store fetch` keeps the one-shot
414
+ * value: cli-messaging's `patiently` sits out up to 5 min above it, and says so.
415
+ */
416
+ export declare const FLOOD_SLEEP: {
417
+ oneShot: {
418
+ maxWait: number;
419
+ maxRetries: number;
420
+ };
421
+ listening: {
422
+ maxWait: number;
423
+ maxRetries: number;
424
+ };
425
+ };
426
+ /** A look at a local flag, not a request. */
427
+ export declare const LOOP_CHECK_MS = 30000;
428
+ /** Every 15 minutes, mtcute's own keep-alive rate: ~96 light requests a day. */
429
+ export declare const HEARTBEAT_TICKS = 30;
430
+ export declare const STATE_WAIT_MS = 30000;
431
+ export declare const TRANSCRIBE_POLL_MS = 2000;
432
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/telegram/adapter.ts"],"names":[],"mappings":"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"}