@mtcute/core 0.7.0 → 0.7.2

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 (85) hide show
  1. package/cjs/highlevel/base.js +2 -2
  2. package/cjs/highlevel/base.js.map +1 -1
  3. package/cjs/highlevel/base.test.js +14 -0
  4. package/cjs/highlevel/base.test.js.map +1 -0
  5. package/cjs/highlevel/client.d.ts +1 -1
  6. package/cjs/highlevel/client.js.map +1 -1
  7. package/cjs/highlevel/client.types.d.ts +1 -1
  8. package/cjs/highlevel/client.types.js.map +1 -1
  9. package/cjs/highlevel/methods/_imports.js.map +1 -1
  10. package/cjs/highlevel/methods/auth/start.d.ts +1 -1
  11. package/cjs/highlevel/methods/auth/start.js.map +1 -1
  12. package/cjs/highlevel/methods.d.ts +239 -0
  13. package/cjs/highlevel/methods.js +487 -0
  14. package/cjs/highlevel/methods.js.map +1 -0
  15. package/cjs/highlevel/utils/index.d.ts +1 -0
  16. package/cjs/highlevel/utils/index.js +2 -1
  17. package/cjs/highlevel/utils/index.js.map +1 -1
  18. package/cjs/highlevel/utils/stream-utils.test.js +1 -1
  19. package/cjs/highlevel/utils/stream-utils.test.js.map +1 -1
  20. package/cjs/highlevel/utils/string-session.d.ts +12 -0
  21. package/cjs/{utils → highlevel/utils}/string-session.js +32 -10
  22. package/cjs/highlevel/utils/string-session.js.map +1 -0
  23. package/cjs/{utils → highlevel/utils}/string-session.test.js +85 -18
  24. package/cjs/highlevel/utils/string-session.test.js.map +1 -0
  25. package/cjs/highlevel/worker/port.d.ts +1 -1
  26. package/cjs/network/network-manager.js +1 -1
  27. package/cjs/network/transports/tcp.test.js +1 -1
  28. package/cjs/network/transports/tcp.test.js.map +1 -1
  29. package/cjs/utils/crypto/node.test.js +1 -1
  30. package/cjs/utils/crypto/node.test.js.map +1 -1
  31. package/cjs/utils/index.d.ts +0 -1
  32. package/cjs/utils/index.js +0 -1
  33. package/cjs/utils/index.js.map +1 -1
  34. package/cjs/utils/logger.test.js +1 -1
  35. package/cjs/utils/logger.test.js.map +1 -1
  36. package/cjs/utils/platform/logging.js +1 -2
  37. package/cjs/utils/platform/logging.js.map +1 -1
  38. package/esm/highlevel/base.js +2 -2
  39. package/esm/highlevel/base.js.map +1 -1
  40. package/esm/highlevel/base.test.d.ts +1 -0
  41. package/esm/highlevel/base.test.js +12 -0
  42. package/esm/highlevel/base.test.js.map +1 -0
  43. package/esm/highlevel/client.d.ts +1 -1
  44. package/esm/highlevel/client.js.map +1 -1
  45. package/esm/highlevel/client.types.d.ts +1 -1
  46. package/esm/highlevel/client.types.js.map +1 -1
  47. package/esm/highlevel/methods/_imports.js.map +1 -1
  48. package/esm/highlevel/methods/auth/start.d.ts +1 -1
  49. package/esm/highlevel/methods/auth/start.js.map +1 -1
  50. package/esm/highlevel/methods.d.ts +239 -0
  51. package/esm/highlevel/methods.js +241 -0
  52. package/esm/highlevel/methods.js.map +1 -0
  53. package/esm/highlevel/utils/index.d.ts +1 -0
  54. package/esm/highlevel/utils/index.js +2 -1
  55. package/esm/highlevel/utils/index.js.map +1 -1
  56. package/esm/highlevel/utils/stream-utils.test.js +1 -1
  57. package/esm/highlevel/utils/stream-utils.test.js.map +1 -1
  58. package/esm/highlevel/utils/string-session.d.ts +12 -0
  59. package/esm/{utils → highlevel/utils}/string-session.js +33 -11
  60. package/esm/highlevel/utils/string-session.js.map +1 -0
  61. package/esm/highlevel/utils/string-session.test.d.ts +1 -0
  62. package/esm/{utils → highlevel/utils}/string-session.test.js +85 -18
  63. package/esm/highlevel/utils/string-session.test.js.map +1 -0
  64. package/esm/highlevel/worker/port.d.ts +1 -1
  65. package/esm/network/network-manager.js +1 -1
  66. package/esm/network/transports/tcp.test.js +1 -1
  67. package/esm/network/transports/tcp.test.js.map +1 -1
  68. package/esm/utils/crypto/node.test.js +1 -1
  69. package/esm/utils/crypto/node.test.js.map +1 -1
  70. package/esm/utils/index.d.ts +0 -1
  71. package/esm/utils/index.js +0 -1
  72. package/esm/utils/index.js.map +1 -1
  73. package/esm/utils/logger.test.js +1 -1
  74. package/esm/utils/logger.test.js.map +1 -1
  75. package/esm/utils/platform/logging.js +1 -2
  76. package/esm/utils/platform/logging.js.map +1 -1
  77. package/package.json +5 -5
  78. package/cjs/utils/string-session.d.ts +0 -12
  79. package/cjs/utils/string-session.js.map +0 -1
  80. package/cjs/utils/string-session.test.js.map +0 -1
  81. package/esm/utils/string-session.d.ts +0 -12
  82. package/esm/utils/string-session.js.map +0 -1
  83. package/esm/utils/string-session.test.js.map +0 -1
  84. /package/cjs/{utils/string-session.test.d.ts → highlevel/base.test.d.ts} +0 -0
  85. /package/{esm → cjs/highlevel}/utils/string-session.test.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/highlevel/client.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging, @typescript-eslint/unified-signatures */\n/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* THIS FILE WAS AUTO-GENERATED */\nimport EventEmitter from 'events'\nimport Long from 'long'\n\nimport { tdFileId } from '@mtcute/file-id'\nimport { tl } from '@mtcute/tl'\n\nimport { MemoryStorage } from '../storage/providers/memory/index.js'\nimport { MaybeArray, MaybePromise, PartialExcept, PartialOnly } from '../types/index.js'\nimport { StringSessionData } from '../utils/string-session.js'\nimport { BaseTelegramClient, BaseTelegramClientOptions } from './base.js'\nimport { ITelegramClient } from './client.types.js'\nimport { checkPassword } from './methods/auth/check-password.js'\nimport { getPasswordHint } from './methods/auth/get-password-hint.js'\nimport { logOut } from './methods/auth/log-out.js'\nimport { recoverPassword } from './methods/auth/recover-password.js'\nimport { resendCode } from './methods/auth/resend-code.js'\nimport { run } from './methods/auth/run.js'\nimport { sendCode } from './methods/auth/send-code.js'\nimport { sendRecoveryCode } from './methods/auth/send-recovery-code.js'\nimport { signIn } from './methods/auth/sign-in.js'\nimport { signInBot } from './methods/auth/sign-in-bot.js'\nimport { start } from './methods/auth/start.js'\nimport { startTest } from './methods/auth/start-test.js'\nimport { isSelfPeer } from './methods/auth/utils.js'\nimport { answerCallbackQuery } from './methods/bots/answer-callback-query.js'\nimport { answerInlineQuery } from './methods/bots/answer-inline-query.js'\nimport { answerPreCheckoutQuery } from './methods/bots/answer-pre-checkout-query.js'\nimport { deleteMyCommands } from './methods/bots/delete-my-commands.js'\nimport { getBotInfo } from './methods/bots/get-bot-info.js'\nimport { getBotMenuButton } from './methods/bots/get-bot-menu-button.js'\nimport { getCallbackAnswer } from './methods/bots/get-callback-answer.js'\nimport { getGameHighScores, getInlineGameHighScores } from './methods/bots/get-game-high-scores.js'\nimport { getMyCommands } from './methods/bots/get-my-commands.js'\nimport { setBotInfo } from './methods/bots/set-bot-info.js'\nimport { setBotMenuButton } from './methods/bots/set-bot-menu-button.js'\nimport { setGameScore, setInlineGameScore } from './methods/bots/set-game-score.js'\nimport { setMyCommands } from './methods/bots/set-my-commands.js'\nimport { setMyDefaultRights } from './methods/bots/set-my-default-rights.js'\nimport { addChatMembers } from './methods/chats/add-chat-members.js'\nimport { archiveChats } from './methods/chats/archive-chats.js'\nimport { banChatMember } from './methods/chats/ban-chat-member.js'\nimport { createChannel } from './methods/chats/create-channel.js'\nimport { createGroup } from './methods/chats/create-group.js'\nimport { createSupergroup } from './methods/chats/create-supergroup.js'\nimport { deleteChannel } from './methods/chats/delete-channel.js'\nimport { deleteChatPhoto } from './methods/chats/delete-chat-photo.js'\nimport { deleteGroup } from './methods/chats/delete-group.js'\nimport { deleteHistory } from './methods/chats/delete-history.js'\nimport { deleteUserHistory } from './methods/chats/delete-user-history.js'\nimport { editAdminRights } from './methods/chats/edit-admin-rights.js'\nimport { getChat } from './methods/chats/get-chat.js'\nimport { getChatEventLog } from './methods/chats/get-chat-event-log.js'\nimport { getChatMember } from './methods/chats/get-chat-member.js'\nimport { getChatMembers } from './methods/chats/get-chat-members.js'\nimport { getChatPreview } from './methods/chats/get-chat-preview.js'\nimport { getFullChat } from './methods/chats/get-full-chat.js'\nimport { getNearbyChats } from './methods/chats/get-nearby-chats.js'\nimport { getSimilarChannels } from './methods/chats/get-similar-channels.js'\nimport { iterChatEventLog } from './methods/chats/iter-chat-event-log.js'\nimport { iterChatMembers } from './methods/chats/iter-chat-members.js'\nimport { joinChat } from './methods/chats/join-chat.js'\nimport { kickChatMember } from './methods/chats/kick-chat-member.js'\nimport { leaveChat } from './methods/chats/leave-chat.js'\nimport { markChatUnread } from './methods/chats/mark-chat-unread.js'\nimport { closeChat, openChat } from './methods/chats/open-chat.js'\nimport { reorderUsernames } from './methods/chats/reorder-usernames.js'\nimport { restrictChatMember } from './methods/chats/restrict-chat-member.js'\nimport { saveDraft } from './methods/chats/save-draft.js'\nimport { setChatColor } from './methods/chats/set-chat-color.js'\nimport { setChatDefaultPermissions } from './methods/chats/set-chat-default-permissions.js'\nimport { setChatDescription } from './methods/chats/set-chat-description.js'\nimport { setChatPhoto } from './methods/chats/set-chat-photo.js'\nimport { setChatTitle } from './methods/chats/set-chat-title.js'\nimport { setChatTtl } from './methods/chats/set-chat-ttl.js'\nimport { setChatUsername } from './methods/chats/set-chat-username.js'\nimport { setSlowMode } from './methods/chats/set-slow-mode.js'\nimport { toggleContentProtection } from './methods/chats/toggle-content-protection.js'\nimport { toggleFragmentUsername } from './methods/chats/toggle-fragment-username.js'\nimport { toggleJoinRequests } from './methods/chats/toggle-join-requests.js'\nimport { toggleJoinToSend } from './methods/chats/toggle-join-to-send.js'\nimport { unarchiveChats } from './methods/chats/unarchive-chats.js'\nimport { unbanChatMember } from './methods/chats/unban-chat-member.js'\nimport { addContact } from './methods/contacts/add-contact.js'\nimport { deleteContacts } from './methods/contacts/delete-contacts.js'\nimport { getContacts } from './methods/contacts/get-contacts.js'\nimport { importContacts } from './methods/contacts/import-contacts.js'\nimport { createFolder } from './methods/dialogs/create-folder.js'\nimport { deleteFolder } from './methods/dialogs/delete-folder.js'\nimport { editFolder } from './methods/dialogs/edit-folder.js'\nimport { findFolder } from './methods/dialogs/find-folder.js'\nimport { getFolders } from './methods/dialogs/get-folders.js'\nimport { getPeerDialogs } from './methods/dialogs/get-peer-dialogs.js'\nimport { iterDialogs } from './methods/dialogs/iter-dialogs.js'\nimport { setFoldersOrder } from './methods/dialogs/set-folders-order.js'\nimport { downloadAsBuffer } from './methods/files/download-buffer.js'\nimport { downloadToFile } from './methods/files/download-file.js'\nimport { downloadAsIterable } from './methods/files/download-iterable.js'\nimport { downloadAsStream } from './methods/files/download-stream.js'\nimport { _normalizeInputFile } from './methods/files/normalize-input-file.js'\nimport { _normalizeInputMedia } from './methods/files/normalize-input-media.js'\nimport { uploadFile } from './methods/files/upload-file.js'\nimport { uploadMedia } from './methods/files/upload-media.js'\nimport { createForumTopic } from './methods/forums/create-forum-topic.js'\nimport { deleteForumTopicHistory } from './methods/forums/delete-forum-topic-history.js'\nimport { editForumTopic } from './methods/forums/edit-forum-topic.js'\nimport { getForumTopics, GetForumTopicsOffset } from './methods/forums/get-forum-topics.js'\nimport { getForumTopicsById } from './methods/forums/get-forum-topics-by-id.js'\nimport { iterForumTopics } from './methods/forums/iter-forum-topics.js'\nimport { reorderPinnedForumTopics } from './methods/forums/reorder-pinned-forum-topics.js'\nimport { toggleForum } from './methods/forums/toggle-forum.js'\nimport { toggleForumTopicClosed } from './methods/forums/toggle-forum-topic-closed.js'\nimport { toggleForumTopicPinned } from './methods/forums/toggle-forum-topic-pinned.js'\nimport { toggleGeneralTopicHidden } from './methods/forums/toggle-general-topic-hidden.js'\nimport { createInviteLink } from './methods/invite-links/create-invite-link.js'\nimport { editInviteLink } from './methods/invite-links/edit-invite-link.js'\nimport { exportInviteLink } from './methods/invite-links/export-invite-link.js'\nimport { getInviteLink } from './methods/invite-links/get-invite-link.js'\nimport { getInviteLinkMembers } from './methods/invite-links/get-invite-link-members.js'\nimport { getInviteLinks, GetInviteLinksOffset } from './methods/invite-links/get-invite-links.js'\nimport { getPrimaryInviteLink } from './methods/invite-links/get-primary-invite-link.js'\nimport { hideAllJoinRequests } from './methods/invite-links/hide-all-join-requests.js'\nimport { hideJoinRequest } from './methods/invite-links/hide-join-request.js'\nimport { iterInviteLinkMembers } from './methods/invite-links/iter-invite-link-members.js'\nimport { iterInviteLinks } from './methods/invite-links/iter-invite-links.js'\nimport { revokeInviteLink } from './methods/invite-links/revoke-invite-link.js'\nimport { closePoll } from './methods/messages/close-poll.js'\nimport { deleteMessages, deleteMessagesById, DeleteMessagesParams } from './methods/messages/delete-messages.js'\nimport { deleteScheduledMessages } from './methods/messages/delete-scheduled-messages.js'\nimport { editInlineMessage } from './methods/messages/edit-inline-message.js'\nimport { editMessage } from './methods/messages/edit-message.js'\nimport { ForwardMessageOptions, forwardMessages, forwardMessagesById } from './methods/messages/forward-messages.js'\nimport { getCallbackQueryMessage } from './methods/messages/get-callback-query-message.js'\nimport { getDiscussionMessage } from './methods/messages/get-discussion-message.js'\nimport { getHistory, GetHistoryOffset } from './methods/messages/get-history.js'\nimport { getMessageByLink } from './methods/messages/get-message-by-link.js'\nimport { getMessageGroup } from './methods/messages/get-message-group.js'\nimport { getMessageReactions, getMessageReactionsById } from './methods/messages/get-message-reactions.js'\nimport { getMessages } from './methods/messages/get-messages.js'\nimport { getMessagesUnsafe } from './methods/messages/get-messages-unsafe.js'\nimport { getReactionUsers, GetReactionUsersOffset } from './methods/messages/get-reaction-users.js'\nimport { getReplyTo } from './methods/messages/get-reply-to.js'\nimport { getScheduledMessages } from './methods/messages/get-scheduled-messages.js'\nimport { iterHistory } from './methods/messages/iter-history.js'\nimport { iterReactionUsers } from './methods/messages/iter-reaction-users.js'\nimport { iterSearchGlobal } from './methods/messages/iter-search-global.js'\nimport { iterSearchMessages } from './methods/messages/iter-search-messages.js'\nimport { pinMessage } from './methods/messages/pin-message.js'\nimport { readHistory } from './methods/messages/read-history.js'\nimport { readReactions } from './methods/messages/read-reactions.js'\nimport { searchGlobal, SearchGlobalOffset } from './methods/messages/search-global.js'\nimport { searchMessages, SearchMessagesOffset } from './methods/messages/search-messages.js'\nimport { answerMedia, answerMediaGroup, answerText } from './methods/messages/send-answer.js'\nimport { commentMedia, commentMediaGroup, commentText } from './methods/messages/send-comment.js'\nimport { CommonSendParams } from './methods/messages/send-common.js'\nimport { sendCopy, SendCopyParams } from './methods/messages/send-copy.js'\nimport { sendCopyGroup, SendCopyGroupParams } from './methods/messages/send-copy-group.js'\nimport { sendMedia } from './methods/messages/send-media.js'\nimport { sendMediaGroup } from './methods/messages/send-media-group.js'\nimport { QuoteParamsFrom, quoteWithMedia, quoteWithMediaGroup, quoteWithText } from './methods/messages/send-quote.js'\nimport { sendReaction } from './methods/messages/send-reaction.js'\nimport { replyMedia, replyMediaGroup, replyText } from './methods/messages/send-reply.js'\nimport { sendScheduled } from './methods/messages/send-scheduled.js'\nimport { sendText } from './methods/messages/send-text.js'\nimport { sendTyping } from './methods/messages/send-typing.js'\nimport { sendVote } from './methods/messages/send-vote.js'\nimport { translateMessage } from './methods/messages/translate-message.js'\nimport { translateText } from './methods/messages/translate-text.js'\nimport { unpinAllMessages } from './methods/messages/unpin-all-messages.js'\nimport { unpinMessage } from './methods/messages/unpin-message.js'\nimport { initTakeoutSession } from './methods/misc/init-takeout-session.js'\nimport { _normalizePrivacyRules } from './methods/misc/normalize-privacy-rules.js'\nimport { changeCloudPassword } from './methods/password/change-cloud-password.js'\nimport { enableCloudPassword } from './methods/password/enable-cloud-password.js'\nimport { cancelPasswordEmail, resendPasswordEmail, verifyPasswordEmail } from './methods/password/password-email.js'\nimport { removeCloudPassword } from './methods/password/remove-cloud-password.js'\nimport { applyBoost } from './methods/premium/apply-boost.js'\nimport { canApplyBoost, CanApplyBoostResult } from './methods/premium/can-apply-boost.js'\nimport { getBoostStats } from './methods/premium/get-boost-stats.js'\nimport { getBoosts } from './methods/premium/get-boosts.js'\nimport { getMyBoostSlots } from './methods/premium/get-my-boost-slots.js'\nimport { iterBoosters } from './methods/premium/iter-boosters.js'\nimport { addStickerToSet } from './methods/stickers/add-sticker-to-set.js'\nimport { createStickerSet } from './methods/stickers/create-sticker-set.js'\nimport { deleteStickerFromSet } from './methods/stickers/delete-sticker-from-set.js'\nimport { getCustomEmojis, getCustomEmojisFromMessages } from './methods/stickers/get-custom-emojis.js'\nimport { getInstalledStickers } from './methods/stickers/get-installed-stickers.js'\nimport { getStickerSet } from './methods/stickers/get-sticker-set.js'\nimport { moveStickerInSet } from './methods/stickers/move-sticker-in-set.js'\nimport { setChatStickerSet } from './methods/stickers/set-chat-sticker-set.js'\nimport { setStickerSetThumb } from './methods/stickers/set-sticker-set-thumb.js'\nimport { canSendStory, CanSendStoryResult } from './methods/stories/can-send-story.js'\nimport { deleteStories } from './methods/stories/delete-stories.js'\nimport { editStory } from './methods/stories/edit-story.js'\nimport { getAllStories } from './methods/stories/get-all-stories.js'\nimport { getPeerStories } from './methods/stories/get-peer-stories.js'\nimport { getProfileStories } from './methods/stories/get-profile-stories.js'\nimport { getStoriesById } from './methods/stories/get-stories-by-id.js'\nimport { getStoriesInteractions } from './methods/stories/get-stories-interactions.js'\nimport { getStoryLink } from './methods/stories/get-story-link.js'\nimport { getStoryViewers } from './methods/stories/get-story-viewers.js'\nimport { hideMyStoriesViews } from './methods/stories/hide-my-stories-views.js'\nimport { incrementStoriesViews } from './methods/stories/increment-stories-views.js'\nimport { iterAllStories } from './methods/stories/iter-all-stories.js'\nimport { iterProfileStories } from './methods/stories/iter-profile-stories.js'\nimport { iterStoryViewers } from './methods/stories/iter-story-viewers.js'\nimport { readStories } from './methods/stories/read-stories.js'\nimport { reportStory } from './methods/stories/report-story.js'\nimport { sendStory } from './methods/stories/send-story.js'\nimport { sendStoryReaction } from './methods/stories/send-story-reaction.js'\nimport { togglePeerStoriesArchived } from './methods/stories/toggle-peer-stories-archived.js'\nimport { toggleStoriesPinned } from './methods/stories/toggle-stories-pinned.js'\nimport { blockUser } from './methods/users/block-user.js'\nimport { deleteProfilePhotos } from './methods/users/delete-profile-photos.js'\nimport { editCloseFriends, editCloseFriendsRaw } from './methods/users/edit-close-friends.js'\nimport { getCommonChats } from './methods/users/get-common-chats.js'\nimport { getGlobalTtl } from './methods/users/get-global-ttl.js'\nimport { getMe } from './methods/users/get-me.js'\nimport { getMyUsername } from './methods/users/get-my-username.js'\nimport { getProfilePhoto } from './methods/users/get-profile-photo.js'\nimport { getProfilePhotos } from './methods/users/get-profile-photos.js'\nimport { getUsers } from './methods/users/get-users.js'\nimport { iterProfilePhotos } from './methods/users/iter-profile-photos.js'\nimport { resolveChannel, resolvePeer, resolveUser } from './methods/users/resolve-peer.js'\nimport { resolvePeerMany } from './methods/users/resolve-peer-many.js'\nimport { setGlobalTtl } from './methods/users/set-global-ttl.js'\nimport { setMyEmojiStatus } from './methods/users/set-my-emoji-status.js'\nimport { setMyProfilePhoto } from './methods/users/set-my-profile-photo.js'\nimport { setMyUsername } from './methods/users/set-my-username.js'\nimport { setOffline } from './methods/users/set-offline.js'\nimport { unblockUser } from './methods/users/unblock-user.js'\nimport { updateProfile } from './methods/users/update-profile.js'\nimport { ITelegramStorageProvider } from './storage/provider.js'\nimport { Conversation } from './types/conversation.js'\nimport {\n AllStories,\n ArrayPaginated,\n ArrayWithTotal,\n Boost,\n BoostSlot,\n BoostStats,\n BotChatJoinRequestUpdate,\n BotCommands,\n BotReactionCountUpdate,\n BotReactionUpdate,\n BotStoppedUpdate,\n CallbackQuery,\n Chat,\n ChatEvent,\n ChatInviteLink,\n ChatInviteLinkMember,\n ChatJoinRequestUpdate,\n ChatMember,\n ChatMemberUpdate,\n ChatPreview,\n ChosenInlineResult,\n DeleteMessageUpdate,\n DeleteStoryUpdate,\n Dialog,\n FileDownloadLocation,\n FileDownloadParameters,\n ForumTopic,\n GameHighScore,\n HistoryReadUpdate,\n InlineCallbackQuery,\n InlineQuery,\n InputChatEventFilters,\n InputDialogFolder,\n InputFileLike,\n InputInlineResult,\n InputMediaLike,\n InputMessageId,\n InputPeerLike,\n InputPrivacyRule,\n InputReaction,\n InputStickerSet,\n InputStickerSetItem,\n InputText,\n MaybeDynamic,\n Message,\n MessageMedia,\n MessageReactions,\n ParametersSkip2,\n ParsedUpdate,\n PeerReaction,\n PeersIndex,\n PeerStories,\n Photo,\n Poll,\n PollUpdate,\n PollVoteUpdate,\n PreCheckoutQuery,\n RawDocument,\n ReplyMarkup,\n SentCode,\n Sticker,\n StickerSet,\n StickerSourceType,\n StickerType,\n StoriesStealthMode,\n Story,\n StoryInteractions,\n StoryUpdate,\n StoryViewer,\n StoryViewersList,\n TakeoutSession,\n TextWithEntities,\n TypingStatus,\n UploadedFile,\n UploadFileLike,\n User,\n UserStatusUpdate,\n UserTypingUpdate,\n} from './types/index.js'\nimport { makeParsedUpdateHandler, ParsedUpdateHandlerParams } from './updates/parsed.js'\nimport { _defaultStorageFactory } from './utils/platform/storage.js'\n\n// from methods/_init.ts\n// @copy\ntype TelegramClientOptions = (\n | (Omit<BaseTelegramClientOptions, 'storage'> & {\n /**\n * Storage to use for this client.\n *\n * If a string is passed, it will be used as:\n * - a path to a JSON file for Node.js\n * - IndexedDB database name for browsers\n *\n * If omitted, {@link MemoryStorage} is used\n */\n storage?: string | ITelegramStorageProvider\n })\n | { client: ITelegramClient }\n) & {\n updates?: Omit<ParsedUpdateHandlerParams, 'onUpdate'>\n /**\n * If `true`, the updates that were handled by some {@link Conversation}\n * will not be dispatched any further.\n *\n * @default true\n */\n skipConversationUpdates?: boolean\n}\n\nexport interface TelegramClient extends ITelegramClient {\n /**\n * Register a raw update handler\n *\n * @param name Event name\n * @param handler Raw update handler\n */\n on(name: 'raw_update', handler: (upd: tl.TypeUpdate | tl.TypeMessage, peers: PeersIndex) => void): this\n /**\n * Register a parsed update handler\n *\n * @param name Event name\n * @param handler Raw update handler\n */\n on(name: 'update', handler: (upd: ParsedUpdate) => void): this\n /**\n * Register a new message handler\n *\n * @param name Event name\n * @param handler New message handler\n */\n on(name: 'new_message', handler: (upd: Message) => void): this\n /**\n * Register an edit message handler\n *\n * @param name Event name\n * @param handler Edit message handler\n */\n on(name: 'edit_message', handler: (upd: Message) => void): this\n /**\n * Register a message group handler\n *\n * @param name Event name\n * @param handler Message group handler\n */\n on(name: 'message_group', handler: (upd: Message[]) => void): this\n /**\n * Register a delete message handler\n *\n * @param name Event name\n * @param handler Delete message handler\n */\n on(name: 'delete_message', handler: (upd: DeleteMessageUpdate) => void): this\n /**\n * Register a chat member update handler\n *\n * @param name Event name\n * @param handler Chat member update handler\n */\n on(name: 'chat_member', handler: (upd: ChatMemberUpdate) => void): this\n /**\n * Register an inline query handler\n *\n * @param name Event name\n * @param handler Inline query handler\n */\n on(name: 'inline_query', handler: (upd: InlineQuery) => void): this\n /**\n * Register a chosen inline result handler\n *\n * @param name Event name\n * @param handler Chosen inline result handler\n */\n on(name: 'chosen_inline_result', handler: (upd: ChosenInlineResult) => void): this\n /**\n * Register a callback query handler\n *\n * @param name Event name\n * @param handler Callback query handler\n */\n on(name: 'callback_query', handler: (upd: CallbackQuery) => void): this\n /**\n * Register an inline callback query handler\n *\n * @param name Event name\n * @param handler Inline callback query handler\n */\n on(name: 'inline_callback_query', handler: (upd: InlineCallbackQuery) => void): this\n /**\n * Register a poll update handler\n *\n * @param name Event name\n * @param handler Poll update handler\n */\n on(name: 'poll', handler: (upd: PollUpdate) => void): this\n /**\n * Register a poll vote handler\n *\n * @param name Event name\n * @param handler Poll vote handler\n */\n on(name: 'poll_vote', handler: (upd: PollVoteUpdate) => void): this\n /**\n * Register an user status update handler\n *\n * @param name Event name\n * @param handler User status update handler\n */\n on(name: 'user_status', handler: (upd: UserStatusUpdate) => void): this\n /**\n * Register an user typing handler\n *\n * @param name Event name\n * @param handler User typing handler\n */\n on(name: 'user_typing', handler: (upd: UserTypingUpdate) => void): this\n /**\n * Register a history read handler\n *\n * @param name Event name\n * @param handler History read handler\n */\n on(name: 'history_read', handler: (upd: HistoryReadUpdate) => void): this\n /**\n * Register a bot stopped handler\n *\n * @param name Event name\n * @param handler Bot stopped handler\n */\n on(name: 'bot_stopped', handler: (upd: BotStoppedUpdate) => void): this\n /**\n * Register a bot chat join request handler\n *\n * @param name Event name\n * @param handler Bot chat join request handler\n */\n on(name: 'bot_chat_join_request', handler: (upd: BotChatJoinRequestUpdate) => void): this\n /**\n * Register a chat join request handler\n *\n * @param name Event name\n * @param handler Chat join request handler\n */\n on(name: 'chat_join_request', handler: (upd: ChatJoinRequestUpdate) => void): this\n /**\n * Register a pre checkout query handler\n *\n * @param name Event name\n * @param handler Pre checkout query handler\n */\n on(name: 'pre_checkout_query', handler: (upd: PreCheckoutQuery) => void): this\n /**\n * Register a story update handler\n *\n * @param name Event name\n * @param handler Story update handler\n */\n on(name: 'story', handler: (upd: StoryUpdate) => void): this\n /**\n * Register a delete story handler\n *\n * @param name Event name\n * @param handler Delete story handler\n */\n on(name: 'delete_story', handler: (upd: DeleteStoryUpdate) => void): this\n /**\n * Register a bot reaction update handler\n *\n * @param name Event name\n * @param handler Bot reaction update handler\n */\n on(name: 'bot_reaction', handler: (upd: BotReactionUpdate) => void): this\n /**\n * Register a bot reaction count update handler\n *\n * @param name Event name\n * @param handler Bot reaction count update handler\n */\n on(name: 'bot_reaction_count', handler: (upd: BotReactionCountUpdate) => void): this\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n on(name: string, handler: (...args: any[]) => void): this\n /**\n * Check your Two-Step verification password and log in\n *\n * **Available**: 👤 users only\n *\n * @param password Your Two-Step verification password\n * @returns The authorized user\n * @throws BadRequestError In case the password is invalid\n */\n checkPassword(password: string): Promise<User>\n /**\n * Get your Two-Step Verification password hint.\n *\n * **Available**: 👤 users only\n *\n * @returns The password hint as a string, if any\n */\n getPasswordHint(): Promise<string | null>\n /**\n * Log out from Telegram account and optionally reset the session storage.\n *\n * When you log out, you can immediately log back in using\n * the same {@link TelegramClient} instance.\n *\n * **Available**: ✅ both users and bots\n *\n * @returns On success, `true` is returned\n */\n logOut(): Promise<true>\n /**\n * Recover your password with a recovery code and log in.\n *\n * **Available**: 👤 users only\n *\n * @returns The authorized user\n * @throws BadRequestError In case the code is invalid\n */\n recoverPassword(params: {\n /** The recovery code sent via email */\n recoveryCode: string\n }): Promise<User>\n /**\n * Re-send the confirmation code using a different type.\n *\n * The type of the code to be re-sent is specified in the `nextType` attribute of\n * {@link SentCode} object returned by {@link sendCode}\n * **Available**: 👤 users only\n *\n */\n resendCode(params: {\n /** Phone number in international format */\n phone: string\n\n /** Confirmation code identifier from {@link SentCode} */\n phoneCodeHash: string\n }): Promise<SentCode>\n /**\n * Simple wrapper that calls {@link start} and then\n * provided callback function (if any) without the\n * need to introduce a `main()` function manually.\n *\n * Errors that were encountered while calling {@link start}\n * and `then` will be emitted as usual, and can be caught with {@link onError}\n *\n * **Available**: ✅ both users and bots\n *\n * @param params Parameters to be passed to {@link start}\n * @param then Function to be called after {@link start} returns\n */\n run(params: Parameters<typeof start>[1], then?: (user: User) => void | Promise<void>): void\n /**\n * Send the confirmation code to the given phone number\n *\n * **Available**: 👤 users only\n *\n * @returns An object containing information about the sent confirmation code\n */\n sendCode(params: {\n /** Phone number in international format */\n phone: string\n }): Promise<SentCode>\n /**\n * Send a code to email needed to recover your password\n *\n * **Available**: 👤 users only\n *\n * @returns String containing email pattern to which the recovery code was sent\n */\n sendRecoveryCode(): Promise<string>\n /**\n * Authorize a bot using its token issued by [@BotFather](//t.me/BotFather)\n *\n * **Available**: ✅ both users and bots\n *\n * @param token Bot token issued by BotFather\n * @returns Bot's {@link User} object\n * @throws BadRequestError In case the bot token is invalid\n */\n signInBot(token: string): Promise<User>\n /**\n * Authorize a user in Telegram with a valid confirmation code.\n *\n * **Available**: 👤 users only\n *\n * @returns If the code was valid and authorization succeeded, the {@link User} is returned.\n * @throws BadRequestError In case the arguments are invalid\n * @throws SessionPasswordNeededError In case a password is needed to sign in\n */\n signIn(params: {\n /** Phone number in international format */\n phone: string\n /** Code identifier from {@link sendCode} */\n phoneCodeHash: string\n /** The confirmation code that was received */\n phoneCode: string\n }): Promise<User>\n /**\n * Utility function to quickly authorize on test DC\n * using a [Test phone number](https://core.telegram.org/api/auth#test-phone-numbers),\n * which is randomly generated by default.\n *\n * > **Note**: Using this method assumes that you\n * > are using a test DC in `primaryDc` parameter.\n *\n * **Available**: ✅ both users and bots\n *\n * @param params Additional parameters\n */\n startTest(params?: {\n /**\n * Whether to log out if current session is logged in.\n *\n * @default false.\n */\n logout?: boolean\n\n /**\n * Override phone number. Must be a valid Test phone number.\n *\n * By default is randomly generated.\n */\n phone?: string\n\n /**\n * Override user's DC. Must be a valid test DC.\n */\n dcId?: number\n }): Promise<User>\n\n /**\n * Start the client in an interactive and declarative manner,\n * by providing callbacks for authorization details.\n *\n * This method handles both login and sign up, and also handles 2FV\n *\n * All parameters are `MaybeDynamic<T>`, meaning you\n * can either supply `T`, or a function that returns `MaybePromise<T>`\n *\n * This method is intended for simple and fast use in automated\n * scripts and bots. If you are developing a custom client,\n * you'll probably need to use other auth methods.\n * **Available**: ✅ both users and bots\n *\n */\n start(params: {\n /**\n * String session exported using {@link TelegramClient.exportSession}.\n *\n * This simply calls {@link TelegramClient.importSession} before anything else.\n *\n * Note that passed session will be ignored in case storage already\n * contains authorization.\n */\n session?: string | StringSessionData\n\n /**\n * Whether to overwrite existing session.\n */\n sessionForce?: boolean\n\n /**\n * Phone number of the account.\n * If account does not exist, it will be created\n */\n phone?: MaybeDynamic<string>\n\n /**\n * Bot token to use. Ignored if `phone` is supplied.\n */\n botToken?: MaybeDynamic<string>\n\n /**\n * 2FA password. Ignored if `botToken` is supplied\n */\n password?: MaybeDynamic<string>\n\n /**\n * Code sent to the phone (either sms, call, flash call or other).\n * Ignored if `botToken` is supplied, must be present if `phone` is supplied.\n */\n code?: MaybeDynamic<string>\n\n /**\n * If passed, this function will be called if provided code or 2FA password\n * was invalid. New code/password will be requested later.\n *\n * If provided `code`/`password` is a constant string, providing an\n * invalid one will interrupt authorization flow.\n */\n invalidCodeCallback?: (type: 'code' | 'password') => MaybePromise<void>\n\n /**\n * Whether to force code delivery through SMS\n */\n forceSms?: boolean\n\n /**\n * Custom method that is called when a code is sent. Can be used\n * to show a GUI alert of some kind.\n *\n * This method is called *before* {@link start.params.code}.\n *\n * @param code\n * @default `console.log`.\n */\n codeSentCallback?: (code: SentCode) => MaybePromise<void>\n }): Promise<User>\n /**\n * Check if the given peer/input peer is referring to the current user\n * **Available**: ✅ both users and bots\n *\n */\n isSelfPeer(peer: tl.TypeInputPeer | tl.TypePeer | tl.TypeInputUser): boolean\n /**\n * Send an answer to a callback query.\n *\n * **Available**: 🤖 bots only\n *\n * @param queryId ID of the callback query, or the query itself\n * @param params Parameters of the answer\n */\n answerCallbackQuery(\n queryId: Long | CallbackQuery,\n params?: {\n /**\n * Maximum amount of time in seconds for which\n * this result can be cached by the client (not server!).\n *\n * @default 0\n */\n cacheTime?: number\n\n /**\n * Text of the notification (0-200 chars).\n *\n * If not set, nothing will be displayed\n */\n text?: string\n\n /**\n * Whether to show an alert in the middle of the screen\n * instead of a notification at the top of the screen.\n *\n * @default false\n */\n alert?: boolean\n\n /**\n * URL that the client should open.\n *\n * If this was a button containing a game,\n * you can provide arbitrary link to your game.\n * Otherwise, you can only use links in the format\n * `t.me/your_bot?start=...` that open your bot\n * with a deep-link parameter.\n */\n url?: string\n },\n ): Promise<void>\n /**\n * Answer an inline query.\n *\n * **Available**: 🤖 bots only\n *\n * @param queryId Inline query ID\n * @param results Results of the query\n * @param params Additional parameters\n */\n answerInlineQuery(\n queryId: tl.Long | InlineQuery,\n results: InputInlineResult[],\n params?: {\n /**\n * Maximum number of time in seconds that the results of the\n * query may be cached on the server for.\n *\n * @default 300\n */\n cacheTime?: number\n\n /**\n * Whether the results should be displayed as a gallery instead\n * of a vertical list. Only applicable to some media types.\n *\n * In some cases changing this may lead to the results not being\n * displayed by the client.\n *\n * Default is derived automatically based on result types\n */\n gallery?: boolean\n\n /**\n * Whether the results should only be cached on the server\n * for the user who sent the query.\n *\n * @default false\n */\n private?: boolean\n\n /**\n * Next pagination offset (up to 64 bytes).\n *\n * When user has reached the end of the current results,\n * the client will re-send the inline query with the same text, but\n * with `offset` set to this value.\n *\n * If omitted or empty string is provided, it is assumed that\n * there are no more results.\n */\n nextOffset?: string\n\n /**\n * If passed, clients will display a button before any other results,\n * that when clicked switches the user to a private chat with the bot\n * and sends the bot `/start ${parameter}`.\n *\n * An example from the Bot API docs:\n *\n * An inline bot that sends YouTube videos can ask the user to connect\n * the bot to their YouTube account to adapt search results accordingly.\n * To do this, it displays a \"Connect your YouTube account\" button above\n * the results, or even before showing any. The user presses the button,\n * switches to a private chat with the bot and, in doing so, passes a start\n * parameter that instructs the bot to return an oauth link. Once done, the\n * bot can offer a switch_inline button so that the user can easily return to\n * the chat where they wanted to use the bot's inline capabilities\n */\n switchPm?: {\n /**\n * Text of the button\n */\n text: string\n\n /**\n * Parameter for `/start` command\n */\n parameter: string\n }\n\n /**\n * If passed, clients will display a button on top of the remaining inline result\n * list with the specified text, that switches the user to the specified bot web app.\n */\n switchWebview?: {\n /**\n * Text of the button\n */\n text: string\n\n /**\n * URL to open\n */\n url: string\n }\n },\n ): Promise<void>\n /**\n * Answer a pre-checkout query.\n *\n * **Available**: ✅ both users and bots\n *\n * @param queryId Pre-checkout query ID\n */\n answerPreCheckoutQuery(\n queryId: tl.Long | PreCheckoutQuery,\n params?: {\n /** If pre-checkout is rejected, error message to show to the user */\n error?: string\n },\n ): Promise<void>\n /**\n * Delete commands for the current bot and the given scope.\n *\n * Does the same as passing `null` to {@link setMyCommands}\n *\n * Learn more about scopes in the [Bot API docs](https://core.telegram.org/bots/api#botcommandscope)\n * **Available**: ✅ both users and bots\n *\n */\n deleteMyCommands(params?: {\n /**\n * Scope of the commands.\n *\n * @default `BotScope.default_` (i.e. `botCommandScopeDefault`)\n */\n scope?: tl.TypeBotCommandScope | BotCommands.IntermediateScope\n\n /**\n * User language applied to the scope.\n */\n langCode?: string\n }): Promise<void>\n /**\n * Gets information about a bot the current uzer owns (or the current bot)\n * **Available**: ✅ both users and bots\n *\n */\n getBotInfo(params: {\n /**\n * When called by a user, a bot the user owns must be specified.\n * When called by a bot, must be empty\n */\n bot?: InputPeerLike\n\n /**\n * If passed, will retrieve the bot's description in the given language.\n * If left empty, will retrieve the fallback description.\n */\n langCode?: string\n }): Promise<tl.bots.RawBotInfo>\n /**\n * Fetches the menu button set for the given user.\n * **Available**: 🤖 bots only\n *\n */\n getBotMenuButton(user: InputPeerLike): Promise<tl.TypeBotMenuButton>\n /**\n * Request a callback answer from a bot,\n * i.e. click an inline button that contains data.\n *\n * **Available**: 👤 users only\n *\n * @param params\n */\n getCallbackAnswer(\n params: InputMessageId & {\n /** Data contained in the button */\n data: string | Uint8Array\n\n /**\n * Timeout for the query in ms.\n *\n * @default `10000` (10 sec)\n */\n timeout?: number\n\n /**\n * Whether this is a \"play game\" button\n */\n game?: boolean\n\n /**\n * If the button requires password entry, your 2FA password.\n *\n * Your password is never exposed to the bot,\n * it is checked by Telegram.\n */\n password?: string\n },\n ): Promise<tl.messages.TypeBotCallbackAnswer>\n /**\n * Get high scores of a game\n * **Available**: 🤖 bots only\n *\n */\n getGameHighScores(\n params: InputMessageId & {\n /** ID of the user to find high scores for */\n userId?: InputPeerLike\n },\n ): Promise<GameHighScore[]>\n /**\n * Get high scores of a game from an inline message\n *\n * **Available**: 🤖 bots only\n *\n * @param messageId ID of the inline message containing the game\n * @param userId ID of the user to find high scores for\n */\n getInlineGameHighScores(\n messageId: string | tl.TypeInputBotInlineMessageID,\n userId?: InputPeerLike,\n ): Promise<GameHighScore[]>\n /**\n * Get a list of current bot's commands for the given command scope\n * and user language. If they are not set, empty set is returned.\n *\n * Learn more about scopes in the [Bot API docs](https://core.telegram.org/bots/api#botcommandscope)\n * **Available**: ✅ both users and bots\n *\n */\n getMyCommands(params?: {\n /**\n * Scope of the commands.\n *\n * @default `BotScope.default_` (i.e. `botCommandScopeDefault`)\n */\n scope?: tl.TypeBotCommandScope | BotCommands.IntermediateScope\n\n /**\n * User language applied to the scope.\n */\n langCode?: string\n }): Promise<tl.RawBotCommand[]>\n /**\n * Sets information about a bot the current uzer owns (or the current bot)\n * **Available**: ✅ both users and bots\n *\n */\n setBotInfo(params: {\n /**\n * When called by a user, a bot the user owns must be specified.\n * When called by a bot, must be empty\n */\n bot?: InputPeerLike\n\n /**\n * If passed, will update the bot's description in the given language.\n * If left empty, will change the fallback description.\n */\n langCode?: string\n\n /** New bot name */\n name?: string\n\n /** New bio text (displayed in the profile) */\n bio?: string\n\n /** New description text (displayed when the chat is empty) */\n description?: string\n }): Promise<void>\n /**\n * Sets a menu button for the given user.\n * **Available**: ✅ both users and bots\n *\n */\n setBotMenuButton(user: InputPeerLike, button: tl.TypeBotMenuButton): Promise<void>\n /**\n * Set a score of a user in a game\n *\n * **Available**: 🤖 bots only\n *\n * @param params\n * @returns The modified message\n */\n setGameScore(\n params: InputMessageId & {\n /** ID of the user who has scored */\n userId: InputPeerLike\n\n /** The new score (must be >0) */\n score: number\n\n /**\n * When `true`, the game message will not be modified\n * to include the new score\n */\n noEdit?: boolean\n\n /**\n * Whether to allow user's score to decrease.\n * This can be useful when fixing mistakes or banning cheaters\n */\n force?: boolean\n\n /**\n * Whether to dispatch the edit message event\n * to the client's update handler.\n */\n shouldDispatch?: true\n },\n ): Promise<Message>\n /**\n * Set a score of a user in a game contained in\n * an inline message\n *\n * **Available**: 🤖 bots only\n *\n * @param params\n */\n setInlineGameScore(params: {\n /** ID of the inline message */\n messageId: string | tl.TypeInputBotInlineMessageID\n /** ID of the user who has scored */\n userId: InputPeerLike\n /** The new score (must be >0) */\n score: number\n /**\n * When `true`, the game message will not be modified\n * to include the new score\n */\n noEdit?: boolean\n\n /**\n * Whether to allow user's score to decrease.\n * This can be useful when fixing mistakes or banning cheaters\n */\n force?: boolean\n }): Promise<void>\n /**\n * Set or delete commands for the current bot and the given scope\n *\n * Learn more about scopes in the [Bot API docs](https://core.telegram.org/bots/api#botcommandscope)\n * **Available**: 🤖 bots only\n *\n */\n setMyCommands(params: {\n /**\n * New list of bot commands for the given scope.\n *\n * Pass empty array or `null` to delete them.\n */\n commands: tl.RawBotCommand[] | null\n\n /**\n * Scope of the commands.\n *\n * @default `BotScope.default_` (i.e. `botCommandScopeDefault`)\n */\n scope?: tl.TypeBotCommandScope | BotCommands.IntermediateScope\n\n /**\n * User language applied to the scope.\n */\n langCode?: string\n }): Promise<void>\n /**\n * Sets the default chat permissions for the bot in the supergroup or channel.\n * **Available**: 🤖 bots only\n *\n */\n setMyDefaultRights(params: {\n /** Whether to target groups or channels. */\n target: 'channel' | 'group'\n /** The default chat permissions. */\n rights: Omit<tl.RawChatAdminRights, '_'>\n }): Promise<void>\n /**\n * Add one or more new members to a group, supergroup or channel.\n *\n * **Available**: 👤 users only\n *\n * @param chatId ID of the chat or its username\n * @param users ID(s) of the user(s) to add\n */\n addChatMembers(\n chatId: InputPeerLike,\n users: MaybeArray<InputPeerLike>,\n params: {\n /**\n * Number of old messages to be forwarded (0-100).\n * Only applicable to legacy groups, ignored for supergroups and channels\n *\n * @default 100\n */\n forwardCount?: number\n },\n ): Promise<void>\n /**\n * Archive one or more chats\n *\n * **Available**: 👤 users only\n *\n * @param chats Chat ID(s), username(s), phone number(s), `\"me\"` or `\"self\"`\n */\n archiveChats(chats: MaybeArray<InputPeerLike>): Promise<void>\n /**\n * Ban a user/channel from a legacy group, a supergroup or a channel.\n * They will not be able to re-join the group on their own,\n * manual administrator's action will be required.\n *\n * When banning a channel, the user won't be able to use\n * any of their channels to post until the ban is lifted.\n *\n * **Available**: ✅ both users and bots\n *\n * @returns Service message about removed user, if one was generated.\n */\n banChatMember(params: {\n /** Chat ID */\n chatId: InputPeerLike\n\n /** ID of the user/channel to ban */\n participantId: InputPeerLike\n\n /**\n * Whether to dispatch the returned service message (if any)\n * to the client's update handler.\n */\n shouldDispatch?: true\n }): Promise<Message | null>\n /**\n * Create a new broadcast channel\n *\n * **Available**: 👤 users only\n *\n * @returns Newly created channel\n */\n createChannel(params: {\n /**\n * Channel title\n */\n title: string\n\n /**\n * Channel description\n */\n description?: string\n }): Promise<Chat>\n /**\n * Create a legacy group chat\n *\n * If you want to create a supergroup, use {@link createSupergroup}\n * instead.\n * **Available**: 👤 users only\n *\n */\n createGroup(params: {\n /**\n * Group title\n */\n title: string\n\n /**\n * User(s) to be invited in the group (ID(s), username(s) or phone number(s)).\n * Due to Telegram limitations, you can't create a legacy group with just yourself.\n */\n users: MaybeArray<InputPeerLike>\n\n /**\n * TTL period (in seconds) for the newly created chat\n *\n * @default 0 (i.e. messages don't expire)\n */\n ttlPeriod?: number\n }): Promise<Chat>\n /**\n * Create a new supergroup\n *\n * **Available**: 👤 users only\n *\n * @returns Newly created supergroup\n */\n createSupergroup(params: {\n /**\n * Supergroup title\n */\n title: string\n\n /**\n * Supergroup description\n */\n description?: string\n\n /**\n * Whether to create a forum\n */\n forum?: boolean\n\n /**\n * TTL period (in seconds) for the newly created supergroup\n *\n * @default 0 (i.e. messages don't expire)\n */\n ttlPeriod?: number\n }): Promise<Chat>\n\n /**\n * Delete a channel or a supergroup\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID or username\n */\n deleteChannel(chatId: InputPeerLike): Promise<void>\n\n /**\n * Delete a channel or a supergroup\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID or username\n */\n deleteSupergroup(chatId: InputPeerLike): Promise<void>\n /**\n * Delete a chat photo\n *\n * You must be an administrator and have the appropriate permissions.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID or username\n */\n deleteChatPhoto(chatId: InputPeerLike): Promise<void>\n /**\n * Delete a legacy group chat for all members\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID\n */\n deleteGroup(chatId: InputPeerLike): Promise<void>\n /**\n * Delete communication history (for private chats and legacy groups)\n * **Available**: 👤 users only\n *\n */\n deleteHistory(\n chat: InputPeerLike,\n params?: {\n /**\n * Deletion mode. Can be:\n * - `delete`: delete messages (only for yourself)\n * - `clear`: delete messages (only for yourself)\n * - `revoke`: delete messages for all users\n * - I'm not sure what's the difference between `delete` and `clear`,\n * but they are in fact different flags in TL object.\n *\n * @default 'delete'\n */\n mode: 'delete' | 'clear' | 'revoke'\n\n /**\n * Maximum ID of message to delete.\n *\n * @default 0, i.e. remove all messages\n */\n maxId?: number\n },\n ): Promise<void>\n /**\n * Delete all messages of a user (or channel) in a supergroup\n * **Available**: 👤 users only\n *\n */\n deleteUserHistory(params: {\n /** Chat ID */\n chatId: InputPeerLike\n /** User/channel ID whose messages to delete */\n participantId: InputPeerLike\n }): Promise<void>\n /**\n * Edit supergroup/channel admin rights of a user.\n * **Available**: ✅ both users and bots\n *\n */\n editAdminRights(params: {\n /** Chat ID */\n chatId: InputPeerLike\n /** User ID */\n userId: InputPeerLike\n /** New admin rights */\n rights: Omit<tl.RawChatAdminRights, '_'>\n /** Custom admin rank */\n rank?: string\n }): Promise<void>\n /**\n * Get chat event log (\"Recent actions\" in official clients).\n *\n * Only available for supergroups and channels, and\n * requires (any) administrator rights.\n *\n * Results are returned in reverse chronological\n * order (i.e. newest first) and event IDs are\n * in direct chronological order (i.e. newer\n * events have bigger event ID)\n *\n * **Available**: 👤 users only\n *\n * @param params\n */\n getChatEventLog(\n chatId: InputPeerLike,\n params?: {\n /**\n * Search query\n */\n query?: string\n\n /**\n * Minimum event ID to return\n */\n minId?: tl.Long\n\n /**\n * Maximum event ID to return,\n * can be used as a base offset\n */\n maxId?: tl.Long\n\n /**\n * List of users whose actions to return\n */\n users?: InputPeerLike[]\n\n /**\n * Event filters. Can be a TL object, or one or more\n * action types.\n *\n * Note that some filters are grouped in TL\n * (i.e. `info=true` will return `title_changed`,\n * `username_changed` and many more),\n * and when passing one or more action types,\n * they will be filtered locally.\n */\n filters?: InputChatEventFilters\n\n /**\n * Limit the number of events returned.\n *\n * > Note: when using filters, there will likely be\n * > less events returned than specified here.\n * > This limit is only used to limit the number of\n * > events to fetch from the server.\n * >\n * > If you need to limit the number of events\n * > returned, use {@link iterChatEventLog} instead.\n *\n * @default 100\n */\n limit?: number\n },\n ): Promise<ChatEvent[]>\n /**\n * Get information about a single chat member\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID or username\n * @param userId User ID, username, phone number, `\"me\"` or `\"self\"`\n * @returns Chat member, or `null` if user is not a member of the chat\n */\n getChatMember(params: {\n /** Chat ID or username */\n chatId: InputPeerLike\n /** User ID, username, phone number, `\"me\"` or `\"self\"` */\n userId: InputPeerLike\n }): Promise<ChatMember | null>\n /**\n * Get a chunk of members of some chat.\n *\n * You can retrieve up to 200 members at once\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID or username\n * @param params Additional parameters\n */\n getChatMembers(\n chatId: InputPeerLike,\n params?: {\n /**\n * Search query to filter members by their display names and usernames\n *\n * > **Note**: Only used for these values of `filter`:\n * > `all, banned, restricted, mention, contacts`\n *\n * @default `''` (empty string)\n */\n query?: string\n\n /**\n * Sequential number of the first member to be returned.\n */\n offset?: number\n\n /**\n * Maximum number of members to be retrieved.\n *\n * > **Note**: Telegram currently only allows you to ever retrieve at most\n * > 200 members, regardless of offset/limit. I.e. when passing\n * > `offset=201` nothing will ever be returned.\n *\n * @default 200\n */\n limit?: number\n\n /**\n * Type of the query. Can be:\n * - `all`: get all members\n * - `banned`: get only banned members\n * - `restricted`: get only restricted members\n * - `bots`: get only bots\n * - `recent`: get recent members\n * - `admins`: get only administrators (and creator)\n * - `contacts`: get only contacts\n * - `mention`: get users that can be mentioned (see {@link tl.RawChannelParticipantsMentions})\n *\n * Only used for channels and supergroups.\n *\n * @default `recent`\n */\n type?: 'all' | 'banned' | 'restricted' | 'bots' | 'recent' | 'admins' | 'contacts' | 'mention'\n },\n ): Promise<ArrayWithTotal<ChatMember>>\n /**\n * Get preview information about a private chat.\n *\n * **Available**: 👤 users only\n *\n * @param inviteLink Invite link\n * @throws MtArgumentError In case invite link has invalid format\n * @throws MtPeerNotFoundError\n * In case you are trying to get info about private chat that you have already joined.\n * Use {@link getChat} or {@link getFullChat} instead.\n */\n getChatPreview(inviteLink: string): Promise<ChatPreview>\n\n /**\n * Get basic information about a chat.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId ID of the chat, its username or invite link\n * @throws MtArgumentError\n * In case you are trying to get info about private chat that you haven't joined.\n * Use {@link getChatPreview} instead.\n */\n getChat(chatId: InputPeerLike): Promise<Chat>\n\n /**\n * Get full information about a chat.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId ID of the chat, its username or invite link\n * @throws MtArgumentError\n * In case you are trying to get info about private chat that you haven't joined.\n * Use {@link getChatPreview} instead.\n */\n getFullChat(chatId: InputPeerLike): Promise<Chat>\n /**\n * Get nearby chats\n *\n * **Available**: 👤 users only\n *\n * @param latitude Latitude of the location\n * @param longitude Longitude of the location\n */\n getNearbyChats(latitude: number, longitude: number): Promise<Chat[]>\n\n /**\n * Get channels that are similar to a given channel\n *\n * > **Note**: This method only returns the channels that the current user\n * > is not subscribed to. For non-premium users, this method will only return\n * > a few channels (with the total number of similar channels being specified in `.total`)\n * >\n * > Returns empty array in case there are no similar channels available.\n * **Available**: 👤 users only\n *\n */\n getSimilarChannels(channel: InputPeerLike): Promise<ArrayWithTotal<Chat>>\n /**\n * Iterate over chat event log.\n *\n * Small wrapper over {@link getChatEventLog}\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID\n * @param params\n */\n iterChatEventLog(\n chatId: InputPeerLike,\n params?: Parameters<typeof getChatEventLog>[2] & {\n /**\n * Total number of events to return.\n *\n * @default Infinity\n */\n limit?: number\n\n /**\n * Chunk size, passed as `limit` to {@link getChatEventLog}.\n * Usually you don't need to touch this.\n *\n * @default 100\n */\n chunkSize?: number\n },\n ): AsyncIterableIterator<ChatEvent>\n /**\n * Iterate through chat members\n *\n * This method is a small wrapper over {@link getChatMembers},\n * which also handles duplicate entries (i.e. does not yield\n * the same member twice)\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID or username\n * @param params Additional parameters\n */\n iterChatMembers(\n chatId: InputPeerLike,\n params?: Parameters<typeof getChatMembers>[2] & {\n /**\n * Chunk size, which will be passed as `limit` parameter\n * to {@link getChatMembers}. Usually you shouldn't care about this.\n *\n * @default `200`\n */\n chunkSize?: number\n },\n ): AsyncIterableIterator<ChatMember>\n /**\n * Join a channel or supergroup\n *\n * When using with invite links, this method may throw RPC error\n * `INVITE_REQUEST_SENT`, which means that you need to wait for admin approval.\n * You will get into the chat once they do so.\n *\n * **Available**: 👤 users only\n *\n * @param chatId\n * Chat identifier. Either an invite link (`t.me/joinchat/*`), a username (`@username`)\n * or ID of the linked supergroup or channel.\n */\n joinChat(chatId: InputPeerLike): Promise<Chat>\n /**\n * Kick a user from a chat.\n *\n * This effectively bans a user and immediately unbans them.\n *\n * **Available**: ✅ both users and bots\n *\n * @returns Service message about removed user, if one was generated.\n */\n kickChatMember(params: {\n /** Chat ID */\n chatId: InputPeerLike\n /** User ID */\n userId: InputPeerLike\n }): Promise<Message | null>\n /**\n * Leave a group chat, supergroup or channel\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID or username\n */\n leaveChat(\n chatId: InputPeerLike,\n params?: {\n /**\n * Whether to clear history after leaving (only for legacy group chats)\n */\n clear?: boolean\n },\n ): Promise<void>\n /**\n * Mark a chat as unread\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID\n */\n markChatUnread(chatId: InputPeerLike): Promise<void>\n /**\n * Inform the library that the user has opened a chat.\n *\n * Some library logic depends on this, for example, the library will\n * periodically ping the server to keep the updates flowing.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chat Chat to open\n */\n openChat(chat: InputPeerLike): Promise<void>\n /**\n * Inform the library that the user has closed a chat.\n * Un-does the effect of {@link openChat}.\n *\n * Some library logic depends on this, for example, the library will\n * periodically ping the server to keep the updates flowing.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chat Chat to open\n */\n closeChat(chat: InputPeerLike): Promise<void>\n /**\n * Reorder usernames\n *\n * **Available**: 👤 users only\n *\n * @param peerId Bot, channel or \"me\"/\"self\"\n */\n reorderUsernames(peerId: InputPeerLike, order: string[]): Promise<void>\n /**\n * Restrict a user in a supergroup.\n * **Available**: ✅ both users and bots\n *\n */\n restrictChatMember(params: {\n /** Chat ID */\n chatId: InputPeerLike\n\n /** User ID */\n userId: InputPeerLike\n\n /**\n * Restrictions for the user. Note that unlike Bot API, this object contains\n * the restrictions, and not the permissions, i.e.\n * passing `sendMessages=true` will disallow the user to send messages,\n * and passing `{}` (empty object) will lift any restrictions\n */\n restrictions: Omit<tl.RawChatBannedRights, '_' | 'untilDate'>\n\n /**\n * Date when the user will be unrestricted.\n * When `number` is passed, UNIX time in ms is expected.\n * If this value is less than 30 seconds or more than 366 days in\n * the future, user will be restricted forever.\n *\n * @default `0`, i.e. forever\n */\n until?: number | Date\n }): Promise<void>\n /**\n * Save or delete a draft message associated with some chat\n *\n * **Available**: 👤 users only\n *\n * @param chatId ID of the chat, its username, phone or `\"me\"` or `\"self\"`\n * @param draft Draft message, or `null` to delete.\n */\n saveDraft(chatId: InputPeerLike, draft: null | Omit<tl.RawDraftMessage, '_' | 'date'>): Promise<void>\n\n /**\n * Set peer color and optionally background pattern\n * **Available**: 👤 users only\n *\n */\n setChatColor(params: {\n /**\n * Peer where to update the color.\n *\n * By default will change the color for the current user\n */\n peer?: InputPeerLike\n\n /**\n * Color identificator\n *\n * Note that this value is **not** an RGB color representation. Instead, it is\n * a number which should be used to pick a color from a predefined\n * list of colors:\n * - `0-6` are the default colors used by Telegram clients:\n * `red, orange, purple, green, sea, blue, pink`\n * - `>= 7` are returned by `help.getAppConfig`.\n */\n color: number\n\n /**\n * Background pattern emoji ID.\n *\n * Must be an adaptive emoji, otherwise the request will fail.\n */\n backgroundEmojiId?: tl.Long\n\n /**\n * Whether to set this color for the profile\n * header instead of chat name/replies.\n *\n * Currently only available for the current user.\n */\n forProfile?: boolean\n }): Promise<void>\n /**\n * Change default chat permissions for all members.\n *\n * You must be an administrator in the chat and have appropriate permissions.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID or username\n * @param restrictions\n * Restrictions for the chat. Note that unlike Bot API, this object contains\n * the restrictions, and not the permissions, i.e.\n * passing `sendMessages=true` will disallow the users to send messages,\n * and passing `{}` (empty object) will lift any restrictions\n */\n setChatDefaultPermissions(\n chatId: InputPeerLike,\n restrictions: Omit<tl.RawChatBannedRights, '_' | 'untilDate'>,\n ): Promise<Chat>\n /**\n * Change chat description\n *\n * You must be an administrator and have the appropriate permissions.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID or username\n * @param description New chat description, 0-255 characters\n */\n setChatDescription(chatId: InputPeerLike, description: string): Promise<void>\n /**\n * Set a new chat photo or video.\n *\n * You must be an administrator and have the appropriate permissions.\n * **Available**: ✅ both users and bots\n *\n */\n setChatPhoto(params: {\n /** Chat ID or username */\n chatId: InputPeerLike\n\n /** Media type (photo or video) */\n\n type: 'photo' | 'video'\n\n /** Input media file */\n media: InputFileLike\n /**\n * When `type = video`, timestamp in seconds which will be shown\n * as a static preview.\n */\n previewSec?: number\n }): Promise<void>\n /**\n * Change chat title\n *\n * You must be an administrator and have the appropriate permissions.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID or username\n * @param title New chat title, 1-255 characters\n */\n setChatTitle(chatId: InputPeerLike, title: string): Promise<void>\n /**\n * Set maximum Time-To-Live of all newly sent messages in the specified chat\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID\n * @param period New TTL period, in seconds (or 0 to disable)\n */\n setChatTtl(chatId: InputPeerLike, period: number): Promise<void>\n /**\n * Change supergroup/channel username\n *\n * You must be an administrator and have the appropriate permissions.\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID or current username\n * @param username New username, or `null` to remove\n */\n setChatUsername(chatId: InputPeerLike, username: string | null): Promise<void>\n /**\n * Set supergroup's slow mode interval.\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID or username\n * @param [seconds=0]\n * Slow mode interval in seconds.\n * Users will be able to send a message only once per this interval.\n * Valid values are: `0 (off), 10, 30, 60 (1m), 300 (5m), 900 (15m) or 3600 (1h)`\n */\n setSlowMode(chatId: InputPeerLike, seconds?: number): Promise<void>\n /**\n * Set whether a chat has content protection (i.e. forwarding messages is disabled)\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID or username\n * @param [enabled=false] Whether content protection should be enabled\n */\n toggleContentProtection(chatId: InputPeerLike, enabled?: boolean): Promise<void>\n /**\n * Toggle a collectible (Fragment) username\n *\n * > **Note**: non-collectible usernames must still be changed\n * > using {@link setUsername}/{@link setChatUsername}\n * **Available**: 👤 users only\n *\n */\n toggleFragmentUsername(params: {\n /** Peer ID whose username to toggle */\n peerId: InputPeerLike\n\n /**\n * Username to toggle\n */\n username: string\n\n /**\n * Whether to enable or disable the username\n */\n active: boolean\n }): Promise<void>\n /**\n * Set whether a channel/supergroup has join requests enabled.\n *\n * > **Note**: this method only affects primary invite links.\n * > Additional invite links may exist with the opposite setting.\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID or username\n * @param [enabled=false] Whether join requests should be enabled\n */\n toggleJoinRequests(chatId: InputPeerLike, enabled?: boolean): Promise<void>\n /**\n * Set whether a channel/supergroup has join-to-send setting enabled.\n *\n * This only affects discussion groups where users can send messages\n * without joining the group.\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID or username\n * @param [enabled=false] Whether join-to-send setting should be enabled\n */\n toggleJoinToSend(chatId: InputPeerLike, enabled?: boolean): Promise<void>\n /**\n * Unarchive one or more chats\n *\n * **Available**: 👤 users only\n *\n * @param chats Chat ID(s), username(s), phone number(s), `\"me\"` or `\"self\"`\n */\n unarchiveChats(chats: MaybeArray<InputPeerLike>): Promise<void>\n\n /**\n * Unban a user/channel from a supergroup or a channel,\n * or remove any restrictions that they have.\n * Unbanning does not add the user back to the chat, this\n * just allows the user to join the chat again, if they want.\n *\n * This method acts as a no-op in case a legacy group is passed.\n * **Available**: ✅ both users and bots\n *\n */\n unbanChatMember(params: {\n /** Chat ID */\n chatId: InputPeerLike\n\n /** User/channel ID who should be unbanned */\n participantId: InputPeerLike\n }): Promise<void>\n\n /**\n * Unban a user/channel from a supergroup or a channel,\n * or remove any restrictions that they have.\n * Unbanning does not add the user back to the chat, this\n * just allows the user to join the chat again, if they want.\n *\n * This method acts as a no-op in case a legacy group is passed.\n * **Available**: ✅ both users and bots\n *\n */\n unrestrictChatMember(params: {\n /** Chat ID */\n chatId: InputPeerLike\n\n /** User/channel ID who should be unbanned */\n participantId: InputPeerLike\n }): Promise<void>\n /**\n * Add an existing Telegram user as a contact\n * **Available**: 👤 users only\n *\n */\n addContact(params: {\n /** User ID, username or phone number */\n userId: InputPeerLike\n\n /**\n * First name of the contact\n */\n firstName: string\n\n /**\n * Last name of the contact\n */\n lastName?: string\n\n /**\n * Phone number of the contact, if available\n */\n phone?: string\n\n /**\n * Whether to share your own phone number\n * with the newly created contact\n *\n * @default false\n */\n sharePhone?: boolean\n }): Promise<User>\n /**\n * Delete one or more contacts from your Telegram contacts list\n *\n * Returns deleted contact's profiles. Does not return\n * profiles of users that were not in your contacts list\n *\n * **Available**: 👤 users only\n *\n * @param userIds User IDs, usernames or phone numbers\n */\n deleteContacts(userIds: MaybeArray<InputPeerLike>): Promise<User[]>\n /**\n * Get list of contacts from your Telegram contacts list.\n * **Available**: 👤 users only\n *\n */\n getContacts(): Promise<User[]>\n /**\n * Import contacts to your Telegram contacts list.\n *\n * **Available**: 👤 users only\n *\n * @param contacts List of contacts\n */\n importContacts(\n contacts: PartialOnly<Omit<tl.RawInputPhoneContact, '_'>, 'clientId'>[],\n ): Promise<tl.contacts.RawImportedContacts>\n /**\n * Create a folder from given parameters\n *\n * ID for the folder is optional, if not\n * provided it will be derived automatically.\n *\n * **Available**: 👤 users only\n *\n * @param folder Parameters for the folder\n * @returns Newly created folder\n */\n createFolder(folder: PartialExcept<tl.RawDialogFilter, 'title'>): Promise<tl.RawDialogFilter>\n /**\n * Delete a folder by its ID\n *\n * **Available**: 👤 users only\n *\n * @param id Folder ID or folder itself\n */\n deleteFolder(id: number | tl.RawDialogFilter): Promise<void>\n /**\n * Edit a folder with given modification\n *\n * **Available**: 👤 users only\n *\n * @returns Modified folder\n */\n editFolder(params: {\n /**\n * Folder, folder ID or name.\n * Note that passing an ID or name will require re-fetching all folders,\n * and passing name might affect not the right folder if you have multiple\n * with the same name.\n */\n folder: tl.RawDialogFilter | number | string\n\n /** Modification to be applied to this folder */\n modification: Partial<Omit<tl.RawDialogFilter, 'id' | '_'>>\n }): Promise<tl.RawDialogFilter>\n /**\n * Find a folder by its parameter.\n *\n * > **Note**: Searching by title and/or emoji might not be\n * > accurate since you can set the same title and/or emoji\n * > to multiple folders.\n *\n * **Available**: ✅ both users and bots\n *\n * @param params Search parameters. At least one must be set.\n */\n findFolder(params: {\n /** Folder title */\n title?: string\n /** Folder emoji */\n emoji?: string\n /** Folder ID */\n id?: number\n }): Promise<tl.RawDialogFilter | null>\n /**\n * Get list of folders.\n * **Available**: 👤 users only\n *\n */\n getFolders(): Promise<tl.TypeDialogFilter[]>\n /**\n * Get dialogs with certain peers.\n *\n * **Available**: 👤 users only\n *\n * @param peers Peers for which to fetch dialogs.\n */\n getPeerDialogs(peers: MaybeArray<InputPeerLike>): Promise<Dialog[]>\n /**\n * Iterate over dialogs.\n *\n * Note that due to Telegram API limitations,\n * ordering here can only be anti-chronological\n * (i.e. newest - first), and draft update date\n * is not considered when sorting.\n *\n * **Available**: 👤 users only\n *\n * @param params Fetch parameters\n */\n iterDialogs(params?: {\n /**\n * Offset message date used as an anchor for pagination.\n */\n offsetDate?: Date | number\n\n /**\n * Offset message ID used as an anchor for pagination\n */\n offsetId?: number\n\n /**\n * Offset peer used as an anchor for pagination\n */\n offsetPeer?: tl.TypeInputPeer\n\n /**\n * Limits the number of dialogs to be received.\n *\n * @default `Infinity`, i.e. all dialogs are fetched\n */\n limit?: number\n\n /**\n * Chunk size which will be passed to `messages.getDialogs`.\n * You shouldn't usually care about this.\n *\n * @default 100.\n */\n chunkSize?: number\n\n /**\n * How to handle pinned dialogs?\n *\n * Whether to `include` them at the start of the list,\n * `exclude` them at all, or `only` return pinned dialogs.\n *\n * Additionally, for folders you can specify\n * `keep`, which will return pinned dialogs\n * ordered by date among other non-pinned dialogs.\n *\n * > **Note**: When using `include` mode with folders,\n * > pinned dialogs will only be fetched if all offset\n * > parameters are unset.\n *\n * @default `include`.\n */\n pinned?: 'include' | 'exclude' | 'only' | 'keep'\n\n /**\n * How to handle archived chats?\n *\n * Whether to `keep` them among other dialogs,\n * `exclude` them from the list, or `only`\n * return archived dialogs\n *\n * Ignored for folders, since folders\n * themselves contain information about archived chats.\n *\n * > **Note**: when `pinned=only`, `archived=keep` will act as `only`\n * > because of Telegram API limitations.\n *\n * @default `exclude`\n */\n archived?: 'keep' | 'exclude' | 'only'\n\n /**\n * Folder from which the dialogs will be fetched.\n *\n * You can pass folder object, id or title\n *\n * Note that passing anything except object will\n * cause the list of the folders to be fetched,\n * and passing a title may fetch from\n * a wrong folder if you have multiple with the same title.\n *\n * Also note that fetching dialogs in a folder is\n * *orders of magnitudes* slower than normal because\n * of Telegram API limitations - we have to fetch all dialogs\n * and filter the ones we need manually. If possible,\n * use {@link Dialog.filterFolder} instead.\n *\n * When a folder with given ID or title is not found,\n * {@link MtArgumentError} is thrown\n *\n * @default <empty> (fetches from \"All\" folder)\n */\n folder?: InputDialogFolder\n\n /**\n * Additional filtering for the dialogs.\n *\n * If `folder` is not provided, this filter is used instead.\n * If `folder` is provided, fields from this object are used\n * to override filters inside the folder.\n */\n filter?: Partial<Omit<tl.RawDialogFilter, '_' | 'id' | 'title'>>\n }): AsyncIterableIterator<Dialog>\n /**\n * Reorder folders\n *\n * **Available**: 👤 users only\n *\n * @param order New order of folders (folder IDs, where default = 0)\n */\n setFoldersOrder(order: number[]): Promise<void>\n /**\n * Download a file and return its contents as a Buffer.\n *\n * > **Note**: This method _will_ download the entire file\n * > into memory at once. This might cause an issue, so use wisely!\n *\n * **Available**: ✅ both users and bots\n *\n * @param params File download parameters\n */\n downloadAsBuffer(location: FileDownloadLocation, params?: FileDownloadParameters): Promise<Uint8Array>\n /**\n * Download a remote file to a local file (only for NodeJS).\n * Promise will resolve once the download is complete.\n *\n * **Available**: ✅ both users and bots\n *\n * @param filename Local file name to which the remote file will be downloaded\n * @param params File download parameters\n */\n downloadToFile(filename: string, location: FileDownloadLocation, params?: FileDownloadParameters): Promise<void>\n /**\n * Download a file and return it as an iterable, which yields file contents\n * in chunks of a given size. Order of the chunks is guaranteed to be\n * consecutive.\n *\n * **Available**: 👤 users only\n *\n * @param params Download parameters\n */\n downloadAsIterable(input: FileDownloadLocation, params?: FileDownloadParameters): AsyncIterableIterator<Uint8Array>\n /**\n * Download a file and return it as a readable stream,\n * streaming file contents.\n *\n * **Available**: ✅ both users and bots\n *\n * @param params File download parameters\n */\n downloadAsStream(location: FileDownloadLocation, params?: FileDownloadParameters): ReadableStream<Uint8Array>\n /**\n * Normalize a {@link InputFileLike} to `InputFile`,\n * uploading it if needed.\n * **Available**: ✅ both users and bots\n *\n */\n _normalizeInputFile(\n input: InputFileLike,\n params: {\n progressCallback?: (uploaded: number, total: number) => void\n fileName?: string\n fileSize?: number\n fileMime?: string\n },\n ): Promise<tl.TypeInputFile>\n /**\n * Normalize an {@link InputMediaLike} to `InputMedia`,\n * uploading the file if needed.\n * **Available**: ✅ both users and bots\n *\n */\n _normalizeInputMedia(\n media: InputMediaLike,\n params?: {\n progressCallback?: (uploaded: number, total: number) => void\n uploadPeer?: tl.TypeInputPeer\n },\n uploadMedia?: boolean,\n ): Promise<tl.TypeInputMedia>\n\n /**\n * Upload a file to Telegram servers, without actually\n * sending a message anywhere. Useful when an `InputFile` is required.\n *\n * This method is quite low-level, and you should use other\n * methods like {@link sendMedia} that handle this under the hood.\n *\n * **Available**: ✅ both users and bots\n *\n * @param params Upload parameters\n */\n uploadFile(params: {\n /**\n * Upload file source.\n *\n * > **Note**: `fs.ReadStream` is a subclass of `stream.Readable` and contains\n * > info about file name, thus you don't need to pass them explicitly.\n */\n file: UploadFileLike\n\n /**\n * File name for the uploaded file. Is usually inferred from path,\n * but should be provided for files sent as `Buffer` or stream.\n *\n * When file name can't be inferred, it falls back to \"unnamed\"\n */\n fileName?: string\n\n /**\n * Total file size. Automatically inferred for Buffer, File and local files.\n */\n fileSize?: number\n\n /**\n * If the file size is unknown, you can provide an estimate,\n * which will be used to determine appropriate part size.\n */\n estimatedSize?: number\n\n /**\n * File MIME type. By default is automatically inferred from magic number\n * If MIME can't be inferred, it defaults to `application/octet-stream`\n */\n fileMime?: string\n\n /**\n * Upload part size (in KB).\n *\n * By default, automatically selected by file size.\n * Must not be bigger than 512 and must not be a fraction.\n */\n partSize?: number\n\n /**\n * Number of parts to be sent in parallel per connection.\n */\n requestsPerConnection?: number\n\n /**\n * Function that will be called after some part has been uploaded.\n *\n * @param uploaded Number of bytes already uploaded\n * @param total Total file size, if known\n */\n progressCallback?: (uploaded: number, total: number) => void\n\n /**\n * When using `inputMediaUploadedPhoto` (e.g. when sending an uploaded photo) require\n * the file size to be known beforehand.\n *\n * In case this is set to `true`, a stream is passed as `file` and the file size is unknown,\n * the stream will be buffered in memory and the file size will be inferred from the buffer.\n */\n requireFileSize?: boolean\n }): Promise<UploadedFile>\n /**\n * Upload a media to Telegram servers, without actually\n * sending a message anywhere. Useful when File ID is needed.\n *\n * The difference with {@link uploadFile} is that\n * the returned object will act like a message media\n * and contain fields like File ID.\n *\n * **Available**: ✅ both users and bots\n *\n * @param media Media to upload\n * @param [params={}] Upload parameters\n */\n uploadMedia(\n media: InputMediaLike,\n params?: {\n peer?: InputPeerLike\n progressCallback?: (uploaded: number, total: number) => void\n },\n ): Promise<Extract<MessageMedia, Photo | RawDocument>>\n /**\n * Create a topic in a forum\n *\n * Only admins with `manageTopics` permission can do this.\n *\n * **Available**: ✅ both users and bots\n *\n * @returns Service message for the created topic\n */\n createForumTopic(params: {\n /** Chat ID or username */\n chatId: InputPeerLike\n\n /**\n * Topic title\n */\n title: string\n\n /**\n * Icon of the topic.\n *\n * Can be a number (color in RGB, see {@link ForumTopic} static members for allowed values)\n * or a custom emoji ID.\n *\n * Icon color can't be changed after the topic is created.\n */\n icon?: number | tl.Long\n\n /**\n * Send as a specific channel\n */\n sendAs?: InputPeerLike\n\n /**\n * Whether to dispatch the returned service message (if any)\n * to the client's update handler.\n */\n shouldDispatch?: true\n }): Promise<Message>\n /**\n * Delete a forum topic and all its history\n *\n * **Available**: ✅ both users and bots\n *\n * @param chat Chat or user ID, username, phone number, `\"me\"` or `\"self\"`\n * @param topicId ID of the topic (i.e. its top message ID)\n */\n deleteForumTopicHistory(chat: InputPeerLike, topicId: number | ForumTopic): Promise<void>\n /**\n * Modify a topic in a forum\n *\n * Only admins with `manageTopics` permission can do this.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID or username\n * @param topicId ID of the topic (i.e. its top message ID)\n * @returns Service message about the modification\n */\n editForumTopic(params: {\n /** Chat ID or username */\n chatId: InputPeerLike\n\n /** ID of the topic (i.e. its top message ID) */\n topicId: number | ForumTopic\n\n /**\n * New topic title\n */\n title?: string\n\n /**\n * New icon of the topic.\n *\n * Can be a custom emoji ID, or `null` to remove the icon\n * and use static color instead\n */\n icon?: tl.Long | null\n\n /**\n * Whether to dispatch the returned service message (if any)\n * to the client's update handler.\n */\n shouldDispatch?: true\n }): Promise<Message>\n /**\n * Get forum topics by their IDs\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID or username\n */\n getForumTopicsById(chatId: InputPeerLike, ids: MaybeArray<number>): Promise<ForumTopic[]>\n /**\n * Get forum topics\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID or username\n */\n getForumTopics(\n chatId: InputPeerLike,\n params?: {\n /**\n * Search query\n */\n query?: string\n\n /**\n * Offset for pagination\n */\n offset?: GetForumTopicsOffset\n\n /**\n * Maximum number of topics to return.\n *\n * @default 100\n */\n limit?: number\n },\n ): Promise<ArrayPaginated<ForumTopic, GetForumTopicsOffset>>\n /**\n * Iterate over forum topics. Wrapper over {@link getForumTopics}.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID or username\n */\n iterForumTopics(\n chatId: InputPeerLike,\n params?: Parameters<typeof getForumTopics>[2] & {\n /**\n * Maximum number of topics to return.\n *\n * @default `Infinity`, i.e. return all topics\n */\n limit?: number\n\n /**\n * Chunk size. Usually you shouldn't care about this.\n */\n chunkSize?: number\n },\n ): AsyncIterableIterator<ForumTopic>\n /**\n * Reorder pinned forum topics\n *\n * Only admins with `manageTopics` permission can do this.\n * **Available**: ✅ both users and bots\n *\n */\n reorderPinnedForumTopics(params: {\n /** Chat ID or username */\n chatId: InputPeerLike\n\n /**\n * Order of the pinned topics\n */\n order: (number | ForumTopic)[]\n\n /**\n * Whether to un-pin topics not present in the order\n */\n force?: boolean\n }): Promise<void>\n /**\n * Toggle open/close status of a topic in a forum\n *\n * Only admins with `manageTopics` permission can do this.\n *\n * **Available**: ✅ both users and bots\n *\n * @returns Service message about the modification\n */\n toggleForumTopicClosed(parmas: {\n /** Chat ID or username */\n chatId: InputPeerLike\n\n /** ID of the topic (i.e. its top message ID) */\n topicId: number | ForumTopic\n\n /** Whether the topic should be closed */\n closed: boolean\n\n /**\n * Whether to dispatch the returned service message (if any)\n * to the client's update handler.\n */\n shouldDispatch?: true\n }): Promise<Message>\n /**\n * Toggle whether a topic in a forum is pinned\n *\n * Only admins with `manageTopics` permission can do this.\n * **Available**: ✅ both users and bots\n *\n */\n toggleForumTopicPinned(params: {\n /** Chat ID or username */\n chatId: InputPeerLike\n /** ID of the topic (i.e. its top message ID) */\n topicId: number | ForumTopic\n /** Whether the topic should be pinned */\n pinned: boolean\n }): Promise<void>\n /**\n * Set whether a supergroup is a forum.\n *\n * Only owner of the supergroup can change this setting.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID or username\n * @param [enabled=false] Whether the supergroup should be a forum\n */\n toggleForum(chatId: InputPeerLike, enabled?: boolean): Promise<void>\n /**\n * Toggle whether \"General\" topic in a forum is hidden or not\n *\n * Only admins with `manageTopics` permission can do this.\n *\n * **Available**: ✅ both users and bots\n *\n * @returns Service message about the modification\n */\n toggleGeneralTopicHidden(params: {\n /** Chat ID or username */\n chatId: InputPeerLike\n /** Whether the topic should be hidden */\n hidden: boolean\n\n /**\n * Whether to dispatch the returned service message (if any)\n * to the client's update handler.\n */\n shouldDispatch?: true\n }): Promise<Message>\n /**\n * Create an additional invite link for the chat.\n *\n * You must be an administrator and have appropriate rights.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID\n * @param params\n */\n createInviteLink(\n chatId: InputPeerLike,\n params?: {\n /**\n * Date when this link will expire.\n * If `number` is passed, UNIX time in ms is expected.\n */\n expires?: number | Date\n\n /**\n * Maximum number of users that can be members of this chat\n * at the same time after joining using this link.\n *\n * Integer in range `[1, 99999]` or `Infinity`\n *\n * @default `Infinity`\n */\n usageLimit?: number\n\n /**\n * Whether users to be joined via this link need to be\n * approved by an admin\n */\n withApproval?: boolean\n },\n ): Promise<ChatInviteLink>\n /**\n * Edit an invite link. You can only edit non-primary\n * invite links.\n *\n * Only pass the fields that you want to modify.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID\n * @param link Invite link to edit\n * @param params\n * @returns Modified invite link\n */\n editInviteLink(params: {\n /** Chat ID */\n chatId: InputPeerLike\n /** Invite link to edit */\n link: string | ChatInviteLink\n /**\n * Date when this link will expire.\n * If `number` is passed, UNIX time in ms is expected.\n */\n expires?: number | Date\n\n /**\n * Maximum number of users that can be members of this chat\n * at the same time after joining using this link.\n *\n * Integer in range `[1, 99999]` or `Infinity`,\n */\n usageLimit?: number\n\n /**\n * Whether users to be joined via this link need to be\n * approved by an admin\n */\n withApproval?: boolean\n }): Promise<ChatInviteLink>\n /**\n * Generate a new primary invite link for a chat,\n * old primary link is revoked.\n *\n * > **Note**: each administrator has their own primary invite link,\n * > and bots by default don't have one.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat IDs\n */\n exportInviteLink(chatId: InputPeerLike): Promise<ChatInviteLink>\n /**\n * Iterate over users who have joined\n * the chat with the given invite link.\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID\n * @param params Additional params\n */\n getInviteLinkMembers(\n chatId: InputPeerLike,\n params?: {\n /**\n * Invite link for which to get members\n */\n link?: string | ChatInviteLink\n\n /**\n * Maximum number of users to return\n *\n * @default 100\n */\n limit?: number\n\n /**\n * Offset request/join date used as an anchor for pagination.\n */\n offsetDate?: Date | number\n\n /**\n * Offset user used as an anchor for pagination\n */\n offsetUser?: tl.TypeInputUser\n\n /**\n * Whether to get users who have requested to join\n * the chat but weren't accepted yet\n */\n requested?: boolean\n\n /**\n * Search for a user in the pending join requests list\n * (if passed, {@link requested} is assumed to be true)\n *\n * Doesn't work when {@link link} is set (Telegram limitation)\n */\n requestedSearch?: string\n },\n ): Promise<ArrayPaginated<ChatInviteLinkMember, { date: number; user: tl.TypeInputUser }>>\n /**\n * Get detailed information about an invite link\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID\n * @param link The invite link\n */\n getInviteLink(chatId: InputPeerLike, link: string): Promise<ChatInviteLink>\n /**\n * Get invite links created by some administrator in the chat.\n *\n * As an administrator you can only get your own links\n * (i.e. `adminId = \"self\"`), as a creator you can get\n * any other admin's links.\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID\n * @param adminId Admin who created the links\n * @param params\n */\n getInviteLinks(\n chatId: InputPeerLike,\n params?: {\n /**\n * Only return this admin's links.\n *\n * @default `\"self\"`\n */\n admin?: InputPeerLike\n\n /**\n * Whether to fetch revoked invite links\n */\n revoked?: boolean\n\n /**\n * Limit the number of invite links to be fetched.\n *\n * @default 100\n */\n limit?: number\n\n /**\n * Offset for pagination.\n */\n offset?: GetInviteLinksOffset\n },\n ): Promise<ArrayPaginated<ChatInviteLink, GetInviteLinksOffset>>\n /**\n * Get primary invite link of a chat\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID\n */\n getPrimaryInviteLink(chatId: InputPeerLike): Promise<ChatInviteLink>\n /**\n * Approve or decline multiple join requests to a chat.\n * **Available**: 👤 users only\n *\n */\n hideAllJoinRequests(params: {\n /** Chat/channel ID */\n chatId: InputPeerLike\n\n /** Whether to approve or decline the join requests */\n action: 'approve' | 'decline'\n\n /** Invite link to target */\n link?: string | ChatInviteLink\n }): Promise<void>\n /**\n * Approve or decline join request to a chat.\n * **Available**: ✅ both users and bots\n *\n */\n hideJoinRequest(params: {\n /** Chat/channel ID */\n chatId: InputPeerLike\n /** User ID */\n user: InputPeerLike\n /** Whether to approve or decline the join request */\n action: 'approve' | 'decline'\n }): Promise<void>\n /**\n * Iterate over users who have joined\n * the chat with the given invite link.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID\n * @param params Additional params\n */\n iterInviteLinkMembers(\n chatId: InputPeerLike,\n params?: Parameters<typeof getInviteLinkMembers>[2] & {\n /**\n * Maximum number of users to return\n *\n * @default `Infinity`, i.e. all users are fetched\n */\n limit?: number\n\n /**\n * Chunk size which will be passed to `messages.getChatInviteImporters`.\n * You shouldn't usually care about this.\n *\n * @default 100.\n */\n chunkSize?: number\n },\n ): AsyncIterableIterator<ChatInviteLinkMember>\n /**\n * Iterate over invite links created by some administrator in the chat.\n *\n * As an administrator you can only get your own links\n * (i.e. `adminId = \"self\"`), as a creator you can get\n * any other admin's links.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID\n * @param adminId Admin who created the links\n * @param params\n */\n iterInviteLinks(\n chatId: InputPeerLike,\n params?: Parameters<typeof getInviteLinks>[2] & {\n /**\n * Limit the number of invite links to be fetched.\n * By default, all links are fetched.\n */\n limit?: number\n\n /**\n * Size of chunks which are fetched. Usually not needed.\n *\n * @default `100`\n */\n chunkSize?: number\n },\n ): AsyncIterableIterator<ChatInviteLink>\n /**\n * Revoke an invite link.\n *\n * If `link` is a primary invite link, a new invite link will be\n * generated automatically by Telegram\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID\n * @param link Invite link to revoke\n * @returns If `link` is a primary invite, newly generated invite link, otherwise the revoked link\n */\n revokeInviteLink(chatId: InputPeerLike, link: string | ChatInviteLink): Promise<ChatInviteLink>\n /**\n * Close a poll sent by you.\n *\n * Once closed, poll can't be re-opened, and nobody\n * will be able to vote in it\n * **Available**: ✅ both users and bots\n *\n */\n closePoll(\n params: InputMessageId & {\n /**\n * Whether to dispatch the edit message event\n * to the client's update handler.\n */\n shouldDispatch?: true\n },\n ): Promise<Poll>\n /**\n * Delete messages by their IDs\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat's marked ID, its username, phone or `\"me\"` or `\"self\"`.\n * @param ids Message(s) ID(s) to delete.\n */\n deleteMessagesById(chatId: InputPeerLike, ids: number[], params?: DeleteMessagesParams): Promise<void>\n /**\n * Delete one or more {@link Message}\n *\n * **Available**: ✅ both users and bots\n *\n * @param messages Message(s) to delete\n */\n deleteMessages(messages: Message[], params?: DeleteMessagesParams): Promise<void>\n /**\n * Delete scheduled messages by their IDs.\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat's marked ID, its username, phone or `\"me\"` or `\"self\"`.\n * @param ids Message(s) ID(s) to delete.\n */\n deleteScheduledMessages(chatId: InputPeerLike, ids: number[]): Promise<void>\n /**\n * Edit sent inline message text, media and reply markup.\n *\n * **Available**: ✅ both users and bots\n *\n * @param messageId\n * Inline message ID, either as a TL object, or as a\n * TDLib and Bot API compatible string\n * @param params\n */\n editInlineMessage(params: {\n /**\n * Inline message ID, either as a TL object, or as a\n * TDLib and Bot API compatible string\n */\n messageId: tl.TypeInputBotInlineMessageID | string\n\n /**\n * New message text\n *\n * When `media` is passed, `media.caption` is used instead\n */\n text?: InputText\n\n /**\n * New message media\n */\n media?: InputMediaLike\n\n /**\n * Whether to disable links preview in this message\n */\n disableWebPreview?: boolean\n\n /**\n * Whether to invert media position.\n *\n * Currently only supported for web previews and makes the\n * client render the preview above the caption and not below.\n */\n invertMedia?: boolean\n\n /**\n * For bots: new reply markup.\n * If omitted, existing markup will be removed.\n */\n replyMarkup?: ReplyMarkup\n\n /**\n * For media, upload progress callback.\n *\n * @param uploaded Number of bytes uploaded\n * @param total Total file size in bytes\n */\n progressCallback?: (uploaded: number, total: number) => void\n }): Promise<void>\n /**\n * Edit message text, media, reply markup and schedule date.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId ID of the chat, its username, phone or `\"me\"` or `\"self\"`\n * @param message Message or its ID\n * @param params\n */\n editMessage(\n params: InputMessageId & {\n /**\n * New message text\n *\n * When `media` is passed, `media.caption` is used instead\n */\n text?: InputText\n\n /**\n * New message media\n */\n media?: InputMediaLike\n\n /**\n * Whether to disable links preview in this message\n */\n disableWebPreview?: boolean\n\n /**\n * For bots: new reply markup.\n * If omitted, existing markup will be removed.\n */\n replyMarkup?: ReplyMarkup\n\n /**\n * To re-schedule a message: new schedule date.\n * When passing a number, a UNIX time in ms is expected.\n */\n scheduleDate?: Date | number\n\n /**\n * For media, upload progress callback.\n *\n * @param uploaded Number of bytes uploaded\n * @param total Total file size in bytes\n */\n progressCallback?: (uploaded: number, total: number) => void\n\n /**\n * Whether to dispatch the edit message event\n * to the client's update handler.\n */\n shouldDispatch?: true\n\n /**\n * Whether to invert media position.\n *\n * Currently only supported for web previews and makes the\n * client render the preview above the caption and not below.\n */\n invertMedia?: boolean\n },\n ): Promise<Message>\n /**\n * Forward one or more messages by their IDs.\n * You can forward no more than 100 messages at once.\n *\n * **Available**: ✅ both users and bots\n *\n * @param toChatId Destination chat ID, username, phone, `\"me\"` or `\"self\"`\n * @param fromChatId Source chat ID, username, phone, `\"me\"` or `\"self\"`\n * @param messages Message IDs\n * @param params Additional sending parameters\n * @returns Newly sent, forwarded messages in the destination chat.\n */\n forwardMessagesById(\n params: ForwardMessageOptions & {\n /** Source chat ID, username, phone, `\"me\"` or `\"self\"` */\n fromChatId: InputPeerLike\n /** Message IDs to forward */\n messages: number[]\n },\n ): Promise<Message[]>\n /**\n * Forward one or more {@link Message}s to another chat.\n *\n * > **Note**: all messages must be from the same chat.\n * **Available**: ✅ both users and bots\n *\n */\n forwardMessages(\n params: ForwardMessageOptions & {\n messages: Message[]\n },\n ): Promise<Message[]>\n\n /**\n * Get the message containing the button being clicked\n * in the given callback query.\n * **Available**: 🤖 bots only\n *\n */\n getCallbackQueryMessage(\n id:\n | CallbackQuery\n | tl.RawUpdateBotCallbackQuery\n | {\n messageId: number\n queryId: tl.Long\n peer: InputPeerLike\n },\n ): Promise<Message | null>\n // public version of the same method because why not\n /**\n * Get discussion message for some channel post.\n *\n * Returns `null` if the post does not have a discussion\n * message.\n *\n * This method might throw `FLOOD_WAIT_X` error in case\n * the discussion message was not *yet* created. Error\n * is usually handled by the client, but if you disabled that,\n * you'll need to handle it manually.\n *\n * **Available**: 👤 users only\n *\n * @param peer Channel where the post was found\n * @param message ID of the channel post\n */\n getDiscussionMessage(params: InputMessageId): Promise<Message | null>\n /**\n * Get chat history.\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat's marked ID, its username, phone or `\"me\"` or `\"self\"`.\n * @param params Additional fetch parameters\n */\n getHistory(\n chatId: InputPeerLike,\n params?: {\n /**\n * Limits the number of messages to be retrieved.\n *\n * @default 100\n */\n limit?: number\n\n /**\n * Offset for pagination\n */\n offset?: GetHistoryOffset\n\n /**\n * Additional offset from {@link offset}, in resulting messages.\n *\n * This can be used for advanced use cases, like:\n * - Loading 20 messages newer than message with ID `MSGID`:\n * `offset = MSGID, addOffset = -20, limit = 20`\n * - Loading 20 messages around message with ID `MSGID`:\n * `offset = MSGID, addOffset = -10, limit = 20`\n *\n * @default `0` (disabled)\n */\n\n addOffset?: number\n\n /**\n * Minimum message ID to return\n *\n * @default `0` (disabled).\n */\n minId?: number\n\n /**\n * Maximum message ID to return.\n *\n * Unless {@link addOffset} is used, this will work the same as {@link offset}.\n *\n * @default `0` (disabled).\n */\n maxId?: number\n\n /**\n * Whether to retrieve messages in reversed order (from older to recent),\n * starting from {@link offset} (inclusive).\n *\n * > **Note**: Using `reverse=true` requires you to pass offset from which to start\n * > fetching the messages \"downwards\". If you call `getHistory` with `reverse=true`\n * > and without any offset, it will return an empty array.\n *\n * @default false\n */\n reverse?: boolean\n },\n ): Promise<ArrayPaginated<Message, GetHistoryOffset>>\n /**\n * Given a message link (e.g. `t.me/durov/1`), fetch the relevant message.\n * **Available**: ✅ both users and bots\n *\n */\n getMessageByLink(link: string): Promise<Message | null>\n /**\n * Get all messages inside of a message group\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID\n * @param message ID of one of the messages in the group\n */\n getMessageGroup(params: InputMessageId): Promise<Message[]>\n /**\n * Get reactions to messages by their IDs.\n *\n * > Apps should short-poll reactions for visible messages\n * > (that weren't sent by the user) once every 15-30 seconds,\n * > but only if `message.reactions` is set\n *\n * **Available**: 👤 users only\n *\n * @param chatId ID of the chat with messages\n * @param messages Message IDs\n * @returns Reactions to corresponding messages, or `null` if there are none\n */\n getMessageReactionsById(chatId: InputPeerLike, messages: number[]): Promise<(MessageReactions | null)[]>\n /**\n * Get reactions to {@link Message}s.\n *\n * > **Note**: messages must all be from the same chat.\n *\n * > Apps should short-poll reactions for visible messages\n * > (that weren't sent by the user) once every 15-30 seconds,\n * > but only if `message.reactions` is set\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId ID of the chat with messages\n * @param messages Message IDs\n * @returns Reactions to corresponding messages, or `null` if there are none\n */\n getMessageReactions(messages: Message[]): Promise<(MessageReactions | null)[]>\n /**\n * Get messages from PM or legacy group by their IDs.\n * For channels, use {@link getMessages}.\n *\n * Unlike {@link getMessages}, this method does not\n * check if the message belongs to some chat.\n *\n * Fot messages that were not found, `null` will be\n * returned at that position.\n *\n * **Available**: ✅ both users and bots\n *\n * @param messageIds Messages IDs\n * @param [fromReply=false]\n * Whether the reply to a given message should be fetched\n * (i.e. `getMessages(msg.chat.id, msg.id, true).id === msg.replyToMessageId`)\n */\n getMessagesUnsafe(messageIds: MaybeArray<number>, fromReply?: boolean): Promise<(Message | null)[]>\n\n /**\n * Get messages in chat by their IDs\n *\n * Fot messages that were not found, `null` will be\n * returned at that position.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat's marked ID, its username, phone or `\"me\"` or `\"self\"`\n * @param messageIds Messages IDs\n * @param [fromReply=false]\n * Whether the reply to a given message should be fetched\n * (i.e. `getMessages(msg.chat.id, msg.id, true).id === msg.replyToMessageId`)\n */\n getMessages(chatId: InputPeerLike, messageIds: MaybeArray<number>, fromReply?: boolean): Promise<(Message | null)[]>\n /**\n * Get users who have reacted to the message.\n *\n * **Available**: 👤 users only\n *\n * @param params\n */\n getReactionUsers(\n params: InputMessageId & {\n /**\n * Get only reactions with the specified emoji\n */\n emoji?: InputReaction\n\n /**\n * Limit the number of users returned.\n *\n * @default 100\n */\n limit?: number\n\n /**\n * Offset for pagination\n */\n offset?: GetReactionUsersOffset\n },\n ): Promise<ArrayPaginated<PeerReaction, GetReactionUsersOffset>>\n /**\n * For messages containing a reply, fetch the message that is being replied.\n *\n * Note that even if a message has {@link replyToMessage},\n * the message itself may have been deleted, in which case\n * this method will also return `null`.\n * **Available**: ✅ both users and bots\n *\n */\n getReplyTo(message: Message): Promise<Message | null>\n /**\n * Get scheduled messages in chat by their IDs\n *\n * Fot messages that were not found, `null` will be\n * returned at that position.\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat's marked ID, its username, phone or `\"me\"` or `\"self\"`\n * @param messageIds Scheduled messages IDs\n */\n getScheduledMessages(chatId: InputPeerLike, messageIds: MaybeArray<number>): Promise<(Message | null)[]>\n /**\n * Iterate over chat history. Wrapper over {@link getHistory}\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat's marked ID, its username, phone or `\"me\"` or `\"self\"`.\n * @param params Additional fetch parameters\n */\n iterHistory(\n chatId: InputPeerLike,\n params?: Parameters<typeof getHistory>[2] & {\n /**\n * Limits the number of messages to be retrieved.\n *\n * @default Infinity, i.e. all messages\n */\n limit?: number\n\n /**\n * Chunk size. Usually you shouldn't care about this.\n *\n * @default 100\n */\n chunkSize?: number\n },\n ): AsyncIterableIterator<Message>\n /**\n * Iterate over users who have reacted to the message.\n *\n * Wrapper over {@link getReactionUsers}.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID\n * @param messageId Message ID\n * @param params\n */\n iterReactionUsers(\n params: Parameters<typeof getReactionUsers>[1] & {\n /**\n * Limit the number of events returned.\n *\n * @default `Infinity`, i.e. all events are returned\n */\n limit?: number\n\n /**\n * Chunk size, usually not needed.\n *\n * @default 100\n */\n chunkSize?: number\n },\n ): AsyncIterableIterator<PeerReaction>\n /**\n * Search for messages globally from all of your chats.\n *\n * Iterable version of {@link searchGlobal}\n *\n * **Note**: Due to Telegram limitations, you can only get up to ~10000 messages\n *\n * **Available**: ✅ both users and bots\n *\n * @param params Search parameters\n */\n iterSearchGlobal(\n params?: Parameters<typeof searchGlobal>[1] & {\n /**\n * Limits the number of messages to be retrieved.\n *\n * @default `Infinity`, i.e. all messages are returned\n */\n limit?: number\n\n /**\n * Chunk size, which will be passed as `limit` parameter\n * for `messages.search`. Usually you shouldn't care about this.\n *\n * @default 100\n */\n chunkSize?: number\n },\n ): AsyncIterableIterator<Message>\n /**\n * Search for messages inside a specific chat\n *\n * Iterable version of {@link searchMessages}\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat's marked ID, its username, phone or `\"me\"` or `\"self\"`.\n * @param params Additional search parameters\n */\n iterSearchMessages(\n params?: Parameters<typeof searchMessages>[1] & {\n /**\n * Limits the number of messages to be retrieved.\n *\n * @default `Infinity`, i.e. all messages are returned\n */\n limit?: number\n\n /**\n * Chunk size, which will be passed as `limit` parameter\n * for `messages.search`. Usually you shouldn't care about this.\n *\n * @default `100`\n */\n chunkSize?: number\n },\n ): AsyncIterableIterator<Message>\n /**\n * Pin a message in a group, supergroup, channel or PM.\n *\n * For supergroups/channels, you must have appropriate permissions,\n * either as an admin, or as default permissions\n *\n * **Available**: ✅ both users and bots\n *\n * @returns Service message about pinned message, if one was generated.\n */\n pinMessage(\n params: InputMessageId & {\n /** Whether to send a notification (only for legacy groups and supergroups) */\n notify?: boolean\n /** Whether to pin for both sides (only for private chats) */\n bothSides?: boolean\n\n /**\n * Whether to dispatch the returned service message (if any)\n * to the client's update handler.\n */\n shouldDispatch?: true\n },\n ): Promise<Message | null>\n /**\n * Mark chat history as read.\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID\n */\n readHistory(\n chatId: InputPeerLike,\n params?: {\n /**\n * Message up until which to read history\n *\n * @default 0, i.e. read everything\n */\n maxId?: number\n\n /**\n * Whether to also clear all mentions in the chat\n */\n clearMentions?: boolean\n },\n ): Promise<void>\n /**\n * Mark all reactions in chat as read.\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID\n */\n readReactions(chatId: InputPeerLike): Promise<void>\n /**\n * Search for messages globally from all of your chats\n *\n * **Note**: Due to Telegram limitations, you can only get up to ~10000 messages\n *\n * **Available**: 👤 users only\n *\n * @param params Search parameters\n */\n searchGlobal(params?: {\n /**\n * Text query string. Use `\"@\"` to search for mentions.\n *\n * @default `\"\"` (empty string)\n */\n query?: string\n\n /**\n * Limits the number of messages to be retrieved.\n *\n * @default 100\n */\n limit?: number\n\n /**\n * Filter the results using some filter. (see {@link SearchFilters})\n *\n * @default {@link SearchFilters.Empty} (i.e. will return all messages)\n */\n filter?: tl.TypeMessagesFilter\n\n /**\n * Offset data used for pagination\n */\n offset?: SearchGlobalOffset\n\n /**\n * Only return messages newer than this date\n */\n minDate?: Date | number\n\n /**\n * Only return messages older than this date\n */\n maxDate?: Date | number\n }): Promise<ArrayPaginated<Message, SearchGlobalOffset>>\n /**\n * Search for messages inside a specific chat\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat's marked ID, its username, phone or `\"me\"` or `\"self\"`.\n * @param params Additional search parameters\n */\n searchMessages(params?: {\n /**\n * Text query string. Required for text-only messages,\n * optional for media.\n *\n * @default `\"\"` (empty string)\n */\n query?: string\n\n /**\n * Chat where to search for messages.\n *\n * When empty, will search across common message box (i.e. private messages and legacy chats)\n */\n chatId?: InputPeerLike\n\n /**\n * Offset ID for the search. Only messages earlier than this ID will be returned.\n *\n * @default `0` (starting from the latest message).\n */\n offset?: SearchMessagesOffset\n\n /**\n * Additional offset from {@link offset}, in resulting messages.\n *\n * This can be used for advanced use cases, like:\n * - Loading 20 results newer than message with ID `MSGID`:\n * `offset = MSGID, addOffset = -20, limit = 20`\n * - Loading 20 results around message with ID `MSGID`:\n * `offset = MSGID, addOffset = -10, limit = 20`\n *\n * When {@link offset} is not set, this will be relative to the last message\n *\n * @default `0` (disabled)\n */\n addOffset?: number\n\n /**\n * Minimum message ID to return\n *\n * @default `0` (disabled).\n */\n minId?: number\n\n /**\n * Maximum message ID to return.\n *\n * Unless {@link addOffset} is used, this will work the same as {@link offset}.\n *\n * @default `0` (disabled).\n */\n maxId?: number\n\n /**\n * Minimum message date to return\n *\n * @default `0` (disabled).\n */\n minDate?: number | Date\n\n /**\n * Maximum message date to return\n *\n * @default `0` (disabled).\n */\n maxDate?: number | Date\n\n /**\n * Thread ID to return only messages from this thread.\n */\n threadId?: number\n\n /**\n * Limits the number of messages to be retrieved.\n *\n * @default 100\n */\n limit?: number\n\n /**\n * Filter the results using some filter (see {@link SearchFilters})\n *\n * @default {@link SearchFilters.Empty} (i.e. will return all messages)\n */\n filter?: tl.TypeMessagesFilter\n\n /**\n * Search only for messages sent by a specific user.\n *\n * You can pass their marked ID, username, phone or `\"me\"` or `\"self\"`\n */\n fromUser?: InputPeerLike\n }): Promise<ArrayPaginated<Message, SearchMessagesOffset>>\n /** Send a text to the same chat (and topic, if applicable) as a given message */\n answerText(message: Message, ...params: ParametersSkip2<typeof sendText>): ReturnType<typeof sendText>\n /** Send a media to the same chat (and topic, if applicable) as a given message */\n answerMedia(message: Message, ...params: ParametersSkip2<typeof sendMedia>): ReturnType<typeof sendMedia>\n /** Send a media group to the same chat (and topic, if applicable) as a given message */\n answerMediaGroup(\n message: Message,\n ...params: ParametersSkip2<typeof sendMediaGroup>\n ): ReturnType<typeof sendMediaGroup>\n /**\n * Send a text comment to a given message.\n *\n * If this is a normal message (not a channel post),\n * a simple reply will be sent.\n *\n * **Available**: ✅ both users and bots\n *\n * @throws MtArgumentError\n * If this is a channel post which does not have comments section.\n * To check if a post has comments, use {@link Message#replies}.hasComments\n */\n commentText(message: Message, ...params: ParametersSkip2<typeof sendText>): ReturnType<typeof sendText>\n /**\n * Send a text comment to a given message.\n *\n * If this is a normal message (not a channel post),\n * a simple reply will be sent.\n *\n * **Available**: ✅ both users and bots\n *\n * @throws MtArgumentError\n * If this is a channel post which does not have comments section.\n * To check if a post has comments, use {@link Message#replies}.hasComments\n */\n commentMedia(message: Message, ...params: ParametersSkip2<typeof sendMedia>): ReturnType<typeof sendMedia>\n /**\n * Send a text comment to a given message.\n *\n * If this is a normal message (not a channel post),\n * a simple reply will be sent.\n *\n * **Available**: ✅ both users and bots\n *\n * @throws MtArgumentError\n * If this is a channel post which does not have comments section.\n * To check if a post has comments, use {@link Message#replies}.hasComments\n */\n commentMediaGroup(\n message: Message,\n ...params: ParametersSkip2<typeof sendMediaGroup>\n ): ReturnType<typeof sendMediaGroup>\n /**\n * Copy a message group (i.e. send the same message group, but do not forward it).\n *\n * Note that all the provided messages must be in the same message group\n * **Available**: ✅ both users and bots\n *\n */\n sendCopyGroup(\n params: SendCopyGroupParams &\n (\n | {\n /** Source chat ID */\n fromChatId: InputPeerLike\n /** Message IDs to forward */\n messages: number[]\n }\n | { messages: Message[] }\n ),\n ): Promise<Message[]>\n /**\n * Copy a message (i.e. send the same message, but do not forward it).\n *\n * Note that if the message contains a webpage,\n * it will be copied simply as a text message,\n * and if the message contains an invoice,\n * it can't be copied.\n * **Available**: ✅ both users and bots\n *\n */\n sendCopy(\n params: SendCopyParams &\n (\n | {\n /** Source chat ID */\n fromChatId: InputPeerLike\n /** Message ID to forward */\n message: number\n }\n | { message: Message }\n ),\n ): Promise<Message>\n /**\n * Send a group of media.\n *\n * To add a caption to the group, add caption to the first\n * media in the group and don't add caption for any other.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId ID of the chat, its username, phone or `\"me\"` or `\"self\"`\n * @param medias Medias contained in the message.\n * @param params Additional sending parameters\n * @link InputMedia\n */\n sendMediaGroup(\n chatId: InputPeerLike,\n medias: (InputMediaLike | string)[],\n params?: CommonSendParams & {\n /**\n * Whether to invert media position.\n *\n * Currently only supported for web previews and makes the\n * client render the preview above the caption and not below.\n */\n invertMedia?: boolean\n\n /**\n * Function that will be called after some part has been uploaded.\n * Only used when a file that requires uploading is passed,\n * and not used when uploading a thumbnail.\n *\n * @param index Index of the media in the original array\n * @param uploaded Number of bytes already uploaded\n * @param total Total file size\n */\n progressCallback?: (index: number, uploaded: number, total: number) => void\n },\n ): Promise<Message[]>\n /**\n * Send a single media (a photo or a document-based media)\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId ID of the chat, its username, phone or `\"me\"` or `\"self\"`\n * @param media\n * Media contained in the message. You can also pass TDLib\n * and Bot API compatible File ID, which will be wrapped\n * in {@link InputMedia.auto}\n * @param params Additional sending parameters\n * @link InputMedia\n */\n sendMedia(\n chatId: InputPeerLike,\n media: InputMediaLike | string,\n params?: CommonSendParams & {\n /**\n * For bots: inline or reply markup or an instruction\n * to hide a reply keyboard or to force a reply.\n */\n replyMarkup?: ReplyMarkup\n\n /**\n * Whether to invert media position.\n *\n * Currently only supported for web previews and makes the\n * client render the preview above the caption and not below.\n */\n invert?: boolean\n\n /**\n * Override caption for `media`.\n *\n * Can be used, for example. when using File IDs\n * or when using existing InputMedia objects.\n */\n caption?: InputText\n\n /**\n * Function that will be called after some part has been uploaded.\n * Only used when a file that requires uploading is passed,\n * and not used when uploading a thumbnail.\n *\n * @param uploaded Number of bytes already uploaded\n * @param total Total file size\n */\n progressCallback?: (uploaded: number, total: number) => void\n },\n ): Promise<Message>\n /** Send a text in reply to a given quote */\n quoteWithText(\n message: Message,\n params: QuoteParamsFrom<Parameters<typeof sendText>[3]> & {\n /** Text to send */\n text: Parameters<typeof sendText>[2]\n },\n ): ReturnType<typeof sendText>\n /** Send a media in reply to a given quote */\n quoteWithMedia(\n message: Message,\n params: QuoteParamsFrom<Parameters<typeof sendMedia>[3]> & {\n /** Media to send */\n media: Parameters<typeof sendMedia>[2]\n },\n ): ReturnType<typeof sendMedia>\n /** Send a media group in reply to a given quote */\n quoteWithMediaGroup(\n message: Message,\n params: QuoteParamsFrom<Parameters<typeof sendMediaGroup>[3]> & {\n /** Media group to send */\n medias: Parameters<typeof sendMediaGroup>[2]\n },\n ): ReturnType<typeof sendMediaGroup>\n /**\n * Send or remove a reaction.\n *\n * **Available**: 👤 users only\n *\n * @returns\n * Message to which the reaction was sent, if available.\n * The message is normally available for users, but may not be available for bots in PMs.\n */\n sendReaction(\n params: InputMessageId & {\n /** Reaction emoji (or `null` to remove reaction) */\n emoji?: MaybeArray<InputReaction> | null\n /** Whether to use a big reaction */\n big?: boolean\n\n /**\n * Whether to dispatch the returned edit message event\n * to the client's update handler.\n */\n shouldDispatch?: true\n },\n ): Promise<Message | null>\n /** Send a text in reply to a given message */\n replyText(message: Message, ...params: ParametersSkip2<typeof sendText>): ReturnType<typeof sendText>\n /** Send a media in reply to a given message */\n replyMedia(message: Message, ...params: ParametersSkip2<typeof sendMedia>): ReturnType<typeof sendMedia>\n /** Send a media group in reply to a given message */\n replyMediaGroup(\n message: Message,\n ...params: ParametersSkip2<typeof sendMediaGroup>\n ): ReturnType<typeof sendMediaGroup>\n /**\n * Send previously scheduled message(s)\n *\n * Note that if the message belongs to a media group,\n * the entire group will be sent, and all the messages\n * will be returned.\n *\n * **Available**: 👤 users only\n *\n * @param peer Chat where the messages were scheduled\n * @param ids ID(s) of the messages\n */\n sendScheduled(peer: InputPeerLike, ids: MaybeArray<number>): Promise<Message[]>\n /**\n * Send a text message\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId ID of the chat, its username, phone or `\"me\"` or `\"self\"`\n * @param text Text of the message\n * @param params Additional sending parameters\n */\n sendText(\n chatId: InputPeerLike,\n text: InputText,\n params?: CommonSendParams & {\n /**\n * For bots: inline or reply markup or an instruction\n * to hide a reply keyboard or to force a reply.\n */\n replyMarkup?: ReplyMarkup\n\n /**\n * Whether to disable links preview in this message\n */\n disableWebPreview?: boolean\n\n /**\n * Whether to invert media position.\n *\n * Currently only supported for web previews and makes the\n * client render the preview above the caption and not below.\n */\n invertMedia?: boolean\n },\n ): Promise<Message>\n /**\n * Sends a current user/bot typing event\n * to a conversation partner or group.\n *\n * This status is set for 6 seconds, and is\n * automatically cancelled if you send a\n * message.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID\n * @param [status='typing'] Typing status\n * @param params\n */\n sendTyping(\n chatId: InputPeerLike,\n status?: Exclude<TypingStatus, 'interaction' | 'interaction_seen'> | tl.TypeSendMessageAction,\n params?: {\n /**\n * For `upload_*` and history import actions, progress of the upload\n */\n progress?: number\n\n /**\n * For comment threads, ID of the thread (i.e. top message)\n */\n threadId?: number\n },\n ): Promise<void>\n /**\n * Send or retract a vote in a poll.\n * **Available**: 👤 users only\n *\n */\n sendVote(\n params: InputMessageId & {\n /**\n * Selected options, or `null` to retract.\n * You can pass indexes of the answers or the `Buffer`s\n * representing them. In case of indexes, the poll will first\n * be requested from the server.\n */\n options: null | MaybeArray<number | Uint8Array>\n },\n ): Promise<Poll>\n /**\n * Translate message text to a given language.\n *\n * Returns `null` if it could not translate the message.\n * **Available**: 👤 users only\n *\n */\n translateMessage(\n params: InputMessageId & {\n /** Target language (two-letter ISO 639-1 language code) */\n toLanguage: string\n },\n ): Promise<TextWithEntities>\n /**\n * Translate text to a given language.\n *\n * **Available**: 👤 users only\n *\n * @param text Text to translate\n * @param toLanguage Target language (two-letter ISO 639-1 language code)\n */\n translateText(text: InputText, toLanguage: string): Promise<TextWithEntities>\n /**\n * Unpin all pinned messages in a chat.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat or user ID\n */\n unpinAllMessages(\n chatId: InputPeerLike,\n params?: {\n /**\n * For forums - unpin only messages from the given topic\n */\n topicId?: number\n },\n ): Promise<void>\n /**\n * Unpin a message in a group, supergroup, channel or PM.\n *\n * For supergroups/channels, you must have appropriate permissions,\n * either as an admin, or as default permissions\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID, username, phone number, `\"self\"` or `\"me\"`\n * @param messageId Message ID\n */\n unpinMessage(params: InputMessageId): Promise<void>\n /**\n * Create a new takeout session\n *\n * **Available**: 👤 users only\n *\n * @param params Takeout session parameters\n */\n initTakeoutSession(params: Omit<tl.account.RawInitTakeoutSessionRequest, '_'>): Promise<TakeoutSession>\n /**\n * Normalize {@link InputPrivacyRule}[] to `tl.TypeInputPrivacyRule`,\n * resolving the peers if needed.\n * **Available**: ✅ both users and bots\n *\n */\n _normalizePrivacyRules(rules: InputPrivacyRule[]): Promise<tl.TypeInputPrivacyRule[]>\n /**\n * Change your 2FA password\n * **Available**: 👤 users only\n *\n */\n changeCloudPassword(params: {\n /** Current password as plaintext */\n currentPassword: string\n /** New password as plaintext */\n newPassword: string\n /** Hint for the new password */\n hint?: string\n }): Promise<void>\n /**\n * Enable 2FA password on your account\n *\n * Note that if you pass `email`, `EmailUnconfirmedError` may be\n * thrown, and you should use {@link verifyPasswordEmail},\n * {@link resendPasswordEmail} or {@link cancelPasswordEmail},\n * and the call this method again\n * **Available**: 👤 users only\n *\n */\n enableCloudPassword(params: {\n /** 2FA password as plaintext */\n password: string\n /** Hint for the new password */\n hint?: string\n /** Recovery email */\n email?: string\n }): Promise<void>\n /**\n * Verify an email to use as 2FA recovery method\n *\n * **Available**: 👤 users only\n *\n * @param code Code which was sent via email\n */\n verifyPasswordEmail(code: string): Promise<void>\n /**\n * Resend the code to verify an email to use as 2FA recovery method.\n * **Available**: 👤 users only\n *\n */\n resendPasswordEmail(): Promise<void>\n /**\n * Cancel the code that was sent to verify an email to use as 2FA recovery method\n * **Available**: 👤 users only\n *\n */\n cancelPasswordEmail(): Promise<void>\n /**\n * Remove 2FA password from your account\n *\n * **Available**: 👤 users only\n *\n * @param password 2FA password as plaintext\n */\n removeCloudPassword(password: string): Promise<void>\n /**\n * Boost a given channel\n *\n * **Available**: 👤 users only\n *\n * @param peerId Peer ID to boost\n */\n applyBoost(peerId: InputPeerLike): Promise<void>\n /**\n * Check if the current user can apply boost to some channel\n *\n * **Available**: ✅ both users and bots\n *\n * @returns\n * - `{ can: true }` if the user can apply boost\n * - `.replace` - {@link Chat}s that can be replaced with the current one.\n * If the user can apply boost without replacing any chats, this field will be `undefined`.\n * - `{ can: false }` if the user can't apply boost\n * - `.reason == \"no_slots\"` if the user has no available slots\n * - `.reason == \"need_premium\"` if the user needs Premium to boost\n * - In all cases, `slots` will contain all the current user's boost slots\n */\n canApplyBoost(): Promise<CanApplyBoostResult>\n\n /**\n * Get information about boosts in a channel\n *\n * **Available**: 👤 users only\n *\n * @returns IDs of stories that were removed\n */\n getBoostStats(peerId: InputPeerLike): Promise<BoostStats>\n /**\n * Get boosts of a channel\n * **Available**: 👤 users only\n *\n */\n getBoosts(\n peerId: InputPeerLike,\n params?: {\n /**\n * Offset for pagination\n */\n offset?: string\n\n /**\n * Maximum number of boosters to fetch\n *\n * @default 100\n */\n limit?: number\n },\n ): Promise<ArrayPaginated<Boost, string>>\n /**\n * Get boost slots information of the current user.\n *\n * Includes information about the currently boosted channels,\n * as well as the slots that can be used to boost other channels.\n * **Available**: 👤 users only\n *\n */\n getMyBoostSlots(): Promise<BoostSlot[]>\n /**\n * Iterate over boosters of a channel.\n *\n * Wrapper over {@link getBoosters}\n *\n * **Available**: ✅ both users and bots\n *\n * @returns IDs of stories that were removed\n */\n iterBoosters(\n peerId: InputPeerLike,\n params?: Parameters<typeof getBoosts>[2] & {\n /**\n * Total number of boosters to fetch\n *\n * @default Infinity, i.e. fetch all boosters\n */\n limit?: number\n\n /**\n * Number of boosters to fetch per request\n * Usually you don't need to change this\n *\n * @default 100\n */\n chunkSize?: number\n },\n ): AsyncIterableIterator<Boost>\n /**\n * Add a sticker to a sticker set.\n *\n * Only for bots, and the sticker set must\n * have been created by this bot.\n *\n * **Available**: ✅ both users and bots\n *\n * @param setId Sticker set short name or TL object with input sticker set\n * @param sticker Sticker to be added\n * @param params\n * @returns Modfiied sticker set\n */\n addStickerToSet(\n setId: InputStickerSet,\n sticker: InputStickerSetItem,\n params?: {\n /**\n * Upload progress callback\n *\n * @param uploaded Number of bytes uploaded\n * @param total Total file size\n */\n progressCallback?: (uploaded: number, total: number) => void\n },\n ): Promise<StickerSet>\n /**\n * Create a new sticker set.\n *\n * This is the only sticker-related method that\n * users can use (they allowed it with the \"import stickers\" update)\n *\n * **Available**: ✅ both users and bots\n *\n * @param params\n * @returns Newly created sticker set\n */\n createStickerSet(params: {\n /**\n * Owner of the sticker set (must be user).\n *\n * If this pack is created from a user account,\n * can only be `\"self\"`\n */\n owner: InputPeerLike\n\n /**\n * Title of the sticker set (1-64 chars)\n */\n title: string\n\n /**\n * Short name of the sticker set.\n * Can only contain English letters, digits and underscores\n * (i.e. must match `/^[a-zA-Z0-9_]+$/),\n * and (for bots) must end with `_by_<bot username>`\n * (`<bot username>` is case-insensitive).\n */\n shortName: string\n\n /**\n * Type of the stickers in this set.\n *\n * @default `sticker`, i.e. regular stickers.\n */\n type?: StickerType\n\n /**\n * File source type for the stickers in this set.\n *\n * @default `static`, i.e. regular WEBP stickers.\n */\n sourceType?: StickerSourceType\n\n /**\n * Whether to create \"adaptive\" emoji set.\n *\n * Color of the emoji will be changed depending on the text color.\n * Only works for TGS-based emoji stickers\n */\n adaptive?: boolean\n\n /**\n * List of stickers to be immediately added into the pack.\n * There must be at least one sticker in this list.\n */\n stickers: InputStickerSetItem[]\n\n /**\n * Thumbnail for the set.\n *\n * The file must be either a `.png` file\n * up to 128kb, having size of exactly `100x100` px,\n * or a `.tgs` file up to 32kb.\n *\n * If not set, Telegram will use the first sticker\n * in the sticker set as the thumbnail\n */\n thumb?: InputFileLike\n\n /**\n * Upload progress callback.\n *\n * @param idx Index of the sticker\n * @param uploaded Number of bytes uploaded\n * @param total Total file size\n */\n progressCallback?: (idx: number, uploaded: number, total: number) => void\n }): Promise<StickerSet>\n /**\n * Delete a sticker from a sticker set\n *\n * Only for bots, and the sticker set must\n * have been created by this bot.\n *\n * **Available**: ✅ both users and bots\n *\n * @param sticker\n * TDLib and Bot API compatible File ID, or a\n * TL object representing a sticker to be removed\n * @returns Modfiied sticker set\n */\n deleteStickerFromSet(\n sticker: string | tdFileId.RawFullRemoteFileLocation | tl.TypeInputDocument,\n ): Promise<StickerSet>\n /**\n * Get custom emoji stickers by their IDs\n *\n * **Available**: ✅ both users and bots\n *\n * @param ids IDs of the stickers (as defined in {@link MessageEntity.emojiId})\n */\n getCustomEmojis(ids: tl.Long[]): Promise<Sticker[]>\n /**\n * Given one or more messages, extract all unique custom emojis from it and fetch them\n * **Available**: ✅ both users and bots\n *\n */\n getCustomEmojisFromMessages(messages: MaybeArray<Message>): Promise<Sticker[]>\n /**\n * Get a list of all installed sticker packs\n *\n * > **Note**: This method returns *brief* meta information about\n * > the packs, that does not include the stickers themselves.\n * > Use {@link StickerSet.getFull} or {@link getStickerSet}\n * > to get a stickerset that will include the stickers\n * **Available**: 👤 users only\n *\n */\n getInstalledStickers(): Promise<StickerSet[]>\n /**\n * Get a sticker pack and stickers inside of it.\n *\n * **Available**: ✅ both users and bots\n *\n * @param setId Sticker pack short name, dice emoji, `\"emoji\"` for animated emojis or input ID\n */\n getStickerSet(setId: InputStickerSet): Promise<StickerSet>\n /**\n * Move a sticker in a sticker set\n * to another position\n *\n * Only for bots, and the sticker set must\n * have been created by this bot.\n *\n * **Available**: ✅ both users and bots\n *\n * @param sticker\n * TDLib and Bot API compatible File ID, or a\n * TL object representing a sticker to be removed\n * @param position New sticker position (starting from 0)\n * @returns Modfiied sticker set\n */\n moveStickerInSet(\n sticker: string | tdFileId.RawFullRemoteFileLocation | tl.TypeInputDocument,\n position: number,\n ): Promise<StickerSet>\n /**\n * Set group sticker set for a supergroup\n *\n * **Available**: ✅ both users and bots\n *\n * @param setId Sticker set short name or a TL object with input sticker set\n * @param thumb Sticker set thumbnail\n * @param params\n * @returns Modified sticker set\n */\n setChatStickerSet(chatId: InputPeerLike, setId: InputStickerSet): Promise<void>\n /**\n * Set sticker set thumbnail\n *\n * **Available**: ✅ both users and bots\n *\n * @param id Sticker set short name or a TL object with input sticker set\n * @param thumb Sticker set thumbnail\n * @param params\n * @returns Modified sticker set\n */\n setStickerSetThumb(\n id: InputStickerSet,\n thumb: InputFileLike | tl.TypeInputDocument,\n params?: {\n /**\n * Upload progress callback\n *\n * @param uploaded Number of bytes uploaded\n * @param total Total file size\n */\n progressCallback?: (uploaded: number, total: number) => void\n },\n ): Promise<StickerSet>\n /**\n * Check if the current user can post stories as a given peer\n *\n * **Available**: 👤 users only\n *\n * @param peerId Peer ID whose stories to fetch\n * @returns\n * - `true` if the user can post stories\n * - `\"need_admin\"` if the user is not an admin in the chat\n * - `\"need_boosts\"` if the channel doesn't have enough boosts\n */\n canSendStory(peerId: InputPeerLike): Promise<CanSendStoryResult>\n /**\n * Delete a story\n *\n * **Available**: 👤 users only\n *\n * @returns IDs of stories that were removed\n */\n deleteStories(params: {\n /**\n * Story IDs to delete\n */\n ids: MaybeArray<number>\n\n /**\n * Peer ID whose stories to delete\n *\n * @default `self`\n */\n peer?: InputPeerLike\n }): Promise<number[]>\n /**\n * Edit a sent story\n *\n * **Available**: 👤 users only\n *\n * @returns Edited story\n */\n editStory(params: {\n /**\n * Story ID to edit\n */\n id: number\n\n /**\n * Peer ID to whose story to edit\n *\n * @default `self`\n */\n peer?: InputPeerLike\n\n /**\n * Media contained in a story. Currently can only be a photo or a video.\n */\n media?: InputMediaLike\n\n /**\n * Override caption for {@link media}\n */\n caption?: InputText\n\n /**\n * Interactive elements to add to the story\n */\n interactiveElements?: tl.TypeMediaArea[]\n\n /**\n * Privacy rules to apply to the story\n *\n * @default \"Everyone\"\n */\n privacyRules?: InputPrivacyRule[]\n }): Promise<Story>\n /**\n * Get all stories (e.g. to load the top bar)\n * **Available**: 👤 users only\n *\n */\n getAllStories(params?: {\n /**\n * Offset from which to fetch stories\n */\n offset?: string\n\n /**\n * Whether to fetch stories from \"archived\" (or \"hidden\") peers\n */\n archived?: boolean\n }): Promise<AllStories>\n /**\n * Get stories of a given peer\n *\n * **Available**: 👤 users only\n *\n * @param peerId Peer ID whose stories to fetch\n */\n getPeerStories(peerId: InputPeerLike): Promise<PeerStories>\n /**\n * Get profile stories\n * **Available**: 👤 users only\n *\n */\n getProfileStories(\n peerId: InputPeerLike,\n params?: {\n /**\n * Kind of stories to fetch\n * - `pinned` - stories pinned to the profile and visible to everyone\n * - `archived` - \"archived\" stories that can later be pinned, only visible to the owner\n *\n * @default `pinned`\n */\n kind?: 'pinned' | 'archived'\n\n /**\n * Offset ID for pagination\n */\n offsetId?: number\n\n /**\n * Maximum number of stories to fetch\n *\n * @default 100\n */\n limit?: number\n },\n ): Promise<ArrayPaginated<Story, number>>\n /**\n * Get one or more stories by their IDs\n *\n * **Available**: 👤 users only\n *\n * @param peerId Peer ID whose stories to fetch\n * @param storyIds Story IDs\n */\n getStoriesById(peerId: InputPeerLike, storyIds: MaybeArray<number>): Promise<Story[]>\n /**\n * Get brief information about stories interactions.\n *\n * The result will be in the same order as the input IDs\n * **Available**: 👤 users only\n *\n */\n getStoriesInteractions(peerId: InputPeerLike, storyIds: MaybeArray<number>): Promise<StoryInteractions[]>\n /**\n * Generate a link to a story.\n *\n * Basically the link format is `t.me/<username>/s/<story_id>`,\n * and if the user doesn't have a username, `USER_PUBLIC_MISSING` is thrown.\n *\n * I have no idea why is this an RPC call, but whatever\n * **Available**: 👤 users only\n *\n */\n getStoryLink(peerId: InputPeerLike, storyId: number): Promise<string>\n /**\n * Get viewers list of a story\n * **Available**: 👤 users only\n *\n */\n getStoryViewers(\n peerId: InputPeerLike,\n storyId: number,\n params?: {\n /**\n * Whether to only fetch viewers from contacts\n */\n onlyContacts?: boolean\n\n /**\n * How to sort the results?\n * - `reaction` - by reaction (viewers who has reacted are first), then by date (newest first)\n * - `date` - by date, newest first\n *\n * @default `reaction`\n */\n sortBy?: 'reaction' | 'date'\n\n /**\n * Search query\n */\n query?: string\n\n /**\n * Offset ID for pagination\n */\n offset?: string\n\n /**\n * Maximum number of viewers to fetch\n *\n * @default 100\n */\n limit?: number\n },\n ): Promise<StoryViewersList>\n /**\n * Hide own stories views (activate so called \"stealth mode\")\n *\n * Currently has a cooldown of 1 hour, and throws FLOOD_WAIT error if it is on cooldown.\n * **Available**: 👤 users only\n *\n */\n hideMyStoriesViews(params?: {\n /**\n * Whether to hide views from the last 5 minutes\n *\n * @default true\n */\n past?: boolean\n\n /**\n * Whether to hide views for the next 25 minutes\n *\n * @default true\n */\n future?: boolean\n }): Promise<StoriesStealthMode>\n /**\n * Increment views of one or more stories.\n *\n * This should be used for pinned stories, as they can't\n * be marked as read when the user sees them ({@link Story#isActive} == false)\n *\n * **Available**: 👤 users only\n *\n * @param peerId Peer ID whose stories to mark as read\n * @param ids ID(s) of the stories to increment views of (max 200)\n */\n incrementStoriesViews(peerId: InputPeerLike, ids: MaybeArray<number>): Promise<void>\n /**\n * Iterate over all stories (e.g. to load the top bar)\n *\n * Wrapper over {@link getAllStories}\n * **Available**: ✅ both users and bots\n *\n */\n iterAllStories(\n params?: Parameters<typeof getAllStories>[1] & {\n /**\n * Maximum number of stories to fetch\n *\n * @default Infinity\n */\n limit?: number\n },\n ): AsyncIterableIterator<PeerStories>\n /**\n * Iterate over profile stories. Wrapper over {@link getProfileStories}\n * **Available**: ✅ both users and bots\n *\n */\n iterProfileStories(\n peerId: InputPeerLike,\n params?: Parameters<typeof getProfileStories>[2] & {\n /**\n * Total number of stories to fetch\n *\n * @default `Infinity`, i.e. fetch all stories\n */\n limit?: number\n\n /**\n * Number of stories to fetch per request.\n * Usually you shouldn't care about this.\n *\n * @default 100\n */\n chunkSize?: number\n },\n ): AsyncIterableIterator<Story>\n /**\n * Iterate over viewers list of a story.\n * Wrapper over {@link getStoryViewers}\n * **Available**: ✅ both users and bots\n *\n */\n iterStoryViewers(\n peerId: InputPeerLike,\n storyId: number,\n params?: Parameters<typeof getStoryViewers>[3] & {\n /**\n * Total number of viewers to fetch\n *\n * @default Infinity, i.e. fetch all viewers\n */\n limit?: number\n\n /**\n * Number of viewers to fetch per request.\n * Usually you don't need to change this.\n *\n * @default 100\n */\n chunkSize?: number\n },\n ): AsyncIterableIterator<StoryViewer>\n /**\n * Mark all stories up to a given ID as read\n *\n * This should only be used for \"active\" stories ({@link Story#isActive} == false)\n *\n * **Available**: 👤 users only\n *\n * @param peerId Peer ID whose stories to mark as read\n * @returns IDs of the stores that were marked as read\n */\n readStories(peerId: InputPeerLike, maxId: number): Promise<number[]>\n /**\n * Report a story (or multiple stories) to the moderation team\n * **Available**: 👤 users only\n *\n */\n reportStory(\n peerId: InputPeerLike,\n storyIds: MaybeArray<number>,\n params?: {\n /**\n * Reason for reporting\n *\n * @default inputReportReasonSpam\n */\n reason?: tl.TypeReportReason\n\n /**\n * Additional comment to the report\n */\n message?: string\n },\n ): Promise<void>\n /**\n * Send (or remove) a reaction to a story\n * **Available**: 👤 users only\n *\n */\n sendStoryReaction(params: {\n peerId: InputPeerLike\n storyId: number\n reaction: InputReaction\n /**\n * Whether to add this reaction to recently used\n */\n addToRecent?: boolean\n }): Promise<void>\n /**\n * Send a story\n *\n * **Available**: 👤 users only\n *\n * @returns Created story\n */\n sendStory(params: {\n /**\n * Peer ID to send story as\n *\n * @default `self`\n */\n peer?: InputPeerLike\n\n /**\n * Media contained in a story. Currently can only be a photo or a video.\n *\n * You can also pass TDLib and Bot API compatible File ID,\n * which will be wrapped in {@link InputMedia.auto}\n */\n media: InputMediaLike | string\n\n /**\n * Override caption for {@link media}\n */\n caption?: InputText\n\n /**\n * Whether to automatically pin this story to the profile\n */\n pinned?: boolean\n\n /**\n * Whether to disallow sharing this story\n */\n forbidForwards?: boolean\n\n /**\n * Interactive elements to add to the story\n */\n interactiveElements?: tl.TypeMediaArea[]\n\n /**\n * Privacy rules to apply to the story\n *\n * @default \"Everyone\"\n */\n privacyRules?: InputPrivacyRule[]\n\n /**\n * TTL period of the story, in seconds\n *\n * @default 86400\n */\n period?: number\n }): Promise<Story>\n /**\n * Toggle whether peer's stories are archived (hidden) or not.\n *\n * This **does not** archive the chat with that peer, only stories.\n * **Available**: 👤 users only\n *\n */\n togglePeerStoriesArchived(peerId: InputPeerLike, archived: boolean): Promise<void>\n /**\n * Toggle one or more stories pinned status\n *\n * **Available**: 👤 users only\n *\n * @returns IDs of stories that were toggled\n */\n toggleStoriesPinned(params: {\n /**\n * Story ID(s) to toggle\n */\n ids: MaybeArray<number>\n\n /**\n * Whether to pin or unpin the story\n */\n pinned: boolean\n\n /**\n * Peer ID whose stories to toggle\n *\n * @default `self`\n */\n peer?: InputPeerLike\n }): Promise<number[]>\n /**\n * Block a user\n *\n * **Available**: 👤 users only\n *\n * @param id User ID, username or phone number\n */\n blockUser(id: InputPeerLike): Promise<void>\n /**\n * Delete your own profile photos\n *\n * **Available**: 👤 users only\n *\n * @param ids ID(s) of the photos. Can be file IDs or raw TL objects\n */\n deleteProfilePhotos(ids: MaybeArray<string | tl.TypeInputPhoto>): Promise<void>\n /**\n * Edit \"close friends\" list directly using user IDs\n *\n * **Available**: 👤 users only\n *\n * @param ids User IDs\n */\n editCloseFriendsRaw(ids: number[]): Promise<void>\n /**\n * Edit \"close friends\" list using `InputPeerLike`s\n *\n * **Available**: 👤 users only\n *\n * @param ids User IDs\n */\n editCloseFriends(ids: InputPeerLike[]): Promise<void>\n /**\n * Get a list of common chats you have with a given user\n *\n * **Available**: 👤 users only\n *\n * @param userId User's ID, username or phone number\n * @throws MtInvalidPeerTypeError\n */\n getCommonChats(userId: InputPeerLike): Promise<Chat[]>\n /**\n * Gets the current default value of the Time-To-Live setting, applied to all new chats.\n * **Available**: ✅ both users and bots\n *\n */\n getGlobalTtl(): Promise<number>\n /**\n * Get currently authorized user's full information\n * **Available**: ✅ both users and bots\n *\n */\n getMe(): Promise<User>\n /**\n * Get currently authorized user's username.\n *\n * This method uses locally available information and\n * does not call any API methods.\n * **Available**: ✅ both users and bots\n *\n */\n getMyUsername(): Promise<string | null>\n /**\n * Get a single profile picture of a user by its ID\n *\n * **Available**: ✅ both users and bots\n *\n * @param userId User ID, username, phone number, `\"me\"` or `\"self\"`\n * @param photoId ID of the photo to fetch\n * @param params\n */\n getProfilePhoto(userId: InputPeerLike, photoId: tl.Long): Promise<Photo>\n /**\n * Get a list of profile pictures of a user\n *\n * **Available**: ✅ both users and bots\n *\n * @param userId User ID, username, phone number, `\"me\"` or `\"self\"`\n * @param params\n */\n getProfilePhotos(\n userId: InputPeerLike,\n params?: {\n /**\n * Offset from which to fetch.\n *\n * @default `0`\n */\n offset?: number\n\n /**\n * Maximum number of items to fetch (up to 100)\n *\n * @default `100`\n */\n limit?: number\n },\n ): Promise<ArrayPaginated<Photo, number>>\n /**\n * Get information about multiple users.\n * You can retrieve up to 200 users at once.\n *\n * Note that order is not guaranteed.\n *\n * **Available**: ✅ both users and bots\n *\n * @param ids Users' identifiers. Can be ID, username, phone number, `\"me\"`, `\"self\"` or TL object\n */\n getUsers(ids: MaybeArray<InputPeerLike>): Promise<(User | null)[]>\n /**\n * Iterate over profile photos\n *\n * **Available**: ✅ both users and bots\n *\n * @param userId User ID, username, phone number, `\"me\"` or `\"self\"`\n * @param params\n */\n iterProfilePhotos(\n userId: InputPeerLike,\n params?: Parameters<typeof getProfilePhotos>[2] & {\n /**\n * Maximum number of items to fetch\n *\n * @default `Infinity`, i.e. all items are fetched\n */\n limit?: number\n\n /**\n * Size of chunks which are fetched. Usually not needed.\n *\n * @default 100\n */\n chunkSize?: number\n },\n ): AsyncIterableIterator<Photo>\n /**\n * Get multiple `InputPeer`s at once,\n * while also normalizing and removing\n * peers that can't be normalized to that type.\n *\n * Uses async pool internally, with a concurrent limit of 8\n *\n * @param peerIds Peer Ids\n * @param normalizer Normalization function\n */\n resolvePeerMany<T extends tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel>(\n peerIds: InputPeerLike[],\n normalizer: (obj: tl.TypeInputPeer) => T | null,\n ): Promise<T[]>\n /**\n * Get multiple `InputPeer`s at once.\n *\n * Uses async pool internally, with a concurrent limit of 8\n *\n * @param peerIds Peer Ids\n */\n resolvePeerMany(peerIds: InputPeerLike[]): Promise<tl.TypeInputPeer[]>\n\n /**\n * Get the `InputPeer` of a known peer id.\n * Useful when an `InputPeer` is needed in Raw API.\n *\n * **Available**: ✅ both users and bots\n *\n * @param peerId The peer identifier that you want to extract the `InputPeer` from.\n * @param [force=false] Whether to force re-fetch the peer from the server (only for usernames and phone numbers)\n */\n resolvePeer(peerId: InputPeerLike, force?: boolean): Promise<tl.TypeInputPeer>\n /**\n * Shorthand for `resolvePeer` that converts the input peer to `InputUser`.\n * **Available**: ✅ both users and bots\n *\n */\n resolveUser(peerId: InputPeerLike, force?: boolean): Promise<tl.TypeInputUser>\n /**\n * Shorthand for `resolvePeer` that converts the input peer to `InputChannel`.\n * **Available**: ✅ both users and bots\n *\n */\n resolveChannel(peerId: InputPeerLike, force?: boolean): Promise<tl.TypeInputChannel>\n /**\n * Changes the current default value of the Time-To-Live setting,\n * applied to all new chats.\n *\n * **Available**: ✅ both users and bots\n *\n * @param period New TTL period, in seconds (or 0 to disable)\n */\n setGlobalTtl(period: number): Promise<void>\n /**\n * Set an emoji status for the current user\n *\n * **Available**: 👤 users only\n *\n * @param emoji Custom emoji ID or `null` to remove the emoji\n */\n setMyEmojiStatus(\n emoji: tl.Long | null,\n params?: {\n /**\n * Date when the emoji status should expire (only if `emoji` is not `null`)\n */\n until?: number | Date\n },\n ): Promise<void>\n /**\n * Set a new profile photo or video for the current user.\n *\n * You can also pass a file ID or an InputPhoto to re-use existing photo.\n * **Available**: ✅ both users and bots\n *\n */\n setMyProfilePhoto(params: {\n /** Media type (photo or video) */\n type: 'photo' | 'video'\n /** Input media file */\n media: InputFileLike | tl.TypeInputPhoto\n /** When `type = video`, timestamp in seconds which will be shown as a static preview. */\n previewSec?: number\n }): Promise<Photo>\n /**\n * Change username of the current user.\n *\n * Note that bots usernames must be changed through\n * bot support or re-created from scratch.\n *\n * **Available**: 👤 users only\n *\n * @param username New username (5-32 chars, allowed chars: `a-zA-Z0-9_`), or `null` to remove\n */\n setMyUsername(username: string | null): Promise<User>\n /**\n * Change user status to offline or online\n *\n * **Available**: 👤 users only\n *\n * @param [offline=true] Whether the user is currently offline\n */\n setOffline(offline?: boolean): Promise<void>\n /**\n * Unblock a user\n *\n * **Available**: 👤 users only\n *\n * @param id User ID, username or phone number\n */\n unblockUser(id: InputPeerLike): Promise<void>\n /**\n * Update your profile details.\n *\n * Only pass fields that you want to change.\n *\n * **Available**: 👤 users only\n *\n * @param params\n */\n updateProfile(params: {\n /**\n * New first name\n */\n firstName?: string\n\n /**\n * New last name. Pass `''` (empty string) to remove it\n */\n lastName?: string\n\n /**\n * New bio (max 70 chars). Pass `''` (empty string) to remove it\n */\n bio?: string\n }): Promise<User>\n}\n\nexport type { TelegramClientOptions }\n\nexport class TelegramClient extends EventEmitter implements ITelegramClient {\n _client: ITelegramClient\n constructor(opts: TelegramClientOptions) {\n super()\n\n if ('client' in opts) {\n this._client = opts.client\n } else {\n let storage: ITelegramStorageProvider\n\n if (typeof opts.storage === 'string') {\n storage = _defaultStorageFactory(opts.storage)\n } else if (!opts.storage) {\n storage = new MemoryStorage()\n } else {\n storage = opts.storage\n }\n\n this._client = new BaseTelegramClient({\n ...opts,\n storage,\n })\n }\n\n // @ts-expect-error codegen\n this.log = this._client.log\n // @ts-expect-error codegen\n this.storage = this._client.storage\n\n const skipConversationUpdates = opts.skipConversationUpdates ?? true\n const { messageGroupingInterval } = opts.updates ?? {}\n\n this._client.onUpdate(\n makeParsedUpdateHandler({\n messageGroupingInterval,\n onUpdate: (update) => {\n if (Conversation.handleUpdate(this._client, update) && skipConversationUpdates) return\n\n this.emit('update', update)\n this.emit(update.name, update.data)\n },\n onRawUpdate: (update, peers) => {\n this.emit('raw_update', update, peers)\n },\n }),\n )\n }\n}\n\nTelegramClient.prototype.checkPassword = function (...args) {\n return checkPassword(this._client, ...args)\n}\nTelegramClient.prototype.getPasswordHint = function (...args) {\n return getPasswordHint(this._client, ...args)\n}\nTelegramClient.prototype.logOut = function (...args) {\n return logOut(this._client, ...args)\n}\nTelegramClient.prototype.recoverPassword = function (...args) {\n return recoverPassword(this._client, ...args)\n}\nTelegramClient.prototype.resendCode = function (...args) {\n return resendCode(this._client, ...args)\n}\nTelegramClient.prototype.run = function (...args) {\n return run(this._client, ...args)\n}\nTelegramClient.prototype.sendCode = function (...args) {\n return sendCode(this._client, ...args)\n}\nTelegramClient.prototype.sendRecoveryCode = function (...args) {\n return sendRecoveryCode(this._client, ...args)\n}\nTelegramClient.prototype.signInBot = function (...args) {\n return signInBot(this._client, ...args)\n}\nTelegramClient.prototype.signIn = function (...args) {\n return signIn(this._client, ...args)\n}\nTelegramClient.prototype.startTest = function (...args) {\n return startTest(this._client, ...args)\n}\nTelegramClient.prototype.start = function (...args) {\n return start(this._client, ...args)\n}\nTelegramClient.prototype.isSelfPeer = function (...args) {\n return isSelfPeer(this._client, ...args)\n}\nTelegramClient.prototype.answerCallbackQuery = function (...args) {\n return answerCallbackQuery(this._client, ...args)\n}\nTelegramClient.prototype.answerInlineQuery = function (...args) {\n return answerInlineQuery(this._client, ...args)\n}\nTelegramClient.prototype.answerPreCheckoutQuery = function (...args) {\n return answerPreCheckoutQuery(this._client, ...args)\n}\nTelegramClient.prototype.deleteMyCommands = function (...args) {\n return deleteMyCommands(this._client, ...args)\n}\nTelegramClient.prototype.getBotInfo = function (...args) {\n return getBotInfo(this._client, ...args)\n}\nTelegramClient.prototype.getBotMenuButton = function (...args) {\n return getBotMenuButton(this._client, ...args)\n}\nTelegramClient.prototype.getCallbackAnswer = function (...args) {\n return getCallbackAnswer(this._client, ...args)\n}\nTelegramClient.prototype.getGameHighScores = function (...args) {\n return getGameHighScores(this._client, ...args)\n}\nTelegramClient.prototype.getInlineGameHighScores = function (...args) {\n return getInlineGameHighScores(this._client, ...args)\n}\nTelegramClient.prototype.getMyCommands = function (...args) {\n return getMyCommands(this._client, ...args)\n}\nTelegramClient.prototype.setBotInfo = function (...args) {\n return setBotInfo(this._client, ...args)\n}\nTelegramClient.prototype.setBotMenuButton = function (...args) {\n return setBotMenuButton(this._client, ...args)\n}\nTelegramClient.prototype.setGameScore = function (...args) {\n return setGameScore(this._client, ...args)\n}\nTelegramClient.prototype.setInlineGameScore = function (...args) {\n return setInlineGameScore(this._client, ...args)\n}\nTelegramClient.prototype.setMyCommands = function (...args) {\n return setMyCommands(this._client, ...args)\n}\nTelegramClient.prototype.setMyDefaultRights = function (...args) {\n return setMyDefaultRights(this._client, ...args)\n}\nTelegramClient.prototype.addChatMembers = function (...args) {\n return addChatMembers(this._client, ...args)\n}\nTelegramClient.prototype.archiveChats = function (...args) {\n return archiveChats(this._client, ...args)\n}\nTelegramClient.prototype.banChatMember = function (...args) {\n return banChatMember(this._client, ...args)\n}\nTelegramClient.prototype.createChannel = function (...args) {\n return createChannel(this._client, ...args)\n}\nTelegramClient.prototype.createGroup = function (...args) {\n return createGroup(this._client, ...args)\n}\nTelegramClient.prototype.createSupergroup = function (...args) {\n return createSupergroup(this._client, ...args)\n}\nTelegramClient.prototype.deleteChannel = function (...args) {\n return deleteChannel(this._client, ...args)\n}\nTelegramClient.prototype.deleteSupergroup = function (...args) {\n return deleteChannel(this._client, ...args)\n}\nTelegramClient.prototype.deleteChatPhoto = function (...args) {\n return deleteChatPhoto(this._client, ...args)\n}\nTelegramClient.prototype.deleteGroup = function (...args) {\n return deleteGroup(this._client, ...args)\n}\nTelegramClient.prototype.deleteHistory = function (...args) {\n return deleteHistory(this._client, ...args)\n}\nTelegramClient.prototype.deleteUserHistory = function (...args) {\n return deleteUserHistory(this._client, ...args)\n}\nTelegramClient.prototype.editAdminRights = function (...args) {\n return editAdminRights(this._client, ...args)\n}\nTelegramClient.prototype.getChatEventLog = function (...args) {\n return getChatEventLog(this._client, ...args)\n}\nTelegramClient.prototype.getChatMember = function (...args) {\n return getChatMember(this._client, ...args)\n}\nTelegramClient.prototype.getChatMembers = function (...args) {\n return getChatMembers(this._client, ...args)\n}\nTelegramClient.prototype.getChatPreview = function (...args) {\n return getChatPreview(this._client, ...args)\n}\nTelegramClient.prototype.getChat = function (...args) {\n return getChat(this._client, ...args)\n}\nTelegramClient.prototype.getFullChat = function (...args) {\n return getFullChat(this._client, ...args)\n}\nTelegramClient.prototype.getNearbyChats = function (...args) {\n return getNearbyChats(this._client, ...args)\n}\nTelegramClient.prototype.getSimilarChannels = function (...args) {\n return getSimilarChannels(this._client, ...args)\n}\nTelegramClient.prototype.iterChatEventLog = function (...args) {\n return iterChatEventLog(this._client, ...args)\n}\nTelegramClient.prototype.iterChatMembers = function (...args) {\n return iterChatMembers(this._client, ...args)\n}\nTelegramClient.prototype.joinChat = function (...args) {\n return joinChat(this._client, ...args)\n}\nTelegramClient.prototype.kickChatMember = function (...args) {\n return kickChatMember(this._client, ...args)\n}\nTelegramClient.prototype.leaveChat = function (...args) {\n return leaveChat(this._client, ...args)\n}\nTelegramClient.prototype.markChatUnread = function (...args) {\n return markChatUnread(this._client, ...args)\n}\nTelegramClient.prototype.openChat = function (...args) {\n return openChat(this._client, ...args)\n}\nTelegramClient.prototype.closeChat = function (...args) {\n return closeChat(this._client, ...args)\n}\nTelegramClient.prototype.reorderUsernames = function (...args) {\n return reorderUsernames(this._client, ...args)\n}\nTelegramClient.prototype.restrictChatMember = function (...args) {\n return restrictChatMember(this._client, ...args)\n}\nTelegramClient.prototype.saveDraft = function (...args) {\n return saveDraft(this._client, ...args)\n}\nTelegramClient.prototype.setChatColor = function (...args) {\n return setChatColor(this._client, ...args)\n}\nTelegramClient.prototype.setChatDefaultPermissions = function (...args) {\n return setChatDefaultPermissions(this._client, ...args)\n}\nTelegramClient.prototype.setChatDescription = function (...args) {\n return setChatDescription(this._client, ...args)\n}\nTelegramClient.prototype.setChatPhoto = function (...args) {\n return setChatPhoto(this._client, ...args)\n}\nTelegramClient.prototype.setChatTitle = function (...args) {\n return setChatTitle(this._client, ...args)\n}\nTelegramClient.prototype.setChatTtl = function (...args) {\n return setChatTtl(this._client, ...args)\n}\nTelegramClient.prototype.setChatUsername = function (...args) {\n return setChatUsername(this._client, ...args)\n}\nTelegramClient.prototype.setSlowMode = function (...args) {\n return setSlowMode(this._client, ...args)\n}\nTelegramClient.prototype.toggleContentProtection = function (...args) {\n return toggleContentProtection(this._client, ...args)\n}\nTelegramClient.prototype.toggleFragmentUsername = function (...args) {\n return toggleFragmentUsername(this._client, ...args)\n}\nTelegramClient.prototype.toggleJoinRequests = function (...args) {\n return toggleJoinRequests(this._client, ...args)\n}\nTelegramClient.prototype.toggleJoinToSend = function (...args) {\n return toggleJoinToSend(this._client, ...args)\n}\nTelegramClient.prototype.unarchiveChats = function (...args) {\n return unarchiveChats(this._client, ...args)\n}\nTelegramClient.prototype.unbanChatMember = function (...args) {\n return unbanChatMember(this._client, ...args)\n}\nTelegramClient.prototype.unrestrictChatMember = function (...args) {\n return unbanChatMember(this._client, ...args)\n}\nTelegramClient.prototype.addContact = function (...args) {\n return addContact(this._client, ...args)\n}\nTelegramClient.prototype.deleteContacts = function (...args) {\n return deleteContacts(this._client, ...args)\n}\nTelegramClient.prototype.getContacts = function (...args) {\n return getContacts(this._client, ...args)\n}\nTelegramClient.prototype.importContacts = function (...args) {\n return importContacts(this._client, ...args)\n}\nTelegramClient.prototype.createFolder = function (...args) {\n return createFolder(this._client, ...args)\n}\nTelegramClient.prototype.deleteFolder = function (...args) {\n return deleteFolder(this._client, ...args)\n}\nTelegramClient.prototype.editFolder = function (...args) {\n return editFolder(this._client, ...args)\n}\nTelegramClient.prototype.findFolder = function (...args) {\n return findFolder(this._client, ...args)\n}\nTelegramClient.prototype.getFolders = function (...args) {\n return getFolders(this._client, ...args)\n}\nTelegramClient.prototype.getPeerDialogs = function (...args) {\n return getPeerDialogs(this._client, ...args)\n}\nTelegramClient.prototype.iterDialogs = function (...args) {\n return iterDialogs(this._client, ...args)\n}\nTelegramClient.prototype.setFoldersOrder = function (...args) {\n return setFoldersOrder(this._client, ...args)\n}\nTelegramClient.prototype.downloadAsBuffer = function (...args) {\n return downloadAsBuffer(this._client, ...args)\n}\nTelegramClient.prototype.downloadToFile = function (...args) {\n return downloadToFile(this._client, ...args)\n}\nTelegramClient.prototype.downloadAsIterable = function (...args) {\n return downloadAsIterable(this._client, ...args)\n}\nTelegramClient.prototype.downloadAsStream = function (...args) {\n return downloadAsStream(this._client, ...args)\n}\nTelegramClient.prototype._normalizeInputFile = function (...args) {\n return _normalizeInputFile(this._client, ...args)\n}\nTelegramClient.prototype._normalizeInputMedia = function (...args) {\n return _normalizeInputMedia(this._client, ...args)\n}\nTelegramClient.prototype.uploadFile = function (...args) {\n return uploadFile(this._client, ...args)\n}\nTelegramClient.prototype.uploadMedia = function (...args) {\n return uploadMedia(this._client, ...args)\n}\nTelegramClient.prototype.createForumTopic = function (...args) {\n return createForumTopic(this._client, ...args)\n}\nTelegramClient.prototype.deleteForumTopicHistory = function (...args) {\n return deleteForumTopicHistory(this._client, ...args)\n}\nTelegramClient.prototype.editForumTopic = function (...args) {\n return editForumTopic(this._client, ...args)\n}\nTelegramClient.prototype.getForumTopicsById = function (...args) {\n return getForumTopicsById(this._client, ...args)\n}\nTelegramClient.prototype.getForumTopics = function (...args) {\n return getForumTopics(this._client, ...args)\n}\nTelegramClient.prototype.iterForumTopics = function (...args) {\n return iterForumTopics(this._client, ...args)\n}\nTelegramClient.prototype.reorderPinnedForumTopics = function (...args) {\n return reorderPinnedForumTopics(this._client, ...args)\n}\nTelegramClient.prototype.toggleForumTopicClosed = function (...args) {\n return toggleForumTopicClosed(this._client, ...args)\n}\nTelegramClient.prototype.toggleForumTopicPinned = function (...args) {\n return toggleForumTopicPinned(this._client, ...args)\n}\nTelegramClient.prototype.toggleForum = function (...args) {\n return toggleForum(this._client, ...args)\n}\nTelegramClient.prototype.toggleGeneralTopicHidden = function (...args) {\n return toggleGeneralTopicHidden(this._client, ...args)\n}\nTelegramClient.prototype.createInviteLink = function (...args) {\n return createInviteLink(this._client, ...args)\n}\nTelegramClient.prototype.editInviteLink = function (...args) {\n return editInviteLink(this._client, ...args)\n}\nTelegramClient.prototype.exportInviteLink = function (...args) {\n return exportInviteLink(this._client, ...args)\n}\nTelegramClient.prototype.getInviteLinkMembers = function (...args) {\n return getInviteLinkMembers(this._client, ...args)\n}\nTelegramClient.prototype.getInviteLink = function (...args) {\n return getInviteLink(this._client, ...args)\n}\nTelegramClient.prototype.getInviteLinks = function (...args) {\n return getInviteLinks(this._client, ...args)\n}\nTelegramClient.prototype.getPrimaryInviteLink = function (...args) {\n return getPrimaryInviteLink(this._client, ...args)\n}\nTelegramClient.prototype.hideAllJoinRequests = function (...args) {\n return hideAllJoinRequests(this._client, ...args)\n}\nTelegramClient.prototype.hideJoinRequest = function (...args) {\n return hideJoinRequest(this._client, ...args)\n}\nTelegramClient.prototype.iterInviteLinkMembers = function (...args) {\n return iterInviteLinkMembers(this._client, ...args)\n}\nTelegramClient.prototype.iterInviteLinks = function (...args) {\n return iterInviteLinks(this._client, ...args)\n}\nTelegramClient.prototype.revokeInviteLink = function (...args) {\n return revokeInviteLink(this._client, ...args)\n}\nTelegramClient.prototype.closePoll = function (...args) {\n return closePoll(this._client, ...args)\n}\nTelegramClient.prototype.deleteMessagesById = function (...args) {\n return deleteMessagesById(this._client, ...args)\n}\nTelegramClient.prototype.deleteMessages = function (...args) {\n return deleteMessages(this._client, ...args)\n}\nTelegramClient.prototype.deleteScheduledMessages = function (...args) {\n return deleteScheduledMessages(this._client, ...args)\n}\nTelegramClient.prototype.editInlineMessage = function (...args) {\n return editInlineMessage(this._client, ...args)\n}\nTelegramClient.prototype.editMessage = function (...args) {\n return editMessage(this._client, ...args)\n}\nTelegramClient.prototype.forwardMessagesById = function (...args) {\n return forwardMessagesById(this._client, ...args)\n}\nTelegramClient.prototype.forwardMessages = function (...args) {\n return forwardMessages(this._client, ...args)\n}\nTelegramClient.prototype.getCallbackQueryMessage = function (...args) {\n return getCallbackQueryMessage(this._client, ...args)\n}\nTelegramClient.prototype.getDiscussionMessage = function (...args) {\n return getDiscussionMessage(this._client, ...args)\n}\nTelegramClient.prototype.getHistory = function (...args) {\n return getHistory(this._client, ...args)\n}\nTelegramClient.prototype.getMessageByLink = function (...args) {\n return getMessageByLink(this._client, ...args)\n}\nTelegramClient.prototype.getMessageGroup = function (...args) {\n return getMessageGroup(this._client, ...args)\n}\nTelegramClient.prototype.getMessageReactionsById = function (...args) {\n return getMessageReactionsById(this._client, ...args)\n}\nTelegramClient.prototype.getMessageReactions = function (...args) {\n return getMessageReactions(this._client, ...args)\n}\nTelegramClient.prototype.getMessagesUnsafe = function (...args) {\n return getMessagesUnsafe(this._client, ...args)\n}\nTelegramClient.prototype.getMessages = function (...args) {\n return getMessages(this._client, ...args)\n}\nTelegramClient.prototype.getReactionUsers = function (...args) {\n return getReactionUsers(this._client, ...args)\n}\nTelegramClient.prototype.getReplyTo = function (...args) {\n return getReplyTo(this._client, ...args)\n}\nTelegramClient.prototype.getScheduledMessages = function (...args) {\n return getScheduledMessages(this._client, ...args)\n}\nTelegramClient.prototype.iterHistory = function (...args) {\n return iterHistory(this._client, ...args)\n}\nTelegramClient.prototype.iterReactionUsers = function (...args) {\n return iterReactionUsers(this._client, ...args)\n}\nTelegramClient.prototype.iterSearchGlobal = function (...args) {\n return iterSearchGlobal(this._client, ...args)\n}\nTelegramClient.prototype.iterSearchMessages = function (...args) {\n return iterSearchMessages(this._client, ...args)\n}\nTelegramClient.prototype.pinMessage = function (...args) {\n return pinMessage(this._client, ...args)\n}\nTelegramClient.prototype.readHistory = function (...args) {\n return readHistory(this._client, ...args)\n}\nTelegramClient.prototype.readReactions = function (...args) {\n return readReactions(this._client, ...args)\n}\nTelegramClient.prototype.searchGlobal = function (...args) {\n return searchGlobal(this._client, ...args)\n}\nTelegramClient.prototype.searchMessages = function (...args) {\n return searchMessages(this._client, ...args)\n}\nTelegramClient.prototype.answerText = function (...args) {\n return answerText(this._client, ...args)\n}\nTelegramClient.prototype.answerMedia = function (...args) {\n return answerMedia(this._client, ...args)\n}\nTelegramClient.prototype.answerMediaGroup = function (...args) {\n return answerMediaGroup(this._client, ...args)\n}\nTelegramClient.prototype.commentText = function (...args) {\n return commentText(this._client, ...args)\n}\nTelegramClient.prototype.commentMedia = function (...args) {\n return commentMedia(this._client, ...args)\n}\nTelegramClient.prototype.commentMediaGroup = function (...args) {\n return commentMediaGroup(this._client, ...args)\n}\nTelegramClient.prototype.sendCopyGroup = function (...args) {\n return sendCopyGroup(this._client, ...args)\n}\nTelegramClient.prototype.sendCopy = function (...args) {\n return sendCopy(this._client, ...args)\n}\nTelegramClient.prototype.sendMediaGroup = function (...args) {\n return sendMediaGroup(this._client, ...args)\n}\nTelegramClient.prototype.sendMedia = function (...args) {\n return sendMedia(this._client, ...args)\n}\nTelegramClient.prototype.quoteWithText = function (...args) {\n return quoteWithText(this._client, ...args)\n}\nTelegramClient.prototype.quoteWithMedia = function (...args) {\n return quoteWithMedia(this._client, ...args)\n}\nTelegramClient.prototype.quoteWithMediaGroup = function (...args) {\n return quoteWithMediaGroup(this._client, ...args)\n}\nTelegramClient.prototype.sendReaction = function (...args) {\n return sendReaction(this._client, ...args)\n}\nTelegramClient.prototype.replyText = function (...args) {\n return replyText(this._client, ...args)\n}\nTelegramClient.prototype.replyMedia = function (...args) {\n return replyMedia(this._client, ...args)\n}\nTelegramClient.prototype.replyMediaGroup = function (...args) {\n return replyMediaGroup(this._client, ...args)\n}\nTelegramClient.prototype.sendScheduled = function (...args) {\n return sendScheduled(this._client, ...args)\n}\nTelegramClient.prototype.sendText = function (...args) {\n return sendText(this._client, ...args)\n}\nTelegramClient.prototype.sendTyping = function (...args) {\n return sendTyping(this._client, ...args)\n}\nTelegramClient.prototype.sendVote = function (...args) {\n return sendVote(this._client, ...args)\n}\nTelegramClient.prototype.translateMessage = function (...args) {\n return translateMessage(this._client, ...args)\n}\nTelegramClient.prototype.translateText = function (...args) {\n return translateText(this._client, ...args)\n}\nTelegramClient.prototype.unpinAllMessages = function (...args) {\n return unpinAllMessages(this._client, ...args)\n}\nTelegramClient.prototype.unpinMessage = function (...args) {\n return unpinMessage(this._client, ...args)\n}\nTelegramClient.prototype.initTakeoutSession = function (...args) {\n return initTakeoutSession(this._client, ...args)\n}\nTelegramClient.prototype._normalizePrivacyRules = function (...args) {\n return _normalizePrivacyRules(this._client, ...args)\n}\nTelegramClient.prototype.changeCloudPassword = function (...args) {\n return changeCloudPassword(this._client, ...args)\n}\nTelegramClient.prototype.enableCloudPassword = function (...args) {\n return enableCloudPassword(this._client, ...args)\n}\nTelegramClient.prototype.verifyPasswordEmail = function (...args) {\n return verifyPasswordEmail(this._client, ...args)\n}\nTelegramClient.prototype.resendPasswordEmail = function (...args) {\n return resendPasswordEmail(this._client, ...args)\n}\nTelegramClient.prototype.cancelPasswordEmail = function (...args) {\n return cancelPasswordEmail(this._client, ...args)\n}\nTelegramClient.prototype.removeCloudPassword = function (...args) {\n return removeCloudPassword(this._client, ...args)\n}\nTelegramClient.prototype.applyBoost = function (...args) {\n return applyBoost(this._client, ...args)\n}\nTelegramClient.prototype.canApplyBoost = function (...args) {\n return canApplyBoost(this._client, ...args)\n}\nTelegramClient.prototype.getBoostStats = function (...args) {\n return getBoostStats(this._client, ...args)\n}\nTelegramClient.prototype.getBoosts = function (...args) {\n return getBoosts(this._client, ...args)\n}\nTelegramClient.prototype.getMyBoostSlots = function (...args) {\n return getMyBoostSlots(this._client, ...args)\n}\nTelegramClient.prototype.iterBoosters = function (...args) {\n return iterBoosters(this._client, ...args)\n}\nTelegramClient.prototype.addStickerToSet = function (...args) {\n return addStickerToSet(this._client, ...args)\n}\nTelegramClient.prototype.createStickerSet = function (...args) {\n return createStickerSet(this._client, ...args)\n}\nTelegramClient.prototype.deleteStickerFromSet = function (...args) {\n return deleteStickerFromSet(this._client, ...args)\n}\nTelegramClient.prototype.getCustomEmojis = function (...args) {\n return getCustomEmojis(this._client, ...args)\n}\nTelegramClient.prototype.getCustomEmojisFromMessages = function (...args) {\n return getCustomEmojisFromMessages(this._client, ...args)\n}\nTelegramClient.prototype.getInstalledStickers = function (...args) {\n return getInstalledStickers(this._client, ...args)\n}\nTelegramClient.prototype.getStickerSet = function (...args) {\n return getStickerSet(this._client, ...args)\n}\nTelegramClient.prototype.moveStickerInSet = function (...args) {\n return moveStickerInSet(this._client, ...args)\n}\nTelegramClient.prototype.setChatStickerSet = function (...args) {\n return setChatStickerSet(this._client, ...args)\n}\nTelegramClient.prototype.setStickerSetThumb = function (...args) {\n return setStickerSetThumb(this._client, ...args)\n}\nTelegramClient.prototype.canSendStory = function (...args) {\n return canSendStory(this._client, ...args)\n}\nTelegramClient.prototype.deleteStories = function (...args) {\n return deleteStories(this._client, ...args)\n}\nTelegramClient.prototype.editStory = function (...args) {\n return editStory(this._client, ...args)\n}\nTelegramClient.prototype.getAllStories = function (...args) {\n return getAllStories(this._client, ...args)\n}\nTelegramClient.prototype.getPeerStories = function (...args) {\n return getPeerStories(this._client, ...args)\n}\nTelegramClient.prototype.getProfileStories = function (...args) {\n return getProfileStories(this._client, ...args)\n}\nTelegramClient.prototype.getStoriesById = function (...args) {\n return getStoriesById(this._client, ...args)\n}\nTelegramClient.prototype.getStoriesInteractions = function (...args) {\n return getStoriesInteractions(this._client, ...args)\n}\nTelegramClient.prototype.getStoryLink = function (...args) {\n return getStoryLink(this._client, ...args)\n}\nTelegramClient.prototype.getStoryViewers = function (...args) {\n return getStoryViewers(this._client, ...args)\n}\nTelegramClient.prototype.hideMyStoriesViews = function (...args) {\n return hideMyStoriesViews(this._client, ...args)\n}\nTelegramClient.prototype.incrementStoriesViews = function (...args) {\n return incrementStoriesViews(this._client, ...args)\n}\nTelegramClient.prototype.iterAllStories = function (...args) {\n return iterAllStories(this._client, ...args)\n}\nTelegramClient.prototype.iterProfileStories = function (...args) {\n return iterProfileStories(this._client, ...args)\n}\nTelegramClient.prototype.iterStoryViewers = function (...args) {\n return iterStoryViewers(this._client, ...args)\n}\nTelegramClient.prototype.readStories = function (...args) {\n return readStories(this._client, ...args)\n}\nTelegramClient.prototype.reportStory = function (...args) {\n return reportStory(this._client, ...args)\n}\nTelegramClient.prototype.sendStoryReaction = function (...args) {\n return sendStoryReaction(this._client, ...args)\n}\nTelegramClient.prototype.sendStory = function (...args) {\n return sendStory(this._client, ...args)\n}\nTelegramClient.prototype.togglePeerStoriesArchived = function (...args) {\n return togglePeerStoriesArchived(this._client, ...args)\n}\nTelegramClient.prototype.toggleStoriesPinned = function (...args) {\n return toggleStoriesPinned(this._client, ...args)\n}\nTelegramClient.prototype.blockUser = function (...args) {\n return blockUser(this._client, ...args)\n}\nTelegramClient.prototype.deleteProfilePhotos = function (...args) {\n return deleteProfilePhotos(this._client, ...args)\n}\nTelegramClient.prototype.editCloseFriendsRaw = function (...args) {\n return editCloseFriendsRaw(this._client, ...args)\n}\nTelegramClient.prototype.editCloseFriends = function (...args) {\n return editCloseFriends(this._client, ...args)\n}\nTelegramClient.prototype.getCommonChats = function (...args) {\n return getCommonChats(this._client, ...args)\n}\nTelegramClient.prototype.getGlobalTtl = function (...args) {\n return getGlobalTtl(this._client, ...args)\n}\nTelegramClient.prototype.getMe = function (...args) {\n return getMe(this._client, ...args)\n}\nTelegramClient.prototype.getMyUsername = function (...args) {\n return getMyUsername(this._client, ...args)\n}\nTelegramClient.prototype.getProfilePhoto = function (...args) {\n return getProfilePhoto(this._client, ...args)\n}\nTelegramClient.prototype.getProfilePhotos = function (...args) {\n return getProfilePhotos(this._client, ...args)\n}\nTelegramClient.prototype.getUsers = function (...args) {\n return getUsers(this._client, ...args)\n}\nTelegramClient.prototype.iterProfilePhotos = function (...args) {\n return iterProfilePhotos(this._client, ...args)\n}\n// @ts-expect-error this kinda breaks typings for overloads, idc\nTelegramClient.prototype.resolvePeerMany = function (...args) {\n // @ts-expect-error this kinda breaks typings for overloads, idc\n return resolvePeerMany(this._client, ...args)\n}\nTelegramClient.prototype.resolvePeer = function (...args) {\n return resolvePeer(this._client, ...args)\n}\nTelegramClient.prototype.resolveUser = function (...args) {\n return resolveUser(this._client, ...args)\n}\nTelegramClient.prototype.resolveChannel = function (...args) {\n return resolveChannel(this._client, ...args)\n}\nTelegramClient.prototype.setGlobalTtl = function (...args) {\n return setGlobalTtl(this._client, ...args)\n}\nTelegramClient.prototype.setMyEmojiStatus = function (...args) {\n return setMyEmojiStatus(this._client, ...args)\n}\nTelegramClient.prototype.setMyProfilePhoto = function (...args) {\n return setMyProfilePhoto(this._client, ...args)\n}\nTelegramClient.prototype.setMyUsername = function (...args) {\n return setMyUsername(this._client, ...args)\n}\nTelegramClient.prototype.setOffline = function (...args) {\n return setOffline(this._client, ...args)\n}\nTelegramClient.prototype.unblockUser = function (...args) {\n return unblockUser(this._client, ...args)\n}\nTelegramClient.prototype.updateProfile = function (...args) {\n return updateProfile(this._client, ...args)\n}\nTelegramClient.prototype.prepare = function (...args) {\n return this._client.prepare(...args)\n}\nTelegramClient.prototype.connect = function (...args) {\n return this._client.connect(...args)\n}\nTelegramClient.prototype.close = function (...args) {\n return this._client.close(...args)\n}\nTelegramClient.prototype.notifyLoggedIn = function (...args) {\n return this._client.notifyLoggedIn(...args)\n}\nTelegramClient.prototype.notifyLoggedOut = function (...args) {\n return this._client.notifyLoggedOut(...args)\n}\nTelegramClient.prototype.notifyChannelOpened = function (...args) {\n return this._client.notifyChannelOpened(...args)\n}\nTelegramClient.prototype.notifyChannelClosed = function (...args) {\n return this._client.notifyChannelClosed(...args)\n}\nTelegramClient.prototype.startUpdatesLoop = function (...args) {\n return this._client.startUpdatesLoop(...args)\n}\nTelegramClient.prototype.stopUpdatesLoop = function (...args) {\n return this._client.stopUpdatesLoop(...args)\n}\nTelegramClient.prototype.call = function (...args) {\n return this._client.call(...args)\n}\nTelegramClient.prototype.importSession = function (...args) {\n return this._client.importSession(...args)\n}\nTelegramClient.prototype.exportSession = function (...args) {\n return this._client.exportSession(...args)\n}\nTelegramClient.prototype.onError = function (...args) {\n return this._client.onError(...args)\n}\nTelegramClient.prototype.emitError = function (...args) {\n return this._client.emitError(...args)\n}\nTelegramClient.prototype.handleClientUpdate = function (...args) {\n return this._client.handleClientUpdate(...args)\n}\nTelegramClient.prototype.getApiCrenetials = function (...args) {\n return this._client.getApiCrenetials(...args)\n}\nTelegramClient.prototype.getPoolSize = function (...args) {\n return this._client.getPoolSize(...args)\n}\nTelegramClient.prototype.getPrimaryDcId = function (...args) {\n return this._client.getPrimaryDcId(...args)\n}\nTelegramClient.prototype.computeSrpParams = function (...args) {\n return this._client.computeSrpParams(...args)\n}\nTelegramClient.prototype.computeNewPasswordHash = function (...args) {\n return this._client.computeNewPasswordHash(...args)\n}\nTelegramClient.prototype.onServerUpdate = function () {\n throw new Error('onServerUpdate is not available for TelegramClient, use .on() methods instead')\n}\nTelegramClient.prototype.onUpdate = function () {\n throw new Error('onUpdate is not available for TelegramClient, use .on() methods instead')\n}\n"]}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/highlevel/client.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging, @typescript-eslint/unified-signatures */\n/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* THIS FILE WAS AUTO-GENERATED */\nimport EventEmitter from 'events'\nimport Long from 'long'\n\nimport { tdFileId } from '@mtcute/file-id'\nimport { tl } from '@mtcute/tl'\n\nimport { MemoryStorage } from '../storage/providers/memory/index.js'\nimport { MaybeArray, MaybePromise, PartialExcept, PartialOnly } from '../types/index.js'\nimport { BaseTelegramClient, BaseTelegramClientOptions } from './base.js'\nimport { ITelegramClient } from './client.types.js'\nimport { checkPassword } from './methods/auth/check-password.js'\nimport { getPasswordHint } from './methods/auth/get-password-hint.js'\nimport { logOut } from './methods/auth/log-out.js'\nimport { recoverPassword } from './methods/auth/recover-password.js'\nimport { resendCode } from './methods/auth/resend-code.js'\nimport { run } from './methods/auth/run.js'\nimport { sendCode } from './methods/auth/send-code.js'\nimport { sendRecoveryCode } from './methods/auth/send-recovery-code.js'\nimport { signIn } from './methods/auth/sign-in.js'\nimport { signInBot } from './methods/auth/sign-in-bot.js'\nimport { start } from './methods/auth/start.js'\nimport { startTest } from './methods/auth/start-test.js'\nimport { isSelfPeer } from './methods/auth/utils.js'\nimport { answerCallbackQuery } from './methods/bots/answer-callback-query.js'\nimport { answerInlineQuery } from './methods/bots/answer-inline-query.js'\nimport { answerPreCheckoutQuery } from './methods/bots/answer-pre-checkout-query.js'\nimport { deleteMyCommands } from './methods/bots/delete-my-commands.js'\nimport { getBotInfo } from './methods/bots/get-bot-info.js'\nimport { getBotMenuButton } from './methods/bots/get-bot-menu-button.js'\nimport { getCallbackAnswer } from './methods/bots/get-callback-answer.js'\nimport { getGameHighScores, getInlineGameHighScores } from './methods/bots/get-game-high-scores.js'\nimport { getMyCommands } from './methods/bots/get-my-commands.js'\nimport { setBotInfo } from './methods/bots/set-bot-info.js'\nimport { setBotMenuButton } from './methods/bots/set-bot-menu-button.js'\nimport { setGameScore, setInlineGameScore } from './methods/bots/set-game-score.js'\nimport { setMyCommands } from './methods/bots/set-my-commands.js'\nimport { setMyDefaultRights } from './methods/bots/set-my-default-rights.js'\nimport { addChatMembers } from './methods/chats/add-chat-members.js'\nimport { archiveChats } from './methods/chats/archive-chats.js'\nimport { banChatMember } from './methods/chats/ban-chat-member.js'\nimport { createChannel } from './methods/chats/create-channel.js'\nimport { createGroup } from './methods/chats/create-group.js'\nimport { createSupergroup } from './methods/chats/create-supergroup.js'\nimport { deleteChannel } from './methods/chats/delete-channel.js'\nimport { deleteChatPhoto } from './methods/chats/delete-chat-photo.js'\nimport { deleteGroup } from './methods/chats/delete-group.js'\nimport { deleteHistory } from './methods/chats/delete-history.js'\nimport { deleteUserHistory } from './methods/chats/delete-user-history.js'\nimport { editAdminRights } from './methods/chats/edit-admin-rights.js'\nimport { getChat } from './methods/chats/get-chat.js'\nimport { getChatEventLog } from './methods/chats/get-chat-event-log.js'\nimport { getChatMember } from './methods/chats/get-chat-member.js'\nimport { getChatMembers } from './methods/chats/get-chat-members.js'\nimport { getChatPreview } from './methods/chats/get-chat-preview.js'\nimport { getFullChat } from './methods/chats/get-full-chat.js'\nimport { getNearbyChats } from './methods/chats/get-nearby-chats.js'\nimport { getSimilarChannels } from './methods/chats/get-similar-channels.js'\nimport { iterChatEventLog } from './methods/chats/iter-chat-event-log.js'\nimport { iterChatMembers } from './methods/chats/iter-chat-members.js'\nimport { joinChat } from './methods/chats/join-chat.js'\nimport { kickChatMember } from './methods/chats/kick-chat-member.js'\nimport { leaveChat } from './methods/chats/leave-chat.js'\nimport { markChatUnread } from './methods/chats/mark-chat-unread.js'\nimport { closeChat, openChat } from './methods/chats/open-chat.js'\nimport { reorderUsernames } from './methods/chats/reorder-usernames.js'\nimport { restrictChatMember } from './methods/chats/restrict-chat-member.js'\nimport { saveDraft } from './methods/chats/save-draft.js'\nimport { setChatColor } from './methods/chats/set-chat-color.js'\nimport { setChatDefaultPermissions } from './methods/chats/set-chat-default-permissions.js'\nimport { setChatDescription } from './methods/chats/set-chat-description.js'\nimport { setChatPhoto } from './methods/chats/set-chat-photo.js'\nimport { setChatTitle } from './methods/chats/set-chat-title.js'\nimport { setChatTtl } from './methods/chats/set-chat-ttl.js'\nimport { setChatUsername } from './methods/chats/set-chat-username.js'\nimport { setSlowMode } from './methods/chats/set-slow-mode.js'\nimport { toggleContentProtection } from './methods/chats/toggle-content-protection.js'\nimport { toggleFragmentUsername } from './methods/chats/toggle-fragment-username.js'\nimport { toggleJoinRequests } from './methods/chats/toggle-join-requests.js'\nimport { toggleJoinToSend } from './methods/chats/toggle-join-to-send.js'\nimport { unarchiveChats } from './methods/chats/unarchive-chats.js'\nimport { unbanChatMember } from './methods/chats/unban-chat-member.js'\nimport { addContact } from './methods/contacts/add-contact.js'\nimport { deleteContacts } from './methods/contacts/delete-contacts.js'\nimport { getContacts } from './methods/contacts/get-contacts.js'\nimport { importContacts } from './methods/contacts/import-contacts.js'\nimport { createFolder } from './methods/dialogs/create-folder.js'\nimport { deleteFolder } from './methods/dialogs/delete-folder.js'\nimport { editFolder } from './methods/dialogs/edit-folder.js'\nimport { findFolder } from './methods/dialogs/find-folder.js'\nimport { getFolders } from './methods/dialogs/get-folders.js'\nimport { getPeerDialogs } from './methods/dialogs/get-peer-dialogs.js'\nimport { iterDialogs } from './methods/dialogs/iter-dialogs.js'\nimport { setFoldersOrder } from './methods/dialogs/set-folders-order.js'\nimport { downloadAsBuffer } from './methods/files/download-buffer.js'\nimport { downloadToFile } from './methods/files/download-file.js'\nimport { downloadAsIterable } from './methods/files/download-iterable.js'\nimport { downloadAsStream } from './methods/files/download-stream.js'\nimport { _normalizeInputFile } from './methods/files/normalize-input-file.js'\nimport { _normalizeInputMedia } from './methods/files/normalize-input-media.js'\nimport { uploadFile } from './methods/files/upload-file.js'\nimport { uploadMedia } from './methods/files/upload-media.js'\nimport { createForumTopic } from './methods/forums/create-forum-topic.js'\nimport { deleteForumTopicHistory } from './methods/forums/delete-forum-topic-history.js'\nimport { editForumTopic } from './methods/forums/edit-forum-topic.js'\nimport { getForumTopics, GetForumTopicsOffset } from './methods/forums/get-forum-topics.js'\nimport { getForumTopicsById } from './methods/forums/get-forum-topics-by-id.js'\nimport { iterForumTopics } from './methods/forums/iter-forum-topics.js'\nimport { reorderPinnedForumTopics } from './methods/forums/reorder-pinned-forum-topics.js'\nimport { toggleForum } from './methods/forums/toggle-forum.js'\nimport { toggleForumTopicClosed } from './methods/forums/toggle-forum-topic-closed.js'\nimport { toggleForumTopicPinned } from './methods/forums/toggle-forum-topic-pinned.js'\nimport { toggleGeneralTopicHidden } from './methods/forums/toggle-general-topic-hidden.js'\nimport { createInviteLink } from './methods/invite-links/create-invite-link.js'\nimport { editInviteLink } from './methods/invite-links/edit-invite-link.js'\nimport { exportInviteLink } from './methods/invite-links/export-invite-link.js'\nimport { getInviteLink } from './methods/invite-links/get-invite-link.js'\nimport { getInviteLinkMembers } from './methods/invite-links/get-invite-link-members.js'\nimport { getInviteLinks, GetInviteLinksOffset } from './methods/invite-links/get-invite-links.js'\nimport { getPrimaryInviteLink } from './methods/invite-links/get-primary-invite-link.js'\nimport { hideAllJoinRequests } from './methods/invite-links/hide-all-join-requests.js'\nimport { hideJoinRequest } from './methods/invite-links/hide-join-request.js'\nimport { iterInviteLinkMembers } from './methods/invite-links/iter-invite-link-members.js'\nimport { iterInviteLinks } from './methods/invite-links/iter-invite-links.js'\nimport { revokeInviteLink } from './methods/invite-links/revoke-invite-link.js'\nimport { closePoll } from './methods/messages/close-poll.js'\nimport { deleteMessages, deleteMessagesById, DeleteMessagesParams } from './methods/messages/delete-messages.js'\nimport { deleteScheduledMessages } from './methods/messages/delete-scheduled-messages.js'\nimport { editInlineMessage } from './methods/messages/edit-inline-message.js'\nimport { editMessage } from './methods/messages/edit-message.js'\nimport { ForwardMessageOptions, forwardMessages, forwardMessagesById } from './methods/messages/forward-messages.js'\nimport { getCallbackQueryMessage } from './methods/messages/get-callback-query-message.js'\nimport { getDiscussionMessage } from './methods/messages/get-discussion-message.js'\nimport { getHistory, GetHistoryOffset } from './methods/messages/get-history.js'\nimport { getMessageByLink } from './methods/messages/get-message-by-link.js'\nimport { getMessageGroup } from './methods/messages/get-message-group.js'\nimport { getMessageReactions, getMessageReactionsById } from './methods/messages/get-message-reactions.js'\nimport { getMessages } from './methods/messages/get-messages.js'\nimport { getMessagesUnsafe } from './methods/messages/get-messages-unsafe.js'\nimport { getReactionUsers, GetReactionUsersOffset } from './methods/messages/get-reaction-users.js'\nimport { getReplyTo } from './methods/messages/get-reply-to.js'\nimport { getScheduledMessages } from './methods/messages/get-scheduled-messages.js'\nimport { iterHistory } from './methods/messages/iter-history.js'\nimport { iterReactionUsers } from './methods/messages/iter-reaction-users.js'\nimport { iterSearchGlobal } from './methods/messages/iter-search-global.js'\nimport { iterSearchMessages } from './methods/messages/iter-search-messages.js'\nimport { pinMessage } from './methods/messages/pin-message.js'\nimport { readHistory } from './methods/messages/read-history.js'\nimport { readReactions } from './methods/messages/read-reactions.js'\nimport { searchGlobal, SearchGlobalOffset } from './methods/messages/search-global.js'\nimport { searchMessages, SearchMessagesOffset } from './methods/messages/search-messages.js'\nimport { answerMedia, answerMediaGroup, answerText } from './methods/messages/send-answer.js'\nimport { commentMedia, commentMediaGroup, commentText } from './methods/messages/send-comment.js'\nimport { CommonSendParams } from './methods/messages/send-common.js'\nimport { sendCopy, SendCopyParams } from './methods/messages/send-copy.js'\nimport { sendCopyGroup, SendCopyGroupParams } from './methods/messages/send-copy-group.js'\nimport { sendMedia } from './methods/messages/send-media.js'\nimport { sendMediaGroup } from './methods/messages/send-media-group.js'\nimport { QuoteParamsFrom, quoteWithMedia, quoteWithMediaGroup, quoteWithText } from './methods/messages/send-quote.js'\nimport { sendReaction } from './methods/messages/send-reaction.js'\nimport { replyMedia, replyMediaGroup, replyText } from './methods/messages/send-reply.js'\nimport { sendScheduled } from './methods/messages/send-scheduled.js'\nimport { sendText } from './methods/messages/send-text.js'\nimport { sendTyping } from './methods/messages/send-typing.js'\nimport { sendVote } from './methods/messages/send-vote.js'\nimport { translateMessage } from './methods/messages/translate-message.js'\nimport { translateText } from './methods/messages/translate-text.js'\nimport { unpinAllMessages } from './methods/messages/unpin-all-messages.js'\nimport { unpinMessage } from './methods/messages/unpin-message.js'\nimport { initTakeoutSession } from './methods/misc/init-takeout-session.js'\nimport { _normalizePrivacyRules } from './methods/misc/normalize-privacy-rules.js'\nimport { changeCloudPassword } from './methods/password/change-cloud-password.js'\nimport { enableCloudPassword } from './methods/password/enable-cloud-password.js'\nimport { cancelPasswordEmail, resendPasswordEmail, verifyPasswordEmail } from './methods/password/password-email.js'\nimport { removeCloudPassword } from './methods/password/remove-cloud-password.js'\nimport { applyBoost } from './methods/premium/apply-boost.js'\nimport { canApplyBoost, CanApplyBoostResult } from './methods/premium/can-apply-boost.js'\nimport { getBoostStats } from './methods/premium/get-boost-stats.js'\nimport { getBoosts } from './methods/premium/get-boosts.js'\nimport { getMyBoostSlots } from './methods/premium/get-my-boost-slots.js'\nimport { iterBoosters } from './methods/premium/iter-boosters.js'\nimport { addStickerToSet } from './methods/stickers/add-sticker-to-set.js'\nimport { createStickerSet } from './methods/stickers/create-sticker-set.js'\nimport { deleteStickerFromSet } from './methods/stickers/delete-sticker-from-set.js'\nimport { getCustomEmojis, getCustomEmojisFromMessages } from './methods/stickers/get-custom-emojis.js'\nimport { getInstalledStickers } from './methods/stickers/get-installed-stickers.js'\nimport { getStickerSet } from './methods/stickers/get-sticker-set.js'\nimport { moveStickerInSet } from './methods/stickers/move-sticker-in-set.js'\nimport { setChatStickerSet } from './methods/stickers/set-chat-sticker-set.js'\nimport { setStickerSetThumb } from './methods/stickers/set-sticker-set-thumb.js'\nimport { canSendStory, CanSendStoryResult } from './methods/stories/can-send-story.js'\nimport { deleteStories } from './methods/stories/delete-stories.js'\nimport { editStory } from './methods/stories/edit-story.js'\nimport { getAllStories } from './methods/stories/get-all-stories.js'\nimport { getPeerStories } from './methods/stories/get-peer-stories.js'\nimport { getProfileStories } from './methods/stories/get-profile-stories.js'\nimport { getStoriesById } from './methods/stories/get-stories-by-id.js'\nimport { getStoriesInteractions } from './methods/stories/get-stories-interactions.js'\nimport { getStoryLink } from './methods/stories/get-story-link.js'\nimport { getStoryViewers } from './methods/stories/get-story-viewers.js'\nimport { hideMyStoriesViews } from './methods/stories/hide-my-stories-views.js'\nimport { incrementStoriesViews } from './methods/stories/increment-stories-views.js'\nimport { iterAllStories } from './methods/stories/iter-all-stories.js'\nimport { iterProfileStories } from './methods/stories/iter-profile-stories.js'\nimport { iterStoryViewers } from './methods/stories/iter-story-viewers.js'\nimport { readStories } from './methods/stories/read-stories.js'\nimport { reportStory } from './methods/stories/report-story.js'\nimport { sendStory } from './methods/stories/send-story.js'\nimport { sendStoryReaction } from './methods/stories/send-story-reaction.js'\nimport { togglePeerStoriesArchived } from './methods/stories/toggle-peer-stories-archived.js'\nimport { toggleStoriesPinned } from './methods/stories/toggle-stories-pinned.js'\nimport { blockUser } from './methods/users/block-user.js'\nimport { deleteProfilePhotos } from './methods/users/delete-profile-photos.js'\nimport { editCloseFriends, editCloseFriendsRaw } from './methods/users/edit-close-friends.js'\nimport { getCommonChats } from './methods/users/get-common-chats.js'\nimport { getGlobalTtl } from './methods/users/get-global-ttl.js'\nimport { getMe } from './methods/users/get-me.js'\nimport { getMyUsername } from './methods/users/get-my-username.js'\nimport { getProfilePhoto } from './methods/users/get-profile-photo.js'\nimport { getProfilePhotos } from './methods/users/get-profile-photos.js'\nimport { getUsers } from './methods/users/get-users.js'\nimport { iterProfilePhotos } from './methods/users/iter-profile-photos.js'\nimport { resolveChannel, resolvePeer, resolveUser } from './methods/users/resolve-peer.js'\nimport { resolvePeerMany } from './methods/users/resolve-peer-many.js'\nimport { setGlobalTtl } from './methods/users/set-global-ttl.js'\nimport { setMyEmojiStatus } from './methods/users/set-my-emoji-status.js'\nimport { setMyProfilePhoto } from './methods/users/set-my-profile-photo.js'\nimport { setMyUsername } from './methods/users/set-my-username.js'\nimport { setOffline } from './methods/users/set-offline.js'\nimport { unblockUser } from './methods/users/unblock-user.js'\nimport { updateProfile } from './methods/users/update-profile.js'\nimport { ITelegramStorageProvider } from './storage/provider.js'\nimport { Conversation } from './types/conversation.js'\nimport {\n AllStories,\n ArrayPaginated,\n ArrayWithTotal,\n Boost,\n BoostSlot,\n BoostStats,\n BotChatJoinRequestUpdate,\n BotCommands,\n BotReactionCountUpdate,\n BotReactionUpdate,\n BotStoppedUpdate,\n CallbackQuery,\n Chat,\n ChatEvent,\n ChatInviteLink,\n ChatInviteLinkMember,\n ChatJoinRequestUpdate,\n ChatMember,\n ChatMemberUpdate,\n ChatPreview,\n ChosenInlineResult,\n DeleteMessageUpdate,\n DeleteStoryUpdate,\n Dialog,\n FileDownloadLocation,\n FileDownloadParameters,\n ForumTopic,\n GameHighScore,\n HistoryReadUpdate,\n InlineCallbackQuery,\n InlineQuery,\n InputChatEventFilters,\n InputDialogFolder,\n InputFileLike,\n InputInlineResult,\n InputMediaLike,\n InputMessageId,\n InputPeerLike,\n InputPrivacyRule,\n InputReaction,\n InputStickerSet,\n InputStickerSetItem,\n InputText,\n MaybeDynamic,\n Message,\n MessageMedia,\n MessageReactions,\n ParametersSkip2,\n ParsedUpdate,\n PeerReaction,\n PeersIndex,\n PeerStories,\n Photo,\n Poll,\n PollUpdate,\n PollVoteUpdate,\n PreCheckoutQuery,\n RawDocument,\n ReplyMarkup,\n SentCode,\n Sticker,\n StickerSet,\n StickerSourceType,\n StickerType,\n StoriesStealthMode,\n Story,\n StoryInteractions,\n StoryUpdate,\n StoryViewer,\n StoryViewersList,\n TakeoutSession,\n TextWithEntities,\n TypingStatus,\n UploadedFile,\n UploadFileLike,\n User,\n UserStatusUpdate,\n UserTypingUpdate,\n} from './types/index.js'\nimport { makeParsedUpdateHandler, ParsedUpdateHandlerParams } from './updates/parsed.js'\nimport { _defaultStorageFactory } from './utils/platform/storage.js'\nimport { StringSessionData } from './utils/string-session.js'\n\n// from methods/_init.ts\n// @copy\ntype TelegramClientOptions = (\n | (Omit<BaseTelegramClientOptions, 'storage'> & {\n /**\n * Storage to use for this client.\n *\n * If a string is passed, it will be used as:\n * - a path to a JSON file for Node.js\n * - IndexedDB database name for browsers\n *\n * If omitted, {@link MemoryStorage} is used\n */\n storage?: string | ITelegramStorageProvider\n })\n | { client: ITelegramClient }\n) & {\n updates?: Omit<ParsedUpdateHandlerParams, 'onUpdate'>\n /**\n * If `true`, the updates that were handled by some {@link Conversation}\n * will not be dispatched any further.\n *\n * @default true\n */\n skipConversationUpdates?: boolean\n}\n\nexport interface TelegramClient extends ITelegramClient {\n /**\n * Register a raw update handler\n *\n * @param name Event name\n * @param handler Raw update handler\n */\n on(name: 'raw_update', handler: (upd: tl.TypeUpdate | tl.TypeMessage, peers: PeersIndex) => void): this\n /**\n * Register a parsed update handler\n *\n * @param name Event name\n * @param handler Raw update handler\n */\n on(name: 'update', handler: (upd: ParsedUpdate) => void): this\n /**\n * Register a new message handler\n *\n * @param name Event name\n * @param handler New message handler\n */\n on(name: 'new_message', handler: (upd: Message) => void): this\n /**\n * Register an edit message handler\n *\n * @param name Event name\n * @param handler Edit message handler\n */\n on(name: 'edit_message', handler: (upd: Message) => void): this\n /**\n * Register a message group handler\n *\n * @param name Event name\n * @param handler Message group handler\n */\n on(name: 'message_group', handler: (upd: Message[]) => void): this\n /**\n * Register a delete message handler\n *\n * @param name Event name\n * @param handler Delete message handler\n */\n on(name: 'delete_message', handler: (upd: DeleteMessageUpdate) => void): this\n /**\n * Register a chat member update handler\n *\n * @param name Event name\n * @param handler Chat member update handler\n */\n on(name: 'chat_member', handler: (upd: ChatMemberUpdate) => void): this\n /**\n * Register an inline query handler\n *\n * @param name Event name\n * @param handler Inline query handler\n */\n on(name: 'inline_query', handler: (upd: InlineQuery) => void): this\n /**\n * Register a chosen inline result handler\n *\n * @param name Event name\n * @param handler Chosen inline result handler\n */\n on(name: 'chosen_inline_result', handler: (upd: ChosenInlineResult) => void): this\n /**\n * Register a callback query handler\n *\n * @param name Event name\n * @param handler Callback query handler\n */\n on(name: 'callback_query', handler: (upd: CallbackQuery) => void): this\n /**\n * Register an inline callback query handler\n *\n * @param name Event name\n * @param handler Inline callback query handler\n */\n on(name: 'inline_callback_query', handler: (upd: InlineCallbackQuery) => void): this\n /**\n * Register a poll update handler\n *\n * @param name Event name\n * @param handler Poll update handler\n */\n on(name: 'poll', handler: (upd: PollUpdate) => void): this\n /**\n * Register a poll vote handler\n *\n * @param name Event name\n * @param handler Poll vote handler\n */\n on(name: 'poll_vote', handler: (upd: PollVoteUpdate) => void): this\n /**\n * Register an user status update handler\n *\n * @param name Event name\n * @param handler User status update handler\n */\n on(name: 'user_status', handler: (upd: UserStatusUpdate) => void): this\n /**\n * Register an user typing handler\n *\n * @param name Event name\n * @param handler User typing handler\n */\n on(name: 'user_typing', handler: (upd: UserTypingUpdate) => void): this\n /**\n * Register a history read handler\n *\n * @param name Event name\n * @param handler History read handler\n */\n on(name: 'history_read', handler: (upd: HistoryReadUpdate) => void): this\n /**\n * Register a bot stopped handler\n *\n * @param name Event name\n * @param handler Bot stopped handler\n */\n on(name: 'bot_stopped', handler: (upd: BotStoppedUpdate) => void): this\n /**\n * Register a bot chat join request handler\n *\n * @param name Event name\n * @param handler Bot chat join request handler\n */\n on(name: 'bot_chat_join_request', handler: (upd: BotChatJoinRequestUpdate) => void): this\n /**\n * Register a chat join request handler\n *\n * @param name Event name\n * @param handler Chat join request handler\n */\n on(name: 'chat_join_request', handler: (upd: ChatJoinRequestUpdate) => void): this\n /**\n * Register a pre checkout query handler\n *\n * @param name Event name\n * @param handler Pre checkout query handler\n */\n on(name: 'pre_checkout_query', handler: (upd: PreCheckoutQuery) => void): this\n /**\n * Register a story update handler\n *\n * @param name Event name\n * @param handler Story update handler\n */\n on(name: 'story', handler: (upd: StoryUpdate) => void): this\n /**\n * Register a delete story handler\n *\n * @param name Event name\n * @param handler Delete story handler\n */\n on(name: 'delete_story', handler: (upd: DeleteStoryUpdate) => void): this\n /**\n * Register a bot reaction update handler\n *\n * @param name Event name\n * @param handler Bot reaction update handler\n */\n on(name: 'bot_reaction', handler: (upd: BotReactionUpdate) => void): this\n /**\n * Register a bot reaction count update handler\n *\n * @param name Event name\n * @param handler Bot reaction count update handler\n */\n on(name: 'bot_reaction_count', handler: (upd: BotReactionCountUpdate) => void): this\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n on(name: string, handler: (...args: any[]) => void): this\n /**\n * Check your Two-Step verification password and log in\n *\n * **Available**: 👤 users only\n *\n * @param password Your Two-Step verification password\n * @returns The authorized user\n * @throws BadRequestError In case the password is invalid\n */\n checkPassword(password: string): Promise<User>\n /**\n * Get your Two-Step Verification password hint.\n *\n * **Available**: 👤 users only\n *\n * @returns The password hint as a string, if any\n */\n getPasswordHint(): Promise<string | null>\n /**\n * Log out from Telegram account and optionally reset the session storage.\n *\n * When you log out, you can immediately log back in using\n * the same {@link TelegramClient} instance.\n *\n * **Available**: ✅ both users and bots\n *\n * @returns On success, `true` is returned\n */\n logOut(): Promise<true>\n /**\n * Recover your password with a recovery code and log in.\n *\n * **Available**: 👤 users only\n *\n * @returns The authorized user\n * @throws BadRequestError In case the code is invalid\n */\n recoverPassword(params: {\n /** The recovery code sent via email */\n recoveryCode: string\n }): Promise<User>\n /**\n * Re-send the confirmation code using a different type.\n *\n * The type of the code to be re-sent is specified in the `nextType` attribute of\n * {@link SentCode} object returned by {@link sendCode}\n * **Available**: 👤 users only\n *\n */\n resendCode(params: {\n /** Phone number in international format */\n phone: string\n\n /** Confirmation code identifier from {@link SentCode} */\n phoneCodeHash: string\n }): Promise<SentCode>\n /**\n * Simple wrapper that calls {@link start} and then\n * provided callback function (if any) without the\n * need to introduce a `main()` function manually.\n *\n * Errors that were encountered while calling {@link start}\n * and `then` will be emitted as usual, and can be caught with {@link onError}\n *\n * **Available**: ✅ both users and bots\n *\n * @param params Parameters to be passed to {@link start}\n * @param then Function to be called after {@link start} returns\n */\n run(params: Parameters<typeof start>[1], then?: (user: User) => void | Promise<void>): void\n /**\n * Send the confirmation code to the given phone number\n *\n * **Available**: 👤 users only\n *\n * @returns An object containing information about the sent confirmation code\n */\n sendCode(params: {\n /** Phone number in international format */\n phone: string\n }): Promise<SentCode>\n /**\n * Send a code to email needed to recover your password\n *\n * **Available**: 👤 users only\n *\n * @returns String containing email pattern to which the recovery code was sent\n */\n sendRecoveryCode(): Promise<string>\n /**\n * Authorize a bot using its token issued by [@BotFather](//t.me/BotFather)\n *\n * **Available**: ✅ both users and bots\n *\n * @param token Bot token issued by BotFather\n * @returns Bot's {@link User} object\n * @throws BadRequestError In case the bot token is invalid\n */\n signInBot(token: string): Promise<User>\n /**\n * Authorize a user in Telegram with a valid confirmation code.\n *\n * **Available**: 👤 users only\n *\n * @returns If the code was valid and authorization succeeded, the {@link User} is returned.\n * @throws BadRequestError In case the arguments are invalid\n * @throws SessionPasswordNeededError In case a password is needed to sign in\n */\n signIn(params: {\n /** Phone number in international format */\n phone: string\n /** Code identifier from {@link sendCode} */\n phoneCodeHash: string\n /** The confirmation code that was received */\n phoneCode: string\n }): Promise<User>\n /**\n * Utility function to quickly authorize on test DC\n * using a [Test phone number](https://core.telegram.org/api/auth#test-phone-numbers),\n * which is randomly generated by default.\n *\n * > **Note**: Using this method assumes that you\n * > are using a test DC in `primaryDc` parameter.\n *\n * **Available**: ✅ both users and bots\n *\n * @param params Additional parameters\n */\n startTest(params?: {\n /**\n * Whether to log out if current session is logged in.\n *\n * @default false.\n */\n logout?: boolean\n\n /**\n * Override phone number. Must be a valid Test phone number.\n *\n * By default is randomly generated.\n */\n phone?: string\n\n /**\n * Override user's DC. Must be a valid test DC.\n */\n dcId?: number\n }): Promise<User>\n\n /**\n * Start the client in an interactive and declarative manner,\n * by providing callbacks for authorization details.\n *\n * This method handles both login and sign up, and also handles 2FV\n *\n * All parameters are `MaybeDynamic<T>`, meaning you\n * can either supply `T`, or a function that returns `MaybePromise<T>`\n *\n * This method is intended for simple and fast use in automated\n * scripts and bots. If you are developing a custom client,\n * you'll probably need to use other auth methods.\n * **Available**: ✅ both users and bots\n *\n */\n start(params: {\n /**\n * String session exported using {@link TelegramClient.exportSession}.\n *\n * This simply calls {@link TelegramClient.importSession} before anything else.\n *\n * Note that passed session will be ignored in case storage already\n * contains authorization.\n */\n session?: string | StringSessionData\n\n /**\n * Whether to overwrite existing session.\n */\n sessionForce?: boolean\n\n /**\n * Phone number of the account.\n * If account does not exist, it will be created\n */\n phone?: MaybeDynamic<string>\n\n /**\n * Bot token to use. Ignored if `phone` is supplied.\n */\n botToken?: MaybeDynamic<string>\n\n /**\n * 2FA password. Ignored if `botToken` is supplied\n */\n password?: MaybeDynamic<string>\n\n /**\n * Code sent to the phone (either sms, call, flash call or other).\n * Ignored if `botToken` is supplied, must be present if `phone` is supplied.\n */\n code?: MaybeDynamic<string>\n\n /**\n * If passed, this function will be called if provided code or 2FA password\n * was invalid. New code/password will be requested later.\n *\n * If provided `code`/`password` is a constant string, providing an\n * invalid one will interrupt authorization flow.\n */\n invalidCodeCallback?: (type: 'code' | 'password') => MaybePromise<void>\n\n /**\n * Whether to force code delivery through SMS\n */\n forceSms?: boolean\n\n /**\n * Custom method that is called when a code is sent. Can be used\n * to show a GUI alert of some kind.\n *\n * This method is called *before* {@link start.params.code}.\n *\n * @param code\n * @default `console.log`.\n */\n codeSentCallback?: (code: SentCode) => MaybePromise<void>\n }): Promise<User>\n /**\n * Check if the given peer/input peer is referring to the current user\n * **Available**: ✅ both users and bots\n *\n */\n isSelfPeer(peer: tl.TypeInputPeer | tl.TypePeer | tl.TypeInputUser): boolean\n /**\n * Send an answer to a callback query.\n *\n * **Available**: 🤖 bots only\n *\n * @param queryId ID of the callback query, or the query itself\n * @param params Parameters of the answer\n */\n answerCallbackQuery(\n queryId: Long | CallbackQuery,\n params?: {\n /**\n * Maximum amount of time in seconds for which\n * this result can be cached by the client (not server!).\n *\n * @default 0\n */\n cacheTime?: number\n\n /**\n * Text of the notification (0-200 chars).\n *\n * If not set, nothing will be displayed\n */\n text?: string\n\n /**\n * Whether to show an alert in the middle of the screen\n * instead of a notification at the top of the screen.\n *\n * @default false\n */\n alert?: boolean\n\n /**\n * URL that the client should open.\n *\n * If this was a button containing a game,\n * you can provide arbitrary link to your game.\n * Otherwise, you can only use links in the format\n * `t.me/your_bot?start=...` that open your bot\n * with a deep-link parameter.\n */\n url?: string\n },\n ): Promise<void>\n /**\n * Answer an inline query.\n *\n * **Available**: 🤖 bots only\n *\n * @param queryId Inline query ID\n * @param results Results of the query\n * @param params Additional parameters\n */\n answerInlineQuery(\n queryId: tl.Long | InlineQuery,\n results: InputInlineResult[],\n params?: {\n /**\n * Maximum number of time in seconds that the results of the\n * query may be cached on the server for.\n *\n * @default 300\n */\n cacheTime?: number\n\n /**\n * Whether the results should be displayed as a gallery instead\n * of a vertical list. Only applicable to some media types.\n *\n * In some cases changing this may lead to the results not being\n * displayed by the client.\n *\n * Default is derived automatically based on result types\n */\n gallery?: boolean\n\n /**\n * Whether the results should only be cached on the server\n * for the user who sent the query.\n *\n * @default false\n */\n private?: boolean\n\n /**\n * Next pagination offset (up to 64 bytes).\n *\n * When user has reached the end of the current results,\n * the client will re-send the inline query with the same text, but\n * with `offset` set to this value.\n *\n * If omitted or empty string is provided, it is assumed that\n * there are no more results.\n */\n nextOffset?: string\n\n /**\n * If passed, clients will display a button before any other results,\n * that when clicked switches the user to a private chat with the bot\n * and sends the bot `/start ${parameter}`.\n *\n * An example from the Bot API docs:\n *\n * An inline bot that sends YouTube videos can ask the user to connect\n * the bot to their YouTube account to adapt search results accordingly.\n * To do this, it displays a \"Connect your YouTube account\" button above\n * the results, or even before showing any. The user presses the button,\n * switches to a private chat with the bot and, in doing so, passes a start\n * parameter that instructs the bot to return an oauth link. Once done, the\n * bot can offer a switch_inline button so that the user can easily return to\n * the chat where they wanted to use the bot's inline capabilities\n */\n switchPm?: {\n /**\n * Text of the button\n */\n text: string\n\n /**\n * Parameter for `/start` command\n */\n parameter: string\n }\n\n /**\n * If passed, clients will display a button on top of the remaining inline result\n * list with the specified text, that switches the user to the specified bot web app.\n */\n switchWebview?: {\n /**\n * Text of the button\n */\n text: string\n\n /**\n * URL to open\n */\n url: string\n }\n },\n ): Promise<void>\n /**\n * Answer a pre-checkout query.\n *\n * **Available**: ✅ both users and bots\n *\n * @param queryId Pre-checkout query ID\n */\n answerPreCheckoutQuery(\n queryId: tl.Long | PreCheckoutQuery,\n params?: {\n /** If pre-checkout is rejected, error message to show to the user */\n error?: string\n },\n ): Promise<void>\n /**\n * Delete commands for the current bot and the given scope.\n *\n * Does the same as passing `null` to {@link setMyCommands}\n *\n * Learn more about scopes in the [Bot API docs](https://core.telegram.org/bots/api#botcommandscope)\n * **Available**: ✅ both users and bots\n *\n */\n deleteMyCommands(params?: {\n /**\n * Scope of the commands.\n *\n * @default `BotScope.default_` (i.e. `botCommandScopeDefault`)\n */\n scope?: tl.TypeBotCommandScope | BotCommands.IntermediateScope\n\n /**\n * User language applied to the scope.\n */\n langCode?: string\n }): Promise<void>\n /**\n * Gets information about a bot the current uzer owns (or the current bot)\n * **Available**: ✅ both users and bots\n *\n */\n getBotInfo(params: {\n /**\n * When called by a user, a bot the user owns must be specified.\n * When called by a bot, must be empty\n */\n bot?: InputPeerLike\n\n /**\n * If passed, will retrieve the bot's description in the given language.\n * If left empty, will retrieve the fallback description.\n */\n langCode?: string\n }): Promise<tl.bots.RawBotInfo>\n /**\n * Fetches the menu button set for the given user.\n * **Available**: 🤖 bots only\n *\n */\n getBotMenuButton(user: InputPeerLike): Promise<tl.TypeBotMenuButton>\n /**\n * Request a callback answer from a bot,\n * i.e. click an inline button that contains data.\n *\n * **Available**: 👤 users only\n *\n * @param params\n */\n getCallbackAnswer(\n params: InputMessageId & {\n /** Data contained in the button */\n data: string | Uint8Array\n\n /**\n * Timeout for the query in ms.\n *\n * @default `10000` (10 sec)\n */\n timeout?: number\n\n /**\n * Whether this is a \"play game\" button\n */\n game?: boolean\n\n /**\n * If the button requires password entry, your 2FA password.\n *\n * Your password is never exposed to the bot,\n * it is checked by Telegram.\n */\n password?: string\n },\n ): Promise<tl.messages.TypeBotCallbackAnswer>\n /**\n * Get high scores of a game\n * **Available**: 🤖 bots only\n *\n */\n getGameHighScores(\n params: InputMessageId & {\n /** ID of the user to find high scores for */\n userId?: InputPeerLike\n },\n ): Promise<GameHighScore[]>\n /**\n * Get high scores of a game from an inline message\n *\n * **Available**: 🤖 bots only\n *\n * @param messageId ID of the inline message containing the game\n * @param userId ID of the user to find high scores for\n */\n getInlineGameHighScores(\n messageId: string | tl.TypeInputBotInlineMessageID,\n userId?: InputPeerLike,\n ): Promise<GameHighScore[]>\n /**\n * Get a list of current bot's commands for the given command scope\n * and user language. If they are not set, empty set is returned.\n *\n * Learn more about scopes in the [Bot API docs](https://core.telegram.org/bots/api#botcommandscope)\n * **Available**: ✅ both users and bots\n *\n */\n getMyCommands(params?: {\n /**\n * Scope of the commands.\n *\n * @default `BotScope.default_` (i.e. `botCommandScopeDefault`)\n */\n scope?: tl.TypeBotCommandScope | BotCommands.IntermediateScope\n\n /**\n * User language applied to the scope.\n */\n langCode?: string\n }): Promise<tl.RawBotCommand[]>\n /**\n * Sets information about a bot the current uzer owns (or the current bot)\n * **Available**: ✅ both users and bots\n *\n */\n setBotInfo(params: {\n /**\n * When called by a user, a bot the user owns must be specified.\n * When called by a bot, must be empty\n */\n bot?: InputPeerLike\n\n /**\n * If passed, will update the bot's description in the given language.\n * If left empty, will change the fallback description.\n */\n langCode?: string\n\n /** New bot name */\n name?: string\n\n /** New bio text (displayed in the profile) */\n bio?: string\n\n /** New description text (displayed when the chat is empty) */\n description?: string\n }): Promise<void>\n /**\n * Sets a menu button for the given user.\n * **Available**: ✅ both users and bots\n *\n */\n setBotMenuButton(user: InputPeerLike, button: tl.TypeBotMenuButton): Promise<void>\n /**\n * Set a score of a user in a game\n *\n * **Available**: 🤖 bots only\n *\n * @param params\n * @returns The modified message\n */\n setGameScore(\n params: InputMessageId & {\n /** ID of the user who has scored */\n userId: InputPeerLike\n\n /** The new score (must be >0) */\n score: number\n\n /**\n * When `true`, the game message will not be modified\n * to include the new score\n */\n noEdit?: boolean\n\n /**\n * Whether to allow user's score to decrease.\n * This can be useful when fixing mistakes or banning cheaters\n */\n force?: boolean\n\n /**\n * Whether to dispatch the edit message event\n * to the client's update handler.\n */\n shouldDispatch?: true\n },\n ): Promise<Message>\n /**\n * Set a score of a user in a game contained in\n * an inline message\n *\n * **Available**: 🤖 bots only\n *\n * @param params\n */\n setInlineGameScore(params: {\n /** ID of the inline message */\n messageId: string | tl.TypeInputBotInlineMessageID\n /** ID of the user who has scored */\n userId: InputPeerLike\n /** The new score (must be >0) */\n score: number\n /**\n * When `true`, the game message will not be modified\n * to include the new score\n */\n noEdit?: boolean\n\n /**\n * Whether to allow user's score to decrease.\n * This can be useful when fixing mistakes or banning cheaters\n */\n force?: boolean\n }): Promise<void>\n /**\n * Set or delete commands for the current bot and the given scope\n *\n * Learn more about scopes in the [Bot API docs](https://core.telegram.org/bots/api#botcommandscope)\n * **Available**: 🤖 bots only\n *\n */\n setMyCommands(params: {\n /**\n * New list of bot commands for the given scope.\n *\n * Pass empty array or `null` to delete them.\n */\n commands: tl.RawBotCommand[] | null\n\n /**\n * Scope of the commands.\n *\n * @default `BotScope.default_` (i.e. `botCommandScopeDefault`)\n */\n scope?: tl.TypeBotCommandScope | BotCommands.IntermediateScope\n\n /**\n * User language applied to the scope.\n */\n langCode?: string\n }): Promise<void>\n /**\n * Sets the default chat permissions for the bot in the supergroup or channel.\n * **Available**: 🤖 bots only\n *\n */\n setMyDefaultRights(params: {\n /** Whether to target groups or channels. */\n target: 'channel' | 'group'\n /** The default chat permissions. */\n rights: Omit<tl.RawChatAdminRights, '_'>\n }): Promise<void>\n /**\n * Add one or more new members to a group, supergroup or channel.\n *\n * **Available**: 👤 users only\n *\n * @param chatId ID of the chat or its username\n * @param users ID(s) of the user(s) to add\n */\n addChatMembers(\n chatId: InputPeerLike,\n users: MaybeArray<InputPeerLike>,\n params: {\n /**\n * Number of old messages to be forwarded (0-100).\n * Only applicable to legacy groups, ignored for supergroups and channels\n *\n * @default 100\n */\n forwardCount?: number\n },\n ): Promise<void>\n /**\n * Archive one or more chats\n *\n * **Available**: 👤 users only\n *\n * @param chats Chat ID(s), username(s), phone number(s), `\"me\"` or `\"self\"`\n */\n archiveChats(chats: MaybeArray<InputPeerLike>): Promise<void>\n /**\n * Ban a user/channel from a legacy group, a supergroup or a channel.\n * They will not be able to re-join the group on their own,\n * manual administrator's action will be required.\n *\n * When banning a channel, the user won't be able to use\n * any of their channels to post until the ban is lifted.\n *\n * **Available**: ✅ both users and bots\n *\n * @returns Service message about removed user, if one was generated.\n */\n banChatMember(params: {\n /** Chat ID */\n chatId: InputPeerLike\n\n /** ID of the user/channel to ban */\n participantId: InputPeerLike\n\n /**\n * Whether to dispatch the returned service message (if any)\n * to the client's update handler.\n */\n shouldDispatch?: true\n }): Promise<Message | null>\n /**\n * Create a new broadcast channel\n *\n * **Available**: 👤 users only\n *\n * @returns Newly created channel\n */\n createChannel(params: {\n /**\n * Channel title\n */\n title: string\n\n /**\n * Channel description\n */\n description?: string\n }): Promise<Chat>\n /**\n * Create a legacy group chat\n *\n * If you want to create a supergroup, use {@link createSupergroup}\n * instead.\n * **Available**: 👤 users only\n *\n */\n createGroup(params: {\n /**\n * Group title\n */\n title: string\n\n /**\n * User(s) to be invited in the group (ID(s), username(s) or phone number(s)).\n * Due to Telegram limitations, you can't create a legacy group with just yourself.\n */\n users: MaybeArray<InputPeerLike>\n\n /**\n * TTL period (in seconds) for the newly created chat\n *\n * @default 0 (i.e. messages don't expire)\n */\n ttlPeriod?: number\n }): Promise<Chat>\n /**\n * Create a new supergroup\n *\n * **Available**: 👤 users only\n *\n * @returns Newly created supergroup\n */\n createSupergroup(params: {\n /**\n * Supergroup title\n */\n title: string\n\n /**\n * Supergroup description\n */\n description?: string\n\n /**\n * Whether to create a forum\n */\n forum?: boolean\n\n /**\n * TTL period (in seconds) for the newly created supergroup\n *\n * @default 0 (i.e. messages don't expire)\n */\n ttlPeriod?: number\n }): Promise<Chat>\n\n /**\n * Delete a channel or a supergroup\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID or username\n */\n deleteChannel(chatId: InputPeerLike): Promise<void>\n\n /**\n * Delete a channel or a supergroup\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID or username\n */\n deleteSupergroup(chatId: InputPeerLike): Promise<void>\n /**\n * Delete a chat photo\n *\n * You must be an administrator and have the appropriate permissions.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID or username\n */\n deleteChatPhoto(chatId: InputPeerLike): Promise<void>\n /**\n * Delete a legacy group chat for all members\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID\n */\n deleteGroup(chatId: InputPeerLike): Promise<void>\n /**\n * Delete communication history (for private chats and legacy groups)\n * **Available**: 👤 users only\n *\n */\n deleteHistory(\n chat: InputPeerLike,\n params?: {\n /**\n * Deletion mode. Can be:\n * - `delete`: delete messages (only for yourself)\n * - `clear`: delete messages (only for yourself)\n * - `revoke`: delete messages for all users\n * - I'm not sure what's the difference between `delete` and `clear`,\n * but they are in fact different flags in TL object.\n *\n * @default 'delete'\n */\n mode: 'delete' | 'clear' | 'revoke'\n\n /**\n * Maximum ID of message to delete.\n *\n * @default 0, i.e. remove all messages\n */\n maxId?: number\n },\n ): Promise<void>\n /**\n * Delete all messages of a user (or channel) in a supergroup\n * **Available**: 👤 users only\n *\n */\n deleteUserHistory(params: {\n /** Chat ID */\n chatId: InputPeerLike\n /** User/channel ID whose messages to delete */\n participantId: InputPeerLike\n }): Promise<void>\n /**\n * Edit supergroup/channel admin rights of a user.\n * **Available**: ✅ both users and bots\n *\n */\n editAdminRights(params: {\n /** Chat ID */\n chatId: InputPeerLike\n /** User ID */\n userId: InputPeerLike\n /** New admin rights */\n rights: Omit<tl.RawChatAdminRights, '_'>\n /** Custom admin rank */\n rank?: string\n }): Promise<void>\n /**\n * Get chat event log (\"Recent actions\" in official clients).\n *\n * Only available for supergroups and channels, and\n * requires (any) administrator rights.\n *\n * Results are returned in reverse chronological\n * order (i.e. newest first) and event IDs are\n * in direct chronological order (i.e. newer\n * events have bigger event ID)\n *\n * **Available**: 👤 users only\n *\n * @param params\n */\n getChatEventLog(\n chatId: InputPeerLike,\n params?: {\n /**\n * Search query\n */\n query?: string\n\n /**\n * Minimum event ID to return\n */\n minId?: tl.Long\n\n /**\n * Maximum event ID to return,\n * can be used as a base offset\n */\n maxId?: tl.Long\n\n /**\n * List of users whose actions to return\n */\n users?: InputPeerLike[]\n\n /**\n * Event filters. Can be a TL object, or one or more\n * action types.\n *\n * Note that some filters are grouped in TL\n * (i.e. `info=true` will return `title_changed`,\n * `username_changed` and many more),\n * and when passing one or more action types,\n * they will be filtered locally.\n */\n filters?: InputChatEventFilters\n\n /**\n * Limit the number of events returned.\n *\n * > Note: when using filters, there will likely be\n * > less events returned than specified here.\n * > This limit is only used to limit the number of\n * > events to fetch from the server.\n * >\n * > If you need to limit the number of events\n * > returned, use {@link iterChatEventLog} instead.\n *\n * @default 100\n */\n limit?: number\n },\n ): Promise<ChatEvent[]>\n /**\n * Get information about a single chat member\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID or username\n * @param userId User ID, username, phone number, `\"me\"` or `\"self\"`\n * @returns Chat member, or `null` if user is not a member of the chat\n */\n getChatMember(params: {\n /** Chat ID or username */\n chatId: InputPeerLike\n /** User ID, username, phone number, `\"me\"` or `\"self\"` */\n userId: InputPeerLike\n }): Promise<ChatMember | null>\n /**\n * Get a chunk of members of some chat.\n *\n * You can retrieve up to 200 members at once\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID or username\n * @param params Additional parameters\n */\n getChatMembers(\n chatId: InputPeerLike,\n params?: {\n /**\n * Search query to filter members by their display names and usernames\n *\n * > **Note**: Only used for these values of `filter`:\n * > `all, banned, restricted, mention, contacts`\n *\n * @default `''` (empty string)\n */\n query?: string\n\n /**\n * Sequential number of the first member to be returned.\n */\n offset?: number\n\n /**\n * Maximum number of members to be retrieved.\n *\n * > **Note**: Telegram currently only allows you to ever retrieve at most\n * > 200 members, regardless of offset/limit. I.e. when passing\n * > `offset=201` nothing will ever be returned.\n *\n * @default 200\n */\n limit?: number\n\n /**\n * Type of the query. Can be:\n * - `all`: get all members\n * - `banned`: get only banned members\n * - `restricted`: get only restricted members\n * - `bots`: get only bots\n * - `recent`: get recent members\n * - `admins`: get only administrators (and creator)\n * - `contacts`: get only contacts\n * - `mention`: get users that can be mentioned (see {@link tl.RawChannelParticipantsMentions})\n *\n * Only used for channels and supergroups.\n *\n * @default `recent`\n */\n type?: 'all' | 'banned' | 'restricted' | 'bots' | 'recent' | 'admins' | 'contacts' | 'mention'\n },\n ): Promise<ArrayWithTotal<ChatMember>>\n /**\n * Get preview information about a private chat.\n *\n * **Available**: 👤 users only\n *\n * @param inviteLink Invite link\n * @throws MtArgumentError In case invite link has invalid format\n * @throws MtPeerNotFoundError\n * In case you are trying to get info about private chat that you have already joined.\n * Use {@link getChat} or {@link getFullChat} instead.\n */\n getChatPreview(inviteLink: string): Promise<ChatPreview>\n\n /**\n * Get basic information about a chat.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId ID of the chat, its username or invite link\n * @throws MtArgumentError\n * In case you are trying to get info about private chat that you haven't joined.\n * Use {@link getChatPreview} instead.\n */\n getChat(chatId: InputPeerLike): Promise<Chat>\n\n /**\n * Get full information about a chat.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId ID of the chat, its username or invite link\n * @throws MtArgumentError\n * In case you are trying to get info about private chat that you haven't joined.\n * Use {@link getChatPreview} instead.\n */\n getFullChat(chatId: InputPeerLike): Promise<Chat>\n /**\n * Get nearby chats\n *\n * **Available**: 👤 users only\n *\n * @param latitude Latitude of the location\n * @param longitude Longitude of the location\n */\n getNearbyChats(latitude: number, longitude: number): Promise<Chat[]>\n\n /**\n * Get channels that are similar to a given channel\n *\n * > **Note**: This method only returns the channels that the current user\n * > is not subscribed to. For non-premium users, this method will only return\n * > a few channels (with the total number of similar channels being specified in `.total`)\n * >\n * > Returns empty array in case there are no similar channels available.\n * **Available**: 👤 users only\n *\n */\n getSimilarChannels(channel: InputPeerLike): Promise<ArrayWithTotal<Chat>>\n /**\n * Iterate over chat event log.\n *\n * Small wrapper over {@link getChatEventLog}\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID\n * @param params\n */\n iterChatEventLog(\n chatId: InputPeerLike,\n params?: Parameters<typeof getChatEventLog>[2] & {\n /**\n * Total number of events to return.\n *\n * @default Infinity\n */\n limit?: number\n\n /**\n * Chunk size, passed as `limit` to {@link getChatEventLog}.\n * Usually you don't need to touch this.\n *\n * @default 100\n */\n chunkSize?: number\n },\n ): AsyncIterableIterator<ChatEvent>\n /**\n * Iterate through chat members\n *\n * This method is a small wrapper over {@link getChatMembers},\n * which also handles duplicate entries (i.e. does not yield\n * the same member twice)\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID or username\n * @param params Additional parameters\n */\n iterChatMembers(\n chatId: InputPeerLike,\n params?: Parameters<typeof getChatMembers>[2] & {\n /**\n * Chunk size, which will be passed as `limit` parameter\n * to {@link getChatMembers}. Usually you shouldn't care about this.\n *\n * @default `200`\n */\n chunkSize?: number\n },\n ): AsyncIterableIterator<ChatMember>\n /**\n * Join a channel or supergroup\n *\n * When using with invite links, this method may throw RPC error\n * `INVITE_REQUEST_SENT`, which means that you need to wait for admin approval.\n * You will get into the chat once they do so.\n *\n * **Available**: 👤 users only\n *\n * @param chatId\n * Chat identifier. Either an invite link (`t.me/joinchat/*`), a username (`@username`)\n * or ID of the linked supergroup or channel.\n */\n joinChat(chatId: InputPeerLike): Promise<Chat>\n /**\n * Kick a user from a chat.\n *\n * This effectively bans a user and immediately unbans them.\n *\n * **Available**: ✅ both users and bots\n *\n * @returns Service message about removed user, if one was generated.\n */\n kickChatMember(params: {\n /** Chat ID */\n chatId: InputPeerLike\n /** User ID */\n userId: InputPeerLike\n }): Promise<Message | null>\n /**\n * Leave a group chat, supergroup or channel\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID or username\n */\n leaveChat(\n chatId: InputPeerLike,\n params?: {\n /**\n * Whether to clear history after leaving (only for legacy group chats)\n */\n clear?: boolean\n },\n ): Promise<void>\n /**\n * Mark a chat as unread\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID\n */\n markChatUnread(chatId: InputPeerLike): Promise<void>\n /**\n * Inform the library that the user has opened a chat.\n *\n * Some library logic depends on this, for example, the library will\n * periodically ping the server to keep the updates flowing.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chat Chat to open\n */\n openChat(chat: InputPeerLike): Promise<void>\n /**\n * Inform the library that the user has closed a chat.\n * Un-does the effect of {@link openChat}.\n *\n * Some library logic depends on this, for example, the library will\n * periodically ping the server to keep the updates flowing.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chat Chat to open\n */\n closeChat(chat: InputPeerLike): Promise<void>\n /**\n * Reorder usernames\n *\n * **Available**: 👤 users only\n *\n * @param peerId Bot, channel or \"me\"/\"self\"\n */\n reorderUsernames(peerId: InputPeerLike, order: string[]): Promise<void>\n /**\n * Restrict a user in a supergroup.\n * **Available**: ✅ both users and bots\n *\n */\n restrictChatMember(params: {\n /** Chat ID */\n chatId: InputPeerLike\n\n /** User ID */\n userId: InputPeerLike\n\n /**\n * Restrictions for the user. Note that unlike Bot API, this object contains\n * the restrictions, and not the permissions, i.e.\n * passing `sendMessages=true` will disallow the user to send messages,\n * and passing `{}` (empty object) will lift any restrictions\n */\n restrictions: Omit<tl.RawChatBannedRights, '_' | 'untilDate'>\n\n /**\n * Date when the user will be unrestricted.\n * When `number` is passed, UNIX time in ms is expected.\n * If this value is less than 30 seconds or more than 366 days in\n * the future, user will be restricted forever.\n *\n * @default `0`, i.e. forever\n */\n until?: number | Date\n }): Promise<void>\n /**\n * Save or delete a draft message associated with some chat\n *\n * **Available**: 👤 users only\n *\n * @param chatId ID of the chat, its username, phone or `\"me\"` or `\"self\"`\n * @param draft Draft message, or `null` to delete.\n */\n saveDraft(chatId: InputPeerLike, draft: null | Omit<tl.RawDraftMessage, '_' | 'date'>): Promise<void>\n\n /**\n * Set peer color and optionally background pattern\n * **Available**: 👤 users only\n *\n */\n setChatColor(params: {\n /**\n * Peer where to update the color.\n *\n * By default will change the color for the current user\n */\n peer?: InputPeerLike\n\n /**\n * Color identificator\n *\n * Note that this value is **not** an RGB color representation. Instead, it is\n * a number which should be used to pick a color from a predefined\n * list of colors:\n * - `0-6` are the default colors used by Telegram clients:\n * `red, orange, purple, green, sea, blue, pink`\n * - `>= 7` are returned by `help.getAppConfig`.\n */\n color: number\n\n /**\n * Background pattern emoji ID.\n *\n * Must be an adaptive emoji, otherwise the request will fail.\n */\n backgroundEmojiId?: tl.Long\n\n /**\n * Whether to set this color for the profile\n * header instead of chat name/replies.\n *\n * Currently only available for the current user.\n */\n forProfile?: boolean\n }): Promise<void>\n /**\n * Change default chat permissions for all members.\n *\n * You must be an administrator in the chat and have appropriate permissions.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID or username\n * @param restrictions\n * Restrictions for the chat. Note that unlike Bot API, this object contains\n * the restrictions, and not the permissions, i.e.\n * passing `sendMessages=true` will disallow the users to send messages,\n * and passing `{}` (empty object) will lift any restrictions\n */\n setChatDefaultPermissions(\n chatId: InputPeerLike,\n restrictions: Omit<tl.RawChatBannedRights, '_' | 'untilDate'>,\n ): Promise<Chat>\n /**\n * Change chat description\n *\n * You must be an administrator and have the appropriate permissions.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID or username\n * @param description New chat description, 0-255 characters\n */\n setChatDescription(chatId: InputPeerLike, description: string): Promise<void>\n /**\n * Set a new chat photo or video.\n *\n * You must be an administrator and have the appropriate permissions.\n * **Available**: ✅ both users and bots\n *\n */\n setChatPhoto(params: {\n /** Chat ID or username */\n chatId: InputPeerLike\n\n /** Media type (photo or video) */\n\n type: 'photo' | 'video'\n\n /** Input media file */\n media: InputFileLike\n /**\n * When `type = video`, timestamp in seconds which will be shown\n * as a static preview.\n */\n previewSec?: number\n }): Promise<void>\n /**\n * Change chat title\n *\n * You must be an administrator and have the appropriate permissions.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID or username\n * @param title New chat title, 1-255 characters\n */\n setChatTitle(chatId: InputPeerLike, title: string): Promise<void>\n /**\n * Set maximum Time-To-Live of all newly sent messages in the specified chat\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID\n * @param period New TTL period, in seconds (or 0 to disable)\n */\n setChatTtl(chatId: InputPeerLike, period: number): Promise<void>\n /**\n * Change supergroup/channel username\n *\n * You must be an administrator and have the appropriate permissions.\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID or current username\n * @param username New username, or `null` to remove\n */\n setChatUsername(chatId: InputPeerLike, username: string | null): Promise<void>\n /**\n * Set supergroup's slow mode interval.\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID or username\n * @param [seconds=0]\n * Slow mode interval in seconds.\n * Users will be able to send a message only once per this interval.\n * Valid values are: `0 (off), 10, 30, 60 (1m), 300 (5m), 900 (15m) or 3600 (1h)`\n */\n setSlowMode(chatId: InputPeerLike, seconds?: number): Promise<void>\n /**\n * Set whether a chat has content protection (i.e. forwarding messages is disabled)\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID or username\n * @param [enabled=false] Whether content protection should be enabled\n */\n toggleContentProtection(chatId: InputPeerLike, enabled?: boolean): Promise<void>\n /**\n * Toggle a collectible (Fragment) username\n *\n * > **Note**: non-collectible usernames must still be changed\n * > using {@link setUsername}/{@link setChatUsername}\n * **Available**: 👤 users only\n *\n */\n toggleFragmentUsername(params: {\n /** Peer ID whose username to toggle */\n peerId: InputPeerLike\n\n /**\n * Username to toggle\n */\n username: string\n\n /**\n * Whether to enable or disable the username\n */\n active: boolean\n }): Promise<void>\n /**\n * Set whether a channel/supergroup has join requests enabled.\n *\n * > **Note**: this method only affects primary invite links.\n * > Additional invite links may exist with the opposite setting.\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID or username\n * @param [enabled=false] Whether join requests should be enabled\n */\n toggleJoinRequests(chatId: InputPeerLike, enabled?: boolean): Promise<void>\n /**\n * Set whether a channel/supergroup has join-to-send setting enabled.\n *\n * This only affects discussion groups where users can send messages\n * without joining the group.\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID or username\n * @param [enabled=false] Whether join-to-send setting should be enabled\n */\n toggleJoinToSend(chatId: InputPeerLike, enabled?: boolean): Promise<void>\n /**\n * Unarchive one or more chats\n *\n * **Available**: 👤 users only\n *\n * @param chats Chat ID(s), username(s), phone number(s), `\"me\"` or `\"self\"`\n */\n unarchiveChats(chats: MaybeArray<InputPeerLike>): Promise<void>\n\n /**\n * Unban a user/channel from a supergroup or a channel,\n * or remove any restrictions that they have.\n * Unbanning does not add the user back to the chat, this\n * just allows the user to join the chat again, if they want.\n *\n * This method acts as a no-op in case a legacy group is passed.\n * **Available**: ✅ both users and bots\n *\n */\n unbanChatMember(params: {\n /** Chat ID */\n chatId: InputPeerLike\n\n /** User/channel ID who should be unbanned */\n participantId: InputPeerLike\n }): Promise<void>\n\n /**\n * Unban a user/channel from a supergroup or a channel,\n * or remove any restrictions that they have.\n * Unbanning does not add the user back to the chat, this\n * just allows the user to join the chat again, if they want.\n *\n * This method acts as a no-op in case a legacy group is passed.\n * **Available**: ✅ both users and bots\n *\n */\n unrestrictChatMember(params: {\n /** Chat ID */\n chatId: InputPeerLike\n\n /** User/channel ID who should be unbanned */\n participantId: InputPeerLike\n }): Promise<void>\n /**\n * Add an existing Telegram user as a contact\n * **Available**: 👤 users only\n *\n */\n addContact(params: {\n /** User ID, username or phone number */\n userId: InputPeerLike\n\n /**\n * First name of the contact\n */\n firstName: string\n\n /**\n * Last name of the contact\n */\n lastName?: string\n\n /**\n * Phone number of the contact, if available\n */\n phone?: string\n\n /**\n * Whether to share your own phone number\n * with the newly created contact\n *\n * @default false\n */\n sharePhone?: boolean\n }): Promise<User>\n /**\n * Delete one or more contacts from your Telegram contacts list\n *\n * Returns deleted contact's profiles. Does not return\n * profiles of users that were not in your contacts list\n *\n * **Available**: 👤 users only\n *\n * @param userIds User IDs, usernames or phone numbers\n */\n deleteContacts(userIds: MaybeArray<InputPeerLike>): Promise<User[]>\n /**\n * Get list of contacts from your Telegram contacts list.\n * **Available**: 👤 users only\n *\n */\n getContacts(): Promise<User[]>\n /**\n * Import contacts to your Telegram contacts list.\n *\n * **Available**: 👤 users only\n *\n * @param contacts List of contacts\n */\n importContacts(\n contacts: PartialOnly<Omit<tl.RawInputPhoneContact, '_'>, 'clientId'>[],\n ): Promise<tl.contacts.RawImportedContacts>\n /**\n * Create a folder from given parameters\n *\n * ID for the folder is optional, if not\n * provided it will be derived automatically.\n *\n * **Available**: 👤 users only\n *\n * @param folder Parameters for the folder\n * @returns Newly created folder\n */\n createFolder(folder: PartialExcept<tl.RawDialogFilter, 'title'>): Promise<tl.RawDialogFilter>\n /**\n * Delete a folder by its ID\n *\n * **Available**: 👤 users only\n *\n * @param id Folder ID or folder itself\n */\n deleteFolder(id: number | tl.RawDialogFilter): Promise<void>\n /**\n * Edit a folder with given modification\n *\n * **Available**: 👤 users only\n *\n * @returns Modified folder\n */\n editFolder(params: {\n /**\n * Folder, folder ID or name.\n * Note that passing an ID or name will require re-fetching all folders,\n * and passing name might affect not the right folder if you have multiple\n * with the same name.\n */\n folder: tl.RawDialogFilter | number | string\n\n /** Modification to be applied to this folder */\n modification: Partial<Omit<tl.RawDialogFilter, 'id' | '_'>>\n }): Promise<tl.RawDialogFilter>\n /**\n * Find a folder by its parameter.\n *\n * > **Note**: Searching by title and/or emoji might not be\n * > accurate since you can set the same title and/or emoji\n * > to multiple folders.\n *\n * **Available**: ✅ both users and bots\n *\n * @param params Search parameters. At least one must be set.\n */\n findFolder(params: {\n /** Folder title */\n title?: string\n /** Folder emoji */\n emoji?: string\n /** Folder ID */\n id?: number\n }): Promise<tl.RawDialogFilter | null>\n /**\n * Get list of folders.\n * **Available**: 👤 users only\n *\n */\n getFolders(): Promise<tl.TypeDialogFilter[]>\n /**\n * Get dialogs with certain peers.\n *\n * **Available**: 👤 users only\n *\n * @param peers Peers for which to fetch dialogs.\n */\n getPeerDialogs(peers: MaybeArray<InputPeerLike>): Promise<Dialog[]>\n /**\n * Iterate over dialogs.\n *\n * Note that due to Telegram API limitations,\n * ordering here can only be anti-chronological\n * (i.e. newest - first), and draft update date\n * is not considered when sorting.\n *\n * **Available**: 👤 users only\n *\n * @param params Fetch parameters\n */\n iterDialogs(params?: {\n /**\n * Offset message date used as an anchor for pagination.\n */\n offsetDate?: Date | number\n\n /**\n * Offset message ID used as an anchor for pagination\n */\n offsetId?: number\n\n /**\n * Offset peer used as an anchor for pagination\n */\n offsetPeer?: tl.TypeInputPeer\n\n /**\n * Limits the number of dialogs to be received.\n *\n * @default `Infinity`, i.e. all dialogs are fetched\n */\n limit?: number\n\n /**\n * Chunk size which will be passed to `messages.getDialogs`.\n * You shouldn't usually care about this.\n *\n * @default 100.\n */\n chunkSize?: number\n\n /**\n * How to handle pinned dialogs?\n *\n * Whether to `include` them at the start of the list,\n * `exclude` them at all, or `only` return pinned dialogs.\n *\n * Additionally, for folders you can specify\n * `keep`, which will return pinned dialogs\n * ordered by date among other non-pinned dialogs.\n *\n * > **Note**: When using `include` mode with folders,\n * > pinned dialogs will only be fetched if all offset\n * > parameters are unset.\n *\n * @default `include`.\n */\n pinned?: 'include' | 'exclude' | 'only' | 'keep'\n\n /**\n * How to handle archived chats?\n *\n * Whether to `keep` them among other dialogs,\n * `exclude` them from the list, or `only`\n * return archived dialogs\n *\n * Ignored for folders, since folders\n * themselves contain information about archived chats.\n *\n * > **Note**: when `pinned=only`, `archived=keep` will act as `only`\n * > because of Telegram API limitations.\n *\n * @default `exclude`\n */\n archived?: 'keep' | 'exclude' | 'only'\n\n /**\n * Folder from which the dialogs will be fetched.\n *\n * You can pass folder object, id or title\n *\n * Note that passing anything except object will\n * cause the list of the folders to be fetched,\n * and passing a title may fetch from\n * a wrong folder if you have multiple with the same title.\n *\n * Also note that fetching dialogs in a folder is\n * *orders of magnitudes* slower than normal because\n * of Telegram API limitations - we have to fetch all dialogs\n * and filter the ones we need manually. If possible,\n * use {@link Dialog.filterFolder} instead.\n *\n * When a folder with given ID or title is not found,\n * {@link MtArgumentError} is thrown\n *\n * @default <empty> (fetches from \"All\" folder)\n */\n folder?: InputDialogFolder\n\n /**\n * Additional filtering for the dialogs.\n *\n * If `folder` is not provided, this filter is used instead.\n * If `folder` is provided, fields from this object are used\n * to override filters inside the folder.\n */\n filter?: Partial<Omit<tl.RawDialogFilter, '_' | 'id' | 'title'>>\n }): AsyncIterableIterator<Dialog>\n /**\n * Reorder folders\n *\n * **Available**: 👤 users only\n *\n * @param order New order of folders (folder IDs, where default = 0)\n */\n setFoldersOrder(order: number[]): Promise<void>\n /**\n * Download a file and return its contents as a Buffer.\n *\n * > **Note**: This method _will_ download the entire file\n * > into memory at once. This might cause an issue, so use wisely!\n *\n * **Available**: ✅ both users and bots\n *\n * @param params File download parameters\n */\n downloadAsBuffer(location: FileDownloadLocation, params?: FileDownloadParameters): Promise<Uint8Array>\n /**\n * Download a remote file to a local file (only for NodeJS).\n * Promise will resolve once the download is complete.\n *\n * **Available**: ✅ both users and bots\n *\n * @param filename Local file name to which the remote file will be downloaded\n * @param params File download parameters\n */\n downloadToFile(filename: string, location: FileDownloadLocation, params?: FileDownloadParameters): Promise<void>\n /**\n * Download a file and return it as an iterable, which yields file contents\n * in chunks of a given size. Order of the chunks is guaranteed to be\n * consecutive.\n *\n * **Available**: 👤 users only\n *\n * @param params Download parameters\n */\n downloadAsIterable(input: FileDownloadLocation, params?: FileDownloadParameters): AsyncIterableIterator<Uint8Array>\n /**\n * Download a file and return it as a readable stream,\n * streaming file contents.\n *\n * **Available**: ✅ both users and bots\n *\n * @param params File download parameters\n */\n downloadAsStream(location: FileDownloadLocation, params?: FileDownloadParameters): ReadableStream<Uint8Array>\n /**\n * Normalize a {@link InputFileLike} to `InputFile`,\n * uploading it if needed.\n * **Available**: ✅ both users and bots\n *\n */\n _normalizeInputFile(\n input: InputFileLike,\n params: {\n progressCallback?: (uploaded: number, total: number) => void\n fileName?: string\n fileSize?: number\n fileMime?: string\n },\n ): Promise<tl.TypeInputFile>\n /**\n * Normalize an {@link InputMediaLike} to `InputMedia`,\n * uploading the file if needed.\n * **Available**: ✅ both users and bots\n *\n */\n _normalizeInputMedia(\n media: InputMediaLike,\n params?: {\n progressCallback?: (uploaded: number, total: number) => void\n uploadPeer?: tl.TypeInputPeer\n },\n uploadMedia?: boolean,\n ): Promise<tl.TypeInputMedia>\n\n /**\n * Upload a file to Telegram servers, without actually\n * sending a message anywhere. Useful when an `InputFile` is required.\n *\n * This method is quite low-level, and you should use other\n * methods like {@link sendMedia} that handle this under the hood.\n *\n * **Available**: ✅ both users and bots\n *\n * @param params Upload parameters\n */\n uploadFile(params: {\n /**\n * Upload file source.\n *\n * > **Note**: `fs.ReadStream` is a subclass of `stream.Readable` and contains\n * > info about file name, thus you don't need to pass them explicitly.\n */\n file: UploadFileLike\n\n /**\n * File name for the uploaded file. Is usually inferred from path,\n * but should be provided for files sent as `Buffer` or stream.\n *\n * When file name can't be inferred, it falls back to \"unnamed\"\n */\n fileName?: string\n\n /**\n * Total file size. Automatically inferred for Buffer, File and local files.\n */\n fileSize?: number\n\n /**\n * If the file size is unknown, you can provide an estimate,\n * which will be used to determine appropriate part size.\n */\n estimatedSize?: number\n\n /**\n * File MIME type. By default is automatically inferred from magic number\n * If MIME can't be inferred, it defaults to `application/octet-stream`\n */\n fileMime?: string\n\n /**\n * Upload part size (in KB).\n *\n * By default, automatically selected by file size.\n * Must not be bigger than 512 and must not be a fraction.\n */\n partSize?: number\n\n /**\n * Number of parts to be sent in parallel per connection.\n */\n requestsPerConnection?: number\n\n /**\n * Function that will be called after some part has been uploaded.\n *\n * @param uploaded Number of bytes already uploaded\n * @param total Total file size, if known\n */\n progressCallback?: (uploaded: number, total: number) => void\n\n /**\n * When using `inputMediaUploadedPhoto` (e.g. when sending an uploaded photo) require\n * the file size to be known beforehand.\n *\n * In case this is set to `true`, a stream is passed as `file` and the file size is unknown,\n * the stream will be buffered in memory and the file size will be inferred from the buffer.\n */\n requireFileSize?: boolean\n }): Promise<UploadedFile>\n /**\n * Upload a media to Telegram servers, without actually\n * sending a message anywhere. Useful when File ID is needed.\n *\n * The difference with {@link uploadFile} is that\n * the returned object will act like a message media\n * and contain fields like File ID.\n *\n * **Available**: ✅ both users and bots\n *\n * @param media Media to upload\n * @param [params={}] Upload parameters\n */\n uploadMedia(\n media: InputMediaLike,\n params?: {\n peer?: InputPeerLike\n progressCallback?: (uploaded: number, total: number) => void\n },\n ): Promise<Extract<MessageMedia, Photo | RawDocument>>\n /**\n * Create a topic in a forum\n *\n * Only admins with `manageTopics` permission can do this.\n *\n * **Available**: ✅ both users and bots\n *\n * @returns Service message for the created topic\n */\n createForumTopic(params: {\n /** Chat ID or username */\n chatId: InputPeerLike\n\n /**\n * Topic title\n */\n title: string\n\n /**\n * Icon of the topic.\n *\n * Can be a number (color in RGB, see {@link ForumTopic} static members for allowed values)\n * or a custom emoji ID.\n *\n * Icon color can't be changed after the topic is created.\n */\n icon?: number | tl.Long\n\n /**\n * Send as a specific channel\n */\n sendAs?: InputPeerLike\n\n /**\n * Whether to dispatch the returned service message (if any)\n * to the client's update handler.\n */\n shouldDispatch?: true\n }): Promise<Message>\n /**\n * Delete a forum topic and all its history\n *\n * **Available**: ✅ both users and bots\n *\n * @param chat Chat or user ID, username, phone number, `\"me\"` or `\"self\"`\n * @param topicId ID of the topic (i.e. its top message ID)\n */\n deleteForumTopicHistory(chat: InputPeerLike, topicId: number | ForumTopic): Promise<void>\n /**\n * Modify a topic in a forum\n *\n * Only admins with `manageTopics` permission can do this.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID or username\n * @param topicId ID of the topic (i.e. its top message ID)\n * @returns Service message about the modification\n */\n editForumTopic(params: {\n /** Chat ID or username */\n chatId: InputPeerLike\n\n /** ID of the topic (i.e. its top message ID) */\n topicId: number | ForumTopic\n\n /**\n * New topic title\n */\n title?: string\n\n /**\n * New icon of the topic.\n *\n * Can be a custom emoji ID, or `null` to remove the icon\n * and use static color instead\n */\n icon?: tl.Long | null\n\n /**\n * Whether to dispatch the returned service message (if any)\n * to the client's update handler.\n */\n shouldDispatch?: true\n }): Promise<Message>\n /**\n * Get forum topics by their IDs\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID or username\n */\n getForumTopicsById(chatId: InputPeerLike, ids: MaybeArray<number>): Promise<ForumTopic[]>\n /**\n * Get forum topics\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID or username\n */\n getForumTopics(\n chatId: InputPeerLike,\n params?: {\n /**\n * Search query\n */\n query?: string\n\n /**\n * Offset for pagination\n */\n offset?: GetForumTopicsOffset\n\n /**\n * Maximum number of topics to return.\n *\n * @default 100\n */\n limit?: number\n },\n ): Promise<ArrayPaginated<ForumTopic, GetForumTopicsOffset>>\n /**\n * Iterate over forum topics. Wrapper over {@link getForumTopics}.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID or username\n */\n iterForumTopics(\n chatId: InputPeerLike,\n params?: Parameters<typeof getForumTopics>[2] & {\n /**\n * Maximum number of topics to return.\n *\n * @default `Infinity`, i.e. return all topics\n */\n limit?: number\n\n /**\n * Chunk size. Usually you shouldn't care about this.\n */\n chunkSize?: number\n },\n ): AsyncIterableIterator<ForumTopic>\n /**\n * Reorder pinned forum topics\n *\n * Only admins with `manageTopics` permission can do this.\n * **Available**: ✅ both users and bots\n *\n */\n reorderPinnedForumTopics(params: {\n /** Chat ID or username */\n chatId: InputPeerLike\n\n /**\n * Order of the pinned topics\n */\n order: (number | ForumTopic)[]\n\n /**\n * Whether to un-pin topics not present in the order\n */\n force?: boolean\n }): Promise<void>\n /**\n * Toggle open/close status of a topic in a forum\n *\n * Only admins with `manageTopics` permission can do this.\n *\n * **Available**: ✅ both users and bots\n *\n * @returns Service message about the modification\n */\n toggleForumTopicClosed(parmas: {\n /** Chat ID or username */\n chatId: InputPeerLike\n\n /** ID of the topic (i.e. its top message ID) */\n topicId: number | ForumTopic\n\n /** Whether the topic should be closed */\n closed: boolean\n\n /**\n * Whether to dispatch the returned service message (if any)\n * to the client's update handler.\n */\n shouldDispatch?: true\n }): Promise<Message>\n /**\n * Toggle whether a topic in a forum is pinned\n *\n * Only admins with `manageTopics` permission can do this.\n * **Available**: ✅ both users and bots\n *\n */\n toggleForumTopicPinned(params: {\n /** Chat ID or username */\n chatId: InputPeerLike\n /** ID of the topic (i.e. its top message ID) */\n topicId: number | ForumTopic\n /** Whether the topic should be pinned */\n pinned: boolean\n }): Promise<void>\n /**\n * Set whether a supergroup is a forum.\n *\n * Only owner of the supergroup can change this setting.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID or username\n * @param [enabled=false] Whether the supergroup should be a forum\n */\n toggleForum(chatId: InputPeerLike, enabled?: boolean): Promise<void>\n /**\n * Toggle whether \"General\" topic in a forum is hidden or not\n *\n * Only admins with `manageTopics` permission can do this.\n *\n * **Available**: ✅ both users and bots\n *\n * @returns Service message about the modification\n */\n toggleGeneralTopicHidden(params: {\n /** Chat ID or username */\n chatId: InputPeerLike\n /** Whether the topic should be hidden */\n hidden: boolean\n\n /**\n * Whether to dispatch the returned service message (if any)\n * to the client's update handler.\n */\n shouldDispatch?: true\n }): Promise<Message>\n /**\n * Create an additional invite link for the chat.\n *\n * You must be an administrator and have appropriate rights.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID\n * @param params\n */\n createInviteLink(\n chatId: InputPeerLike,\n params?: {\n /**\n * Date when this link will expire.\n * If `number` is passed, UNIX time in ms is expected.\n */\n expires?: number | Date\n\n /**\n * Maximum number of users that can be members of this chat\n * at the same time after joining using this link.\n *\n * Integer in range `[1, 99999]` or `Infinity`\n *\n * @default `Infinity`\n */\n usageLimit?: number\n\n /**\n * Whether users to be joined via this link need to be\n * approved by an admin\n */\n withApproval?: boolean\n },\n ): Promise<ChatInviteLink>\n /**\n * Edit an invite link. You can only edit non-primary\n * invite links.\n *\n * Only pass the fields that you want to modify.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID\n * @param link Invite link to edit\n * @param params\n * @returns Modified invite link\n */\n editInviteLink(params: {\n /** Chat ID */\n chatId: InputPeerLike\n /** Invite link to edit */\n link: string | ChatInviteLink\n /**\n * Date when this link will expire.\n * If `number` is passed, UNIX time in ms is expected.\n */\n expires?: number | Date\n\n /**\n * Maximum number of users that can be members of this chat\n * at the same time after joining using this link.\n *\n * Integer in range `[1, 99999]` or `Infinity`,\n */\n usageLimit?: number\n\n /**\n * Whether users to be joined via this link need to be\n * approved by an admin\n */\n withApproval?: boolean\n }): Promise<ChatInviteLink>\n /**\n * Generate a new primary invite link for a chat,\n * old primary link is revoked.\n *\n * > **Note**: each administrator has their own primary invite link,\n * > and bots by default don't have one.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat IDs\n */\n exportInviteLink(chatId: InputPeerLike): Promise<ChatInviteLink>\n /**\n * Iterate over users who have joined\n * the chat with the given invite link.\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID\n * @param params Additional params\n */\n getInviteLinkMembers(\n chatId: InputPeerLike,\n params?: {\n /**\n * Invite link for which to get members\n */\n link?: string | ChatInviteLink\n\n /**\n * Maximum number of users to return\n *\n * @default 100\n */\n limit?: number\n\n /**\n * Offset request/join date used as an anchor for pagination.\n */\n offsetDate?: Date | number\n\n /**\n * Offset user used as an anchor for pagination\n */\n offsetUser?: tl.TypeInputUser\n\n /**\n * Whether to get users who have requested to join\n * the chat but weren't accepted yet\n */\n requested?: boolean\n\n /**\n * Search for a user in the pending join requests list\n * (if passed, {@link requested} is assumed to be true)\n *\n * Doesn't work when {@link link} is set (Telegram limitation)\n */\n requestedSearch?: string\n },\n ): Promise<ArrayPaginated<ChatInviteLinkMember, { date: number; user: tl.TypeInputUser }>>\n /**\n * Get detailed information about an invite link\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID\n * @param link The invite link\n */\n getInviteLink(chatId: InputPeerLike, link: string): Promise<ChatInviteLink>\n /**\n * Get invite links created by some administrator in the chat.\n *\n * As an administrator you can only get your own links\n * (i.e. `adminId = \"self\"`), as a creator you can get\n * any other admin's links.\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID\n * @param adminId Admin who created the links\n * @param params\n */\n getInviteLinks(\n chatId: InputPeerLike,\n params?: {\n /**\n * Only return this admin's links.\n *\n * @default `\"self\"`\n */\n admin?: InputPeerLike\n\n /**\n * Whether to fetch revoked invite links\n */\n revoked?: boolean\n\n /**\n * Limit the number of invite links to be fetched.\n *\n * @default 100\n */\n limit?: number\n\n /**\n * Offset for pagination.\n */\n offset?: GetInviteLinksOffset\n },\n ): Promise<ArrayPaginated<ChatInviteLink, GetInviteLinksOffset>>\n /**\n * Get primary invite link of a chat\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID\n */\n getPrimaryInviteLink(chatId: InputPeerLike): Promise<ChatInviteLink>\n /**\n * Approve or decline multiple join requests to a chat.\n * **Available**: 👤 users only\n *\n */\n hideAllJoinRequests(params: {\n /** Chat/channel ID */\n chatId: InputPeerLike\n\n /** Whether to approve or decline the join requests */\n action: 'approve' | 'decline'\n\n /** Invite link to target */\n link?: string | ChatInviteLink\n }): Promise<void>\n /**\n * Approve or decline join request to a chat.\n * **Available**: ✅ both users and bots\n *\n */\n hideJoinRequest(params: {\n /** Chat/channel ID */\n chatId: InputPeerLike\n /** User ID */\n user: InputPeerLike\n /** Whether to approve or decline the join request */\n action: 'approve' | 'decline'\n }): Promise<void>\n /**\n * Iterate over users who have joined\n * the chat with the given invite link.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID\n * @param params Additional params\n */\n iterInviteLinkMembers(\n chatId: InputPeerLike,\n params?: Parameters<typeof getInviteLinkMembers>[2] & {\n /**\n * Maximum number of users to return\n *\n * @default `Infinity`, i.e. all users are fetched\n */\n limit?: number\n\n /**\n * Chunk size which will be passed to `messages.getChatInviteImporters`.\n * You shouldn't usually care about this.\n *\n * @default 100.\n */\n chunkSize?: number\n },\n ): AsyncIterableIterator<ChatInviteLinkMember>\n /**\n * Iterate over invite links created by some administrator in the chat.\n *\n * As an administrator you can only get your own links\n * (i.e. `adminId = \"self\"`), as a creator you can get\n * any other admin's links.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID\n * @param adminId Admin who created the links\n * @param params\n */\n iterInviteLinks(\n chatId: InputPeerLike,\n params?: Parameters<typeof getInviteLinks>[2] & {\n /**\n * Limit the number of invite links to be fetched.\n * By default, all links are fetched.\n */\n limit?: number\n\n /**\n * Size of chunks which are fetched. Usually not needed.\n *\n * @default `100`\n */\n chunkSize?: number\n },\n ): AsyncIterableIterator<ChatInviteLink>\n /**\n * Revoke an invite link.\n *\n * If `link` is a primary invite link, a new invite link will be\n * generated automatically by Telegram\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID\n * @param link Invite link to revoke\n * @returns If `link` is a primary invite, newly generated invite link, otherwise the revoked link\n */\n revokeInviteLink(chatId: InputPeerLike, link: string | ChatInviteLink): Promise<ChatInviteLink>\n /**\n * Close a poll sent by you.\n *\n * Once closed, poll can't be re-opened, and nobody\n * will be able to vote in it\n * **Available**: ✅ both users and bots\n *\n */\n closePoll(\n params: InputMessageId & {\n /**\n * Whether to dispatch the edit message event\n * to the client's update handler.\n */\n shouldDispatch?: true\n },\n ): Promise<Poll>\n /**\n * Delete messages by their IDs\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat's marked ID, its username, phone or `\"me\"` or `\"self\"`.\n * @param ids Message(s) ID(s) to delete.\n */\n deleteMessagesById(chatId: InputPeerLike, ids: number[], params?: DeleteMessagesParams): Promise<void>\n /**\n * Delete one or more {@link Message}\n *\n * **Available**: ✅ both users and bots\n *\n * @param messages Message(s) to delete\n */\n deleteMessages(messages: Message[], params?: DeleteMessagesParams): Promise<void>\n /**\n * Delete scheduled messages by their IDs.\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat's marked ID, its username, phone or `\"me\"` or `\"self\"`.\n * @param ids Message(s) ID(s) to delete.\n */\n deleteScheduledMessages(chatId: InputPeerLike, ids: number[]): Promise<void>\n /**\n * Edit sent inline message text, media and reply markup.\n *\n * **Available**: ✅ both users and bots\n *\n * @param messageId\n * Inline message ID, either as a TL object, or as a\n * TDLib and Bot API compatible string\n * @param params\n */\n editInlineMessage(params: {\n /**\n * Inline message ID, either as a TL object, or as a\n * TDLib and Bot API compatible string\n */\n messageId: tl.TypeInputBotInlineMessageID | string\n\n /**\n * New message text\n *\n * When `media` is passed, `media.caption` is used instead\n */\n text?: InputText\n\n /**\n * New message media\n */\n media?: InputMediaLike\n\n /**\n * Whether to disable links preview in this message\n */\n disableWebPreview?: boolean\n\n /**\n * Whether to invert media position.\n *\n * Currently only supported for web previews and makes the\n * client render the preview above the caption and not below.\n */\n invertMedia?: boolean\n\n /**\n * For bots: new reply markup.\n * If omitted, existing markup will be removed.\n */\n replyMarkup?: ReplyMarkup\n\n /**\n * For media, upload progress callback.\n *\n * @param uploaded Number of bytes uploaded\n * @param total Total file size in bytes\n */\n progressCallback?: (uploaded: number, total: number) => void\n }): Promise<void>\n /**\n * Edit message text, media, reply markup and schedule date.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId ID of the chat, its username, phone or `\"me\"` or `\"self\"`\n * @param message Message or its ID\n * @param params\n */\n editMessage(\n params: InputMessageId & {\n /**\n * New message text\n *\n * When `media` is passed, `media.caption` is used instead\n */\n text?: InputText\n\n /**\n * New message media\n */\n media?: InputMediaLike\n\n /**\n * Whether to disable links preview in this message\n */\n disableWebPreview?: boolean\n\n /**\n * For bots: new reply markup.\n * If omitted, existing markup will be removed.\n */\n replyMarkup?: ReplyMarkup\n\n /**\n * To re-schedule a message: new schedule date.\n * When passing a number, a UNIX time in ms is expected.\n */\n scheduleDate?: Date | number\n\n /**\n * For media, upload progress callback.\n *\n * @param uploaded Number of bytes uploaded\n * @param total Total file size in bytes\n */\n progressCallback?: (uploaded: number, total: number) => void\n\n /**\n * Whether to dispatch the edit message event\n * to the client's update handler.\n */\n shouldDispatch?: true\n\n /**\n * Whether to invert media position.\n *\n * Currently only supported for web previews and makes the\n * client render the preview above the caption and not below.\n */\n invertMedia?: boolean\n },\n ): Promise<Message>\n /**\n * Forward one or more messages by their IDs.\n * You can forward no more than 100 messages at once.\n *\n * **Available**: ✅ both users and bots\n *\n * @param toChatId Destination chat ID, username, phone, `\"me\"` or `\"self\"`\n * @param fromChatId Source chat ID, username, phone, `\"me\"` or `\"self\"`\n * @param messages Message IDs\n * @param params Additional sending parameters\n * @returns Newly sent, forwarded messages in the destination chat.\n */\n forwardMessagesById(\n params: ForwardMessageOptions & {\n /** Source chat ID, username, phone, `\"me\"` or `\"self\"` */\n fromChatId: InputPeerLike\n /** Message IDs to forward */\n messages: number[]\n },\n ): Promise<Message[]>\n /**\n * Forward one or more {@link Message}s to another chat.\n *\n * > **Note**: all messages must be from the same chat.\n * **Available**: ✅ both users and bots\n *\n */\n forwardMessages(\n params: ForwardMessageOptions & {\n messages: Message[]\n },\n ): Promise<Message[]>\n\n /**\n * Get the message containing the button being clicked\n * in the given callback query.\n * **Available**: 🤖 bots only\n *\n */\n getCallbackQueryMessage(\n id:\n | CallbackQuery\n | tl.RawUpdateBotCallbackQuery\n | {\n messageId: number\n queryId: tl.Long\n peer: InputPeerLike\n },\n ): Promise<Message | null>\n // public version of the same method because why not\n /**\n * Get discussion message for some channel post.\n *\n * Returns `null` if the post does not have a discussion\n * message.\n *\n * This method might throw `FLOOD_WAIT_X` error in case\n * the discussion message was not *yet* created. Error\n * is usually handled by the client, but if you disabled that,\n * you'll need to handle it manually.\n *\n * **Available**: 👤 users only\n *\n * @param peer Channel where the post was found\n * @param message ID of the channel post\n */\n getDiscussionMessage(params: InputMessageId): Promise<Message | null>\n /**\n * Get chat history.\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat's marked ID, its username, phone or `\"me\"` or `\"self\"`.\n * @param params Additional fetch parameters\n */\n getHistory(\n chatId: InputPeerLike,\n params?: {\n /**\n * Limits the number of messages to be retrieved.\n *\n * @default 100\n */\n limit?: number\n\n /**\n * Offset for pagination\n */\n offset?: GetHistoryOffset\n\n /**\n * Additional offset from {@link offset}, in resulting messages.\n *\n * This can be used for advanced use cases, like:\n * - Loading 20 messages newer than message with ID `MSGID`:\n * `offset = MSGID, addOffset = -20, limit = 20`\n * - Loading 20 messages around message with ID `MSGID`:\n * `offset = MSGID, addOffset = -10, limit = 20`\n *\n * @default `0` (disabled)\n */\n\n addOffset?: number\n\n /**\n * Minimum message ID to return\n *\n * @default `0` (disabled).\n */\n minId?: number\n\n /**\n * Maximum message ID to return.\n *\n * Unless {@link addOffset} is used, this will work the same as {@link offset}.\n *\n * @default `0` (disabled).\n */\n maxId?: number\n\n /**\n * Whether to retrieve messages in reversed order (from older to recent),\n * starting from {@link offset} (inclusive).\n *\n * > **Note**: Using `reverse=true` requires you to pass offset from which to start\n * > fetching the messages \"downwards\". If you call `getHistory` with `reverse=true`\n * > and without any offset, it will return an empty array.\n *\n * @default false\n */\n reverse?: boolean\n },\n ): Promise<ArrayPaginated<Message, GetHistoryOffset>>\n /**\n * Given a message link (e.g. `t.me/durov/1`), fetch the relevant message.\n * **Available**: ✅ both users and bots\n *\n */\n getMessageByLink(link: string): Promise<Message | null>\n /**\n * Get all messages inside of a message group\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID\n * @param message ID of one of the messages in the group\n */\n getMessageGroup(params: InputMessageId): Promise<Message[]>\n /**\n * Get reactions to messages by their IDs.\n *\n * > Apps should short-poll reactions for visible messages\n * > (that weren't sent by the user) once every 15-30 seconds,\n * > but only if `message.reactions` is set\n *\n * **Available**: 👤 users only\n *\n * @param chatId ID of the chat with messages\n * @param messages Message IDs\n * @returns Reactions to corresponding messages, or `null` if there are none\n */\n getMessageReactionsById(chatId: InputPeerLike, messages: number[]): Promise<(MessageReactions | null)[]>\n /**\n * Get reactions to {@link Message}s.\n *\n * > **Note**: messages must all be from the same chat.\n *\n * > Apps should short-poll reactions for visible messages\n * > (that weren't sent by the user) once every 15-30 seconds,\n * > but only if `message.reactions` is set\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId ID of the chat with messages\n * @param messages Message IDs\n * @returns Reactions to corresponding messages, or `null` if there are none\n */\n getMessageReactions(messages: Message[]): Promise<(MessageReactions | null)[]>\n /**\n * Get messages from PM or legacy group by their IDs.\n * For channels, use {@link getMessages}.\n *\n * Unlike {@link getMessages}, this method does not\n * check if the message belongs to some chat.\n *\n * Fot messages that were not found, `null` will be\n * returned at that position.\n *\n * **Available**: ✅ both users and bots\n *\n * @param messageIds Messages IDs\n * @param [fromReply=false]\n * Whether the reply to a given message should be fetched\n * (i.e. `getMessages(msg.chat.id, msg.id, true).id === msg.replyToMessageId`)\n */\n getMessagesUnsafe(messageIds: MaybeArray<number>, fromReply?: boolean): Promise<(Message | null)[]>\n\n /**\n * Get messages in chat by their IDs\n *\n * Fot messages that were not found, `null` will be\n * returned at that position.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat's marked ID, its username, phone or `\"me\"` or `\"self\"`\n * @param messageIds Messages IDs\n * @param [fromReply=false]\n * Whether the reply to a given message should be fetched\n * (i.e. `getMessages(msg.chat.id, msg.id, true).id === msg.replyToMessageId`)\n */\n getMessages(chatId: InputPeerLike, messageIds: MaybeArray<number>, fromReply?: boolean): Promise<(Message | null)[]>\n /**\n * Get users who have reacted to the message.\n *\n * **Available**: 👤 users only\n *\n * @param params\n */\n getReactionUsers(\n params: InputMessageId & {\n /**\n * Get only reactions with the specified emoji\n */\n emoji?: InputReaction\n\n /**\n * Limit the number of users returned.\n *\n * @default 100\n */\n limit?: number\n\n /**\n * Offset for pagination\n */\n offset?: GetReactionUsersOffset\n },\n ): Promise<ArrayPaginated<PeerReaction, GetReactionUsersOffset>>\n /**\n * For messages containing a reply, fetch the message that is being replied.\n *\n * Note that even if a message has {@link replyToMessage},\n * the message itself may have been deleted, in which case\n * this method will also return `null`.\n * **Available**: ✅ both users and bots\n *\n */\n getReplyTo(message: Message): Promise<Message | null>\n /**\n * Get scheduled messages in chat by their IDs\n *\n * Fot messages that were not found, `null` will be\n * returned at that position.\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat's marked ID, its username, phone or `\"me\"` or `\"self\"`\n * @param messageIds Scheduled messages IDs\n */\n getScheduledMessages(chatId: InputPeerLike, messageIds: MaybeArray<number>): Promise<(Message | null)[]>\n /**\n * Iterate over chat history. Wrapper over {@link getHistory}\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat's marked ID, its username, phone or `\"me\"` or `\"self\"`.\n * @param params Additional fetch parameters\n */\n iterHistory(\n chatId: InputPeerLike,\n params?: Parameters<typeof getHistory>[2] & {\n /**\n * Limits the number of messages to be retrieved.\n *\n * @default Infinity, i.e. all messages\n */\n limit?: number\n\n /**\n * Chunk size. Usually you shouldn't care about this.\n *\n * @default 100\n */\n chunkSize?: number\n },\n ): AsyncIterableIterator<Message>\n /**\n * Iterate over users who have reacted to the message.\n *\n * Wrapper over {@link getReactionUsers}.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID\n * @param messageId Message ID\n * @param params\n */\n iterReactionUsers(\n params: Parameters<typeof getReactionUsers>[1] & {\n /**\n * Limit the number of events returned.\n *\n * @default `Infinity`, i.e. all events are returned\n */\n limit?: number\n\n /**\n * Chunk size, usually not needed.\n *\n * @default 100\n */\n chunkSize?: number\n },\n ): AsyncIterableIterator<PeerReaction>\n /**\n * Search for messages globally from all of your chats.\n *\n * Iterable version of {@link searchGlobal}\n *\n * **Note**: Due to Telegram limitations, you can only get up to ~10000 messages\n *\n * **Available**: ✅ both users and bots\n *\n * @param params Search parameters\n */\n iterSearchGlobal(\n params?: Parameters<typeof searchGlobal>[1] & {\n /**\n * Limits the number of messages to be retrieved.\n *\n * @default `Infinity`, i.e. all messages are returned\n */\n limit?: number\n\n /**\n * Chunk size, which will be passed as `limit` parameter\n * for `messages.search`. Usually you shouldn't care about this.\n *\n * @default 100\n */\n chunkSize?: number\n },\n ): AsyncIterableIterator<Message>\n /**\n * Search for messages inside a specific chat\n *\n * Iterable version of {@link searchMessages}\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat's marked ID, its username, phone or `\"me\"` or `\"self\"`.\n * @param params Additional search parameters\n */\n iterSearchMessages(\n params?: Parameters<typeof searchMessages>[1] & {\n /**\n * Limits the number of messages to be retrieved.\n *\n * @default `Infinity`, i.e. all messages are returned\n */\n limit?: number\n\n /**\n * Chunk size, which will be passed as `limit` parameter\n * for `messages.search`. Usually you shouldn't care about this.\n *\n * @default `100`\n */\n chunkSize?: number\n },\n ): AsyncIterableIterator<Message>\n /**\n * Pin a message in a group, supergroup, channel or PM.\n *\n * For supergroups/channels, you must have appropriate permissions,\n * either as an admin, or as default permissions\n *\n * **Available**: ✅ both users and bots\n *\n * @returns Service message about pinned message, if one was generated.\n */\n pinMessage(\n params: InputMessageId & {\n /** Whether to send a notification (only for legacy groups and supergroups) */\n notify?: boolean\n /** Whether to pin for both sides (only for private chats) */\n bothSides?: boolean\n\n /**\n * Whether to dispatch the returned service message (if any)\n * to the client's update handler.\n */\n shouldDispatch?: true\n },\n ): Promise<Message | null>\n /**\n * Mark chat history as read.\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID\n */\n readHistory(\n chatId: InputPeerLike,\n params?: {\n /**\n * Message up until which to read history\n *\n * @default 0, i.e. read everything\n */\n maxId?: number\n\n /**\n * Whether to also clear all mentions in the chat\n */\n clearMentions?: boolean\n },\n ): Promise<void>\n /**\n * Mark all reactions in chat as read.\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat ID\n */\n readReactions(chatId: InputPeerLike): Promise<void>\n /**\n * Search for messages globally from all of your chats\n *\n * **Note**: Due to Telegram limitations, you can only get up to ~10000 messages\n *\n * **Available**: 👤 users only\n *\n * @param params Search parameters\n */\n searchGlobal(params?: {\n /**\n * Text query string. Use `\"@\"` to search for mentions.\n *\n * @default `\"\"` (empty string)\n */\n query?: string\n\n /**\n * Limits the number of messages to be retrieved.\n *\n * @default 100\n */\n limit?: number\n\n /**\n * Filter the results using some filter. (see {@link SearchFilters})\n *\n * @default {@link SearchFilters.Empty} (i.e. will return all messages)\n */\n filter?: tl.TypeMessagesFilter\n\n /**\n * Offset data used for pagination\n */\n offset?: SearchGlobalOffset\n\n /**\n * Only return messages newer than this date\n */\n minDate?: Date | number\n\n /**\n * Only return messages older than this date\n */\n maxDate?: Date | number\n }): Promise<ArrayPaginated<Message, SearchGlobalOffset>>\n /**\n * Search for messages inside a specific chat\n *\n * **Available**: 👤 users only\n *\n * @param chatId Chat's marked ID, its username, phone or `\"me\"` or `\"self\"`.\n * @param params Additional search parameters\n */\n searchMessages(params?: {\n /**\n * Text query string. Required for text-only messages,\n * optional for media.\n *\n * @default `\"\"` (empty string)\n */\n query?: string\n\n /**\n * Chat where to search for messages.\n *\n * When empty, will search across common message box (i.e. private messages and legacy chats)\n */\n chatId?: InputPeerLike\n\n /**\n * Offset ID for the search. Only messages earlier than this ID will be returned.\n *\n * @default `0` (starting from the latest message).\n */\n offset?: SearchMessagesOffset\n\n /**\n * Additional offset from {@link offset}, in resulting messages.\n *\n * This can be used for advanced use cases, like:\n * - Loading 20 results newer than message with ID `MSGID`:\n * `offset = MSGID, addOffset = -20, limit = 20`\n * - Loading 20 results around message with ID `MSGID`:\n * `offset = MSGID, addOffset = -10, limit = 20`\n *\n * When {@link offset} is not set, this will be relative to the last message\n *\n * @default `0` (disabled)\n */\n addOffset?: number\n\n /**\n * Minimum message ID to return\n *\n * @default `0` (disabled).\n */\n minId?: number\n\n /**\n * Maximum message ID to return.\n *\n * Unless {@link addOffset} is used, this will work the same as {@link offset}.\n *\n * @default `0` (disabled).\n */\n maxId?: number\n\n /**\n * Minimum message date to return\n *\n * @default `0` (disabled).\n */\n minDate?: number | Date\n\n /**\n * Maximum message date to return\n *\n * @default `0` (disabled).\n */\n maxDate?: number | Date\n\n /**\n * Thread ID to return only messages from this thread.\n */\n threadId?: number\n\n /**\n * Limits the number of messages to be retrieved.\n *\n * @default 100\n */\n limit?: number\n\n /**\n * Filter the results using some filter (see {@link SearchFilters})\n *\n * @default {@link SearchFilters.Empty} (i.e. will return all messages)\n */\n filter?: tl.TypeMessagesFilter\n\n /**\n * Search only for messages sent by a specific user.\n *\n * You can pass their marked ID, username, phone or `\"me\"` or `\"self\"`\n */\n fromUser?: InputPeerLike\n }): Promise<ArrayPaginated<Message, SearchMessagesOffset>>\n /** Send a text to the same chat (and topic, if applicable) as a given message */\n answerText(message: Message, ...params: ParametersSkip2<typeof sendText>): ReturnType<typeof sendText>\n /** Send a media to the same chat (and topic, if applicable) as a given message */\n answerMedia(message: Message, ...params: ParametersSkip2<typeof sendMedia>): ReturnType<typeof sendMedia>\n /** Send a media group to the same chat (and topic, if applicable) as a given message */\n answerMediaGroup(\n message: Message,\n ...params: ParametersSkip2<typeof sendMediaGroup>\n ): ReturnType<typeof sendMediaGroup>\n /**\n * Send a text comment to a given message.\n *\n * If this is a normal message (not a channel post),\n * a simple reply will be sent.\n *\n * **Available**: ✅ both users and bots\n *\n * @throws MtArgumentError\n * If this is a channel post which does not have comments section.\n * To check if a post has comments, use {@link Message#replies}.hasComments\n */\n commentText(message: Message, ...params: ParametersSkip2<typeof sendText>): ReturnType<typeof sendText>\n /**\n * Send a text comment to a given message.\n *\n * If this is a normal message (not a channel post),\n * a simple reply will be sent.\n *\n * **Available**: ✅ both users and bots\n *\n * @throws MtArgumentError\n * If this is a channel post which does not have comments section.\n * To check if a post has comments, use {@link Message#replies}.hasComments\n */\n commentMedia(message: Message, ...params: ParametersSkip2<typeof sendMedia>): ReturnType<typeof sendMedia>\n /**\n * Send a text comment to a given message.\n *\n * If this is a normal message (not a channel post),\n * a simple reply will be sent.\n *\n * **Available**: ✅ both users and bots\n *\n * @throws MtArgumentError\n * If this is a channel post which does not have comments section.\n * To check if a post has comments, use {@link Message#replies}.hasComments\n */\n commentMediaGroup(\n message: Message,\n ...params: ParametersSkip2<typeof sendMediaGroup>\n ): ReturnType<typeof sendMediaGroup>\n /**\n * Copy a message group (i.e. send the same message group, but do not forward it).\n *\n * Note that all the provided messages must be in the same message group\n * **Available**: ✅ both users and bots\n *\n */\n sendCopyGroup(\n params: SendCopyGroupParams &\n (\n | {\n /** Source chat ID */\n fromChatId: InputPeerLike\n /** Message IDs to forward */\n messages: number[]\n }\n | { messages: Message[] }\n ),\n ): Promise<Message[]>\n /**\n * Copy a message (i.e. send the same message, but do not forward it).\n *\n * Note that if the message contains a webpage,\n * it will be copied simply as a text message,\n * and if the message contains an invoice,\n * it can't be copied.\n * **Available**: ✅ both users and bots\n *\n */\n sendCopy(\n params: SendCopyParams &\n (\n | {\n /** Source chat ID */\n fromChatId: InputPeerLike\n /** Message ID to forward */\n message: number\n }\n | { message: Message }\n ),\n ): Promise<Message>\n /**\n * Send a group of media.\n *\n * To add a caption to the group, add caption to the first\n * media in the group and don't add caption for any other.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId ID of the chat, its username, phone or `\"me\"` or `\"self\"`\n * @param medias Medias contained in the message.\n * @param params Additional sending parameters\n * @link InputMedia\n */\n sendMediaGroup(\n chatId: InputPeerLike,\n medias: (InputMediaLike | string)[],\n params?: CommonSendParams & {\n /**\n * Whether to invert media position.\n *\n * Currently only supported for web previews and makes the\n * client render the preview above the caption and not below.\n */\n invertMedia?: boolean\n\n /**\n * Function that will be called after some part has been uploaded.\n * Only used when a file that requires uploading is passed,\n * and not used when uploading a thumbnail.\n *\n * @param index Index of the media in the original array\n * @param uploaded Number of bytes already uploaded\n * @param total Total file size\n */\n progressCallback?: (index: number, uploaded: number, total: number) => void\n },\n ): Promise<Message[]>\n /**\n * Send a single media (a photo or a document-based media)\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId ID of the chat, its username, phone or `\"me\"` or `\"self\"`\n * @param media\n * Media contained in the message. You can also pass TDLib\n * and Bot API compatible File ID, which will be wrapped\n * in {@link InputMedia.auto}\n * @param params Additional sending parameters\n * @link InputMedia\n */\n sendMedia(\n chatId: InputPeerLike,\n media: InputMediaLike | string,\n params?: CommonSendParams & {\n /**\n * For bots: inline or reply markup or an instruction\n * to hide a reply keyboard or to force a reply.\n */\n replyMarkup?: ReplyMarkup\n\n /**\n * Whether to invert media position.\n *\n * Currently only supported for web previews and makes the\n * client render the preview above the caption and not below.\n */\n invert?: boolean\n\n /**\n * Override caption for `media`.\n *\n * Can be used, for example. when using File IDs\n * or when using existing InputMedia objects.\n */\n caption?: InputText\n\n /**\n * Function that will be called after some part has been uploaded.\n * Only used when a file that requires uploading is passed,\n * and not used when uploading a thumbnail.\n *\n * @param uploaded Number of bytes already uploaded\n * @param total Total file size\n */\n progressCallback?: (uploaded: number, total: number) => void\n },\n ): Promise<Message>\n /** Send a text in reply to a given quote */\n quoteWithText(\n message: Message,\n params: QuoteParamsFrom<Parameters<typeof sendText>[3]> & {\n /** Text to send */\n text: Parameters<typeof sendText>[2]\n },\n ): ReturnType<typeof sendText>\n /** Send a media in reply to a given quote */\n quoteWithMedia(\n message: Message,\n params: QuoteParamsFrom<Parameters<typeof sendMedia>[3]> & {\n /** Media to send */\n media: Parameters<typeof sendMedia>[2]\n },\n ): ReturnType<typeof sendMedia>\n /** Send a media group in reply to a given quote */\n quoteWithMediaGroup(\n message: Message,\n params: QuoteParamsFrom<Parameters<typeof sendMediaGroup>[3]> & {\n /** Media group to send */\n medias: Parameters<typeof sendMediaGroup>[2]\n },\n ): ReturnType<typeof sendMediaGroup>\n /**\n * Send or remove a reaction.\n *\n * **Available**: 👤 users only\n *\n * @returns\n * Message to which the reaction was sent, if available.\n * The message is normally available for users, but may not be available for bots in PMs.\n */\n sendReaction(\n params: InputMessageId & {\n /** Reaction emoji (or `null` to remove reaction) */\n emoji?: MaybeArray<InputReaction> | null\n /** Whether to use a big reaction */\n big?: boolean\n\n /**\n * Whether to dispatch the returned edit message event\n * to the client's update handler.\n */\n shouldDispatch?: true\n },\n ): Promise<Message | null>\n /** Send a text in reply to a given message */\n replyText(message: Message, ...params: ParametersSkip2<typeof sendText>): ReturnType<typeof sendText>\n /** Send a media in reply to a given message */\n replyMedia(message: Message, ...params: ParametersSkip2<typeof sendMedia>): ReturnType<typeof sendMedia>\n /** Send a media group in reply to a given message */\n replyMediaGroup(\n message: Message,\n ...params: ParametersSkip2<typeof sendMediaGroup>\n ): ReturnType<typeof sendMediaGroup>\n /**\n * Send previously scheduled message(s)\n *\n * Note that if the message belongs to a media group,\n * the entire group will be sent, and all the messages\n * will be returned.\n *\n * **Available**: 👤 users only\n *\n * @param peer Chat where the messages were scheduled\n * @param ids ID(s) of the messages\n */\n sendScheduled(peer: InputPeerLike, ids: MaybeArray<number>): Promise<Message[]>\n /**\n * Send a text message\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId ID of the chat, its username, phone or `\"me\"` or `\"self\"`\n * @param text Text of the message\n * @param params Additional sending parameters\n */\n sendText(\n chatId: InputPeerLike,\n text: InputText,\n params?: CommonSendParams & {\n /**\n * For bots: inline or reply markup or an instruction\n * to hide a reply keyboard or to force a reply.\n */\n replyMarkup?: ReplyMarkup\n\n /**\n * Whether to disable links preview in this message\n */\n disableWebPreview?: boolean\n\n /**\n * Whether to invert media position.\n *\n * Currently only supported for web previews and makes the\n * client render the preview above the caption and not below.\n */\n invertMedia?: boolean\n },\n ): Promise<Message>\n /**\n * Sends a current user/bot typing event\n * to a conversation partner or group.\n *\n * This status is set for 6 seconds, and is\n * automatically cancelled if you send a\n * message.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID\n * @param [status='typing'] Typing status\n * @param params\n */\n sendTyping(\n chatId: InputPeerLike,\n status?: Exclude<TypingStatus, 'interaction' | 'interaction_seen'> | tl.TypeSendMessageAction,\n params?: {\n /**\n * For `upload_*` and history import actions, progress of the upload\n */\n progress?: number\n\n /**\n * For comment threads, ID of the thread (i.e. top message)\n */\n threadId?: number\n },\n ): Promise<void>\n /**\n * Send or retract a vote in a poll.\n * **Available**: 👤 users only\n *\n */\n sendVote(\n params: InputMessageId & {\n /**\n * Selected options, or `null` to retract.\n * You can pass indexes of the answers or the `Buffer`s\n * representing them. In case of indexes, the poll will first\n * be requested from the server.\n */\n options: null | MaybeArray<number | Uint8Array>\n },\n ): Promise<Poll>\n /**\n * Translate message text to a given language.\n *\n * Returns `null` if it could not translate the message.\n * **Available**: 👤 users only\n *\n */\n translateMessage(\n params: InputMessageId & {\n /** Target language (two-letter ISO 639-1 language code) */\n toLanguage: string\n },\n ): Promise<TextWithEntities>\n /**\n * Translate text to a given language.\n *\n * **Available**: 👤 users only\n *\n * @param text Text to translate\n * @param toLanguage Target language (two-letter ISO 639-1 language code)\n */\n translateText(text: InputText, toLanguage: string): Promise<TextWithEntities>\n /**\n * Unpin all pinned messages in a chat.\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat or user ID\n */\n unpinAllMessages(\n chatId: InputPeerLike,\n params?: {\n /**\n * For forums - unpin only messages from the given topic\n */\n topicId?: number\n },\n ): Promise<void>\n /**\n * Unpin a message in a group, supergroup, channel or PM.\n *\n * For supergroups/channels, you must have appropriate permissions,\n * either as an admin, or as default permissions\n *\n * **Available**: ✅ both users and bots\n *\n * @param chatId Chat ID, username, phone number, `\"self\"` or `\"me\"`\n * @param messageId Message ID\n */\n unpinMessage(params: InputMessageId): Promise<void>\n /**\n * Create a new takeout session\n *\n * **Available**: 👤 users only\n *\n * @param params Takeout session parameters\n */\n initTakeoutSession(params: Omit<tl.account.RawInitTakeoutSessionRequest, '_'>): Promise<TakeoutSession>\n /**\n * Normalize {@link InputPrivacyRule}[] to `tl.TypeInputPrivacyRule`,\n * resolving the peers if needed.\n * **Available**: ✅ both users and bots\n *\n */\n _normalizePrivacyRules(rules: InputPrivacyRule[]): Promise<tl.TypeInputPrivacyRule[]>\n /**\n * Change your 2FA password\n * **Available**: 👤 users only\n *\n */\n changeCloudPassword(params: {\n /** Current password as plaintext */\n currentPassword: string\n /** New password as plaintext */\n newPassword: string\n /** Hint for the new password */\n hint?: string\n }): Promise<void>\n /**\n * Enable 2FA password on your account\n *\n * Note that if you pass `email`, `EmailUnconfirmedError` may be\n * thrown, and you should use {@link verifyPasswordEmail},\n * {@link resendPasswordEmail} or {@link cancelPasswordEmail},\n * and the call this method again\n * **Available**: 👤 users only\n *\n */\n enableCloudPassword(params: {\n /** 2FA password as plaintext */\n password: string\n /** Hint for the new password */\n hint?: string\n /** Recovery email */\n email?: string\n }): Promise<void>\n /**\n * Verify an email to use as 2FA recovery method\n *\n * **Available**: 👤 users only\n *\n * @param code Code which was sent via email\n */\n verifyPasswordEmail(code: string): Promise<void>\n /**\n * Resend the code to verify an email to use as 2FA recovery method.\n * **Available**: 👤 users only\n *\n */\n resendPasswordEmail(): Promise<void>\n /**\n * Cancel the code that was sent to verify an email to use as 2FA recovery method\n * **Available**: 👤 users only\n *\n */\n cancelPasswordEmail(): Promise<void>\n /**\n * Remove 2FA password from your account\n *\n * **Available**: 👤 users only\n *\n * @param password 2FA password as plaintext\n */\n removeCloudPassword(password: string): Promise<void>\n /**\n * Boost a given channel\n *\n * **Available**: 👤 users only\n *\n * @param peerId Peer ID to boost\n */\n applyBoost(peerId: InputPeerLike): Promise<void>\n /**\n * Check if the current user can apply boost to some channel\n *\n * **Available**: ✅ both users and bots\n *\n * @returns\n * - `{ can: true }` if the user can apply boost\n * - `.replace` - {@link Chat}s that can be replaced with the current one.\n * If the user can apply boost without replacing any chats, this field will be `undefined`.\n * - `{ can: false }` if the user can't apply boost\n * - `.reason == \"no_slots\"` if the user has no available slots\n * - `.reason == \"need_premium\"` if the user needs Premium to boost\n * - In all cases, `slots` will contain all the current user's boost slots\n */\n canApplyBoost(): Promise<CanApplyBoostResult>\n\n /**\n * Get information about boosts in a channel\n *\n * **Available**: 👤 users only\n *\n * @returns IDs of stories that were removed\n */\n getBoostStats(peerId: InputPeerLike): Promise<BoostStats>\n /**\n * Get boosts of a channel\n * **Available**: 👤 users only\n *\n */\n getBoosts(\n peerId: InputPeerLike,\n params?: {\n /**\n * Offset for pagination\n */\n offset?: string\n\n /**\n * Maximum number of boosters to fetch\n *\n * @default 100\n */\n limit?: number\n },\n ): Promise<ArrayPaginated<Boost, string>>\n /**\n * Get boost slots information of the current user.\n *\n * Includes information about the currently boosted channels,\n * as well as the slots that can be used to boost other channels.\n * **Available**: 👤 users only\n *\n */\n getMyBoostSlots(): Promise<BoostSlot[]>\n /**\n * Iterate over boosters of a channel.\n *\n * Wrapper over {@link getBoosters}\n *\n * **Available**: ✅ both users and bots\n *\n * @returns IDs of stories that were removed\n */\n iterBoosters(\n peerId: InputPeerLike,\n params?: Parameters<typeof getBoosts>[2] & {\n /**\n * Total number of boosters to fetch\n *\n * @default Infinity, i.e. fetch all boosters\n */\n limit?: number\n\n /**\n * Number of boosters to fetch per request\n * Usually you don't need to change this\n *\n * @default 100\n */\n chunkSize?: number\n },\n ): AsyncIterableIterator<Boost>\n /**\n * Add a sticker to a sticker set.\n *\n * Only for bots, and the sticker set must\n * have been created by this bot.\n *\n * **Available**: ✅ both users and bots\n *\n * @param setId Sticker set short name or TL object with input sticker set\n * @param sticker Sticker to be added\n * @param params\n * @returns Modfiied sticker set\n */\n addStickerToSet(\n setId: InputStickerSet,\n sticker: InputStickerSetItem,\n params?: {\n /**\n * Upload progress callback\n *\n * @param uploaded Number of bytes uploaded\n * @param total Total file size\n */\n progressCallback?: (uploaded: number, total: number) => void\n },\n ): Promise<StickerSet>\n /**\n * Create a new sticker set.\n *\n * This is the only sticker-related method that\n * users can use (they allowed it with the \"import stickers\" update)\n *\n * **Available**: ✅ both users and bots\n *\n * @param params\n * @returns Newly created sticker set\n */\n createStickerSet(params: {\n /**\n * Owner of the sticker set (must be user).\n *\n * If this pack is created from a user account,\n * can only be `\"self\"`\n */\n owner: InputPeerLike\n\n /**\n * Title of the sticker set (1-64 chars)\n */\n title: string\n\n /**\n * Short name of the sticker set.\n * Can only contain English letters, digits and underscores\n * (i.e. must match `/^[a-zA-Z0-9_]+$/),\n * and (for bots) must end with `_by_<bot username>`\n * (`<bot username>` is case-insensitive).\n */\n shortName: string\n\n /**\n * Type of the stickers in this set.\n *\n * @default `sticker`, i.e. regular stickers.\n */\n type?: StickerType\n\n /**\n * File source type for the stickers in this set.\n *\n * @default `static`, i.e. regular WEBP stickers.\n */\n sourceType?: StickerSourceType\n\n /**\n * Whether to create \"adaptive\" emoji set.\n *\n * Color of the emoji will be changed depending on the text color.\n * Only works for TGS-based emoji stickers\n */\n adaptive?: boolean\n\n /**\n * List of stickers to be immediately added into the pack.\n * There must be at least one sticker in this list.\n */\n stickers: InputStickerSetItem[]\n\n /**\n * Thumbnail for the set.\n *\n * The file must be either a `.png` file\n * up to 128kb, having size of exactly `100x100` px,\n * or a `.tgs` file up to 32kb.\n *\n * If not set, Telegram will use the first sticker\n * in the sticker set as the thumbnail\n */\n thumb?: InputFileLike\n\n /**\n * Upload progress callback.\n *\n * @param idx Index of the sticker\n * @param uploaded Number of bytes uploaded\n * @param total Total file size\n */\n progressCallback?: (idx: number, uploaded: number, total: number) => void\n }): Promise<StickerSet>\n /**\n * Delete a sticker from a sticker set\n *\n * Only for bots, and the sticker set must\n * have been created by this bot.\n *\n * **Available**: ✅ both users and bots\n *\n * @param sticker\n * TDLib and Bot API compatible File ID, or a\n * TL object representing a sticker to be removed\n * @returns Modfiied sticker set\n */\n deleteStickerFromSet(\n sticker: string | tdFileId.RawFullRemoteFileLocation | tl.TypeInputDocument,\n ): Promise<StickerSet>\n /**\n * Get custom emoji stickers by their IDs\n *\n * **Available**: ✅ both users and bots\n *\n * @param ids IDs of the stickers (as defined in {@link MessageEntity.emojiId})\n */\n getCustomEmojis(ids: tl.Long[]): Promise<Sticker[]>\n /**\n * Given one or more messages, extract all unique custom emojis from it and fetch them\n * **Available**: ✅ both users and bots\n *\n */\n getCustomEmojisFromMessages(messages: MaybeArray<Message>): Promise<Sticker[]>\n /**\n * Get a list of all installed sticker packs\n *\n * > **Note**: This method returns *brief* meta information about\n * > the packs, that does not include the stickers themselves.\n * > Use {@link StickerSet.getFull} or {@link getStickerSet}\n * > to get a stickerset that will include the stickers\n * **Available**: 👤 users only\n *\n */\n getInstalledStickers(): Promise<StickerSet[]>\n /**\n * Get a sticker pack and stickers inside of it.\n *\n * **Available**: ✅ both users and bots\n *\n * @param setId Sticker pack short name, dice emoji, `\"emoji\"` for animated emojis or input ID\n */\n getStickerSet(setId: InputStickerSet): Promise<StickerSet>\n /**\n * Move a sticker in a sticker set\n * to another position\n *\n * Only for bots, and the sticker set must\n * have been created by this bot.\n *\n * **Available**: ✅ both users and bots\n *\n * @param sticker\n * TDLib and Bot API compatible File ID, or a\n * TL object representing a sticker to be removed\n * @param position New sticker position (starting from 0)\n * @returns Modfiied sticker set\n */\n moveStickerInSet(\n sticker: string | tdFileId.RawFullRemoteFileLocation | tl.TypeInputDocument,\n position: number,\n ): Promise<StickerSet>\n /**\n * Set group sticker set for a supergroup\n *\n * **Available**: ✅ both users and bots\n *\n * @param setId Sticker set short name or a TL object with input sticker set\n * @param thumb Sticker set thumbnail\n * @param params\n * @returns Modified sticker set\n */\n setChatStickerSet(chatId: InputPeerLike, setId: InputStickerSet): Promise<void>\n /**\n * Set sticker set thumbnail\n *\n * **Available**: ✅ both users and bots\n *\n * @param id Sticker set short name or a TL object with input sticker set\n * @param thumb Sticker set thumbnail\n * @param params\n * @returns Modified sticker set\n */\n setStickerSetThumb(\n id: InputStickerSet,\n thumb: InputFileLike | tl.TypeInputDocument,\n params?: {\n /**\n * Upload progress callback\n *\n * @param uploaded Number of bytes uploaded\n * @param total Total file size\n */\n progressCallback?: (uploaded: number, total: number) => void\n },\n ): Promise<StickerSet>\n /**\n * Check if the current user can post stories as a given peer\n *\n * **Available**: 👤 users only\n *\n * @param peerId Peer ID whose stories to fetch\n * @returns\n * - `true` if the user can post stories\n * - `\"need_admin\"` if the user is not an admin in the chat\n * - `\"need_boosts\"` if the channel doesn't have enough boosts\n */\n canSendStory(peerId: InputPeerLike): Promise<CanSendStoryResult>\n /**\n * Delete a story\n *\n * **Available**: 👤 users only\n *\n * @returns IDs of stories that were removed\n */\n deleteStories(params: {\n /**\n * Story IDs to delete\n */\n ids: MaybeArray<number>\n\n /**\n * Peer ID whose stories to delete\n *\n * @default `self`\n */\n peer?: InputPeerLike\n }): Promise<number[]>\n /**\n * Edit a sent story\n *\n * **Available**: 👤 users only\n *\n * @returns Edited story\n */\n editStory(params: {\n /**\n * Story ID to edit\n */\n id: number\n\n /**\n * Peer ID to whose story to edit\n *\n * @default `self`\n */\n peer?: InputPeerLike\n\n /**\n * Media contained in a story. Currently can only be a photo or a video.\n */\n media?: InputMediaLike\n\n /**\n * Override caption for {@link media}\n */\n caption?: InputText\n\n /**\n * Interactive elements to add to the story\n */\n interactiveElements?: tl.TypeMediaArea[]\n\n /**\n * Privacy rules to apply to the story\n *\n * @default \"Everyone\"\n */\n privacyRules?: InputPrivacyRule[]\n }): Promise<Story>\n /**\n * Get all stories (e.g. to load the top bar)\n * **Available**: 👤 users only\n *\n */\n getAllStories(params?: {\n /**\n * Offset from which to fetch stories\n */\n offset?: string\n\n /**\n * Whether to fetch stories from \"archived\" (or \"hidden\") peers\n */\n archived?: boolean\n }): Promise<AllStories>\n /**\n * Get stories of a given peer\n *\n * **Available**: 👤 users only\n *\n * @param peerId Peer ID whose stories to fetch\n */\n getPeerStories(peerId: InputPeerLike): Promise<PeerStories>\n /**\n * Get profile stories\n * **Available**: 👤 users only\n *\n */\n getProfileStories(\n peerId: InputPeerLike,\n params?: {\n /**\n * Kind of stories to fetch\n * - `pinned` - stories pinned to the profile and visible to everyone\n * - `archived` - \"archived\" stories that can later be pinned, only visible to the owner\n *\n * @default `pinned`\n */\n kind?: 'pinned' | 'archived'\n\n /**\n * Offset ID for pagination\n */\n offsetId?: number\n\n /**\n * Maximum number of stories to fetch\n *\n * @default 100\n */\n limit?: number\n },\n ): Promise<ArrayPaginated<Story, number>>\n /**\n * Get one or more stories by their IDs\n *\n * **Available**: 👤 users only\n *\n * @param peerId Peer ID whose stories to fetch\n * @param storyIds Story IDs\n */\n getStoriesById(peerId: InputPeerLike, storyIds: MaybeArray<number>): Promise<Story[]>\n /**\n * Get brief information about stories interactions.\n *\n * The result will be in the same order as the input IDs\n * **Available**: 👤 users only\n *\n */\n getStoriesInteractions(peerId: InputPeerLike, storyIds: MaybeArray<number>): Promise<StoryInteractions[]>\n /**\n * Generate a link to a story.\n *\n * Basically the link format is `t.me/<username>/s/<story_id>`,\n * and if the user doesn't have a username, `USER_PUBLIC_MISSING` is thrown.\n *\n * I have no idea why is this an RPC call, but whatever\n * **Available**: 👤 users only\n *\n */\n getStoryLink(peerId: InputPeerLike, storyId: number): Promise<string>\n /**\n * Get viewers list of a story\n * **Available**: 👤 users only\n *\n */\n getStoryViewers(\n peerId: InputPeerLike,\n storyId: number,\n params?: {\n /**\n * Whether to only fetch viewers from contacts\n */\n onlyContacts?: boolean\n\n /**\n * How to sort the results?\n * - `reaction` - by reaction (viewers who has reacted are first), then by date (newest first)\n * - `date` - by date, newest first\n *\n * @default `reaction`\n */\n sortBy?: 'reaction' | 'date'\n\n /**\n * Search query\n */\n query?: string\n\n /**\n * Offset ID for pagination\n */\n offset?: string\n\n /**\n * Maximum number of viewers to fetch\n *\n * @default 100\n */\n limit?: number\n },\n ): Promise<StoryViewersList>\n /**\n * Hide own stories views (activate so called \"stealth mode\")\n *\n * Currently has a cooldown of 1 hour, and throws FLOOD_WAIT error if it is on cooldown.\n * **Available**: 👤 users only\n *\n */\n hideMyStoriesViews(params?: {\n /**\n * Whether to hide views from the last 5 minutes\n *\n * @default true\n */\n past?: boolean\n\n /**\n * Whether to hide views for the next 25 minutes\n *\n * @default true\n */\n future?: boolean\n }): Promise<StoriesStealthMode>\n /**\n * Increment views of one or more stories.\n *\n * This should be used for pinned stories, as they can't\n * be marked as read when the user sees them ({@link Story#isActive} == false)\n *\n * **Available**: 👤 users only\n *\n * @param peerId Peer ID whose stories to mark as read\n * @param ids ID(s) of the stories to increment views of (max 200)\n */\n incrementStoriesViews(peerId: InputPeerLike, ids: MaybeArray<number>): Promise<void>\n /**\n * Iterate over all stories (e.g. to load the top bar)\n *\n * Wrapper over {@link getAllStories}\n * **Available**: ✅ both users and bots\n *\n */\n iterAllStories(\n params?: Parameters<typeof getAllStories>[1] & {\n /**\n * Maximum number of stories to fetch\n *\n * @default Infinity\n */\n limit?: number\n },\n ): AsyncIterableIterator<PeerStories>\n /**\n * Iterate over profile stories. Wrapper over {@link getProfileStories}\n * **Available**: ✅ both users and bots\n *\n */\n iterProfileStories(\n peerId: InputPeerLike,\n params?: Parameters<typeof getProfileStories>[2] & {\n /**\n * Total number of stories to fetch\n *\n * @default `Infinity`, i.e. fetch all stories\n */\n limit?: number\n\n /**\n * Number of stories to fetch per request.\n * Usually you shouldn't care about this.\n *\n * @default 100\n */\n chunkSize?: number\n },\n ): AsyncIterableIterator<Story>\n /**\n * Iterate over viewers list of a story.\n * Wrapper over {@link getStoryViewers}\n * **Available**: ✅ both users and bots\n *\n */\n iterStoryViewers(\n peerId: InputPeerLike,\n storyId: number,\n params?: Parameters<typeof getStoryViewers>[3] & {\n /**\n * Total number of viewers to fetch\n *\n * @default Infinity, i.e. fetch all viewers\n */\n limit?: number\n\n /**\n * Number of viewers to fetch per request.\n * Usually you don't need to change this.\n *\n * @default 100\n */\n chunkSize?: number\n },\n ): AsyncIterableIterator<StoryViewer>\n /**\n * Mark all stories up to a given ID as read\n *\n * This should only be used for \"active\" stories ({@link Story#isActive} == false)\n *\n * **Available**: 👤 users only\n *\n * @param peerId Peer ID whose stories to mark as read\n * @returns IDs of the stores that were marked as read\n */\n readStories(peerId: InputPeerLike, maxId: number): Promise<number[]>\n /**\n * Report a story (or multiple stories) to the moderation team\n * **Available**: 👤 users only\n *\n */\n reportStory(\n peerId: InputPeerLike,\n storyIds: MaybeArray<number>,\n params?: {\n /**\n * Reason for reporting\n *\n * @default inputReportReasonSpam\n */\n reason?: tl.TypeReportReason\n\n /**\n * Additional comment to the report\n */\n message?: string\n },\n ): Promise<void>\n /**\n * Send (or remove) a reaction to a story\n * **Available**: 👤 users only\n *\n */\n sendStoryReaction(params: {\n peerId: InputPeerLike\n storyId: number\n reaction: InputReaction\n /**\n * Whether to add this reaction to recently used\n */\n addToRecent?: boolean\n }): Promise<void>\n /**\n * Send a story\n *\n * **Available**: 👤 users only\n *\n * @returns Created story\n */\n sendStory(params: {\n /**\n * Peer ID to send story as\n *\n * @default `self`\n */\n peer?: InputPeerLike\n\n /**\n * Media contained in a story. Currently can only be a photo or a video.\n *\n * You can also pass TDLib and Bot API compatible File ID,\n * which will be wrapped in {@link InputMedia.auto}\n */\n media: InputMediaLike | string\n\n /**\n * Override caption for {@link media}\n */\n caption?: InputText\n\n /**\n * Whether to automatically pin this story to the profile\n */\n pinned?: boolean\n\n /**\n * Whether to disallow sharing this story\n */\n forbidForwards?: boolean\n\n /**\n * Interactive elements to add to the story\n */\n interactiveElements?: tl.TypeMediaArea[]\n\n /**\n * Privacy rules to apply to the story\n *\n * @default \"Everyone\"\n */\n privacyRules?: InputPrivacyRule[]\n\n /**\n * TTL period of the story, in seconds\n *\n * @default 86400\n */\n period?: number\n }): Promise<Story>\n /**\n * Toggle whether peer's stories are archived (hidden) or not.\n *\n * This **does not** archive the chat with that peer, only stories.\n * **Available**: 👤 users only\n *\n */\n togglePeerStoriesArchived(peerId: InputPeerLike, archived: boolean): Promise<void>\n /**\n * Toggle one or more stories pinned status\n *\n * **Available**: 👤 users only\n *\n * @returns IDs of stories that were toggled\n */\n toggleStoriesPinned(params: {\n /**\n * Story ID(s) to toggle\n */\n ids: MaybeArray<number>\n\n /**\n * Whether to pin or unpin the story\n */\n pinned: boolean\n\n /**\n * Peer ID whose stories to toggle\n *\n * @default `self`\n */\n peer?: InputPeerLike\n }): Promise<number[]>\n /**\n * Block a user\n *\n * **Available**: 👤 users only\n *\n * @param id User ID, username or phone number\n */\n blockUser(id: InputPeerLike): Promise<void>\n /**\n * Delete your own profile photos\n *\n * **Available**: 👤 users only\n *\n * @param ids ID(s) of the photos. Can be file IDs or raw TL objects\n */\n deleteProfilePhotos(ids: MaybeArray<string | tl.TypeInputPhoto>): Promise<void>\n /**\n * Edit \"close friends\" list directly using user IDs\n *\n * **Available**: 👤 users only\n *\n * @param ids User IDs\n */\n editCloseFriendsRaw(ids: number[]): Promise<void>\n /**\n * Edit \"close friends\" list using `InputPeerLike`s\n *\n * **Available**: 👤 users only\n *\n * @param ids User IDs\n */\n editCloseFriends(ids: InputPeerLike[]): Promise<void>\n /**\n * Get a list of common chats you have with a given user\n *\n * **Available**: 👤 users only\n *\n * @param userId User's ID, username or phone number\n * @throws MtInvalidPeerTypeError\n */\n getCommonChats(userId: InputPeerLike): Promise<Chat[]>\n /**\n * Gets the current default value of the Time-To-Live setting, applied to all new chats.\n * **Available**: ✅ both users and bots\n *\n */\n getGlobalTtl(): Promise<number>\n /**\n * Get currently authorized user's full information\n * **Available**: ✅ both users and bots\n *\n */\n getMe(): Promise<User>\n /**\n * Get currently authorized user's username.\n *\n * This method uses locally available information and\n * does not call any API methods.\n * **Available**: ✅ both users and bots\n *\n */\n getMyUsername(): Promise<string | null>\n /**\n * Get a single profile picture of a user by its ID\n *\n * **Available**: ✅ both users and bots\n *\n * @param userId User ID, username, phone number, `\"me\"` or `\"self\"`\n * @param photoId ID of the photo to fetch\n * @param params\n */\n getProfilePhoto(userId: InputPeerLike, photoId: tl.Long): Promise<Photo>\n /**\n * Get a list of profile pictures of a user\n *\n * **Available**: ✅ both users and bots\n *\n * @param userId User ID, username, phone number, `\"me\"` or `\"self\"`\n * @param params\n */\n getProfilePhotos(\n userId: InputPeerLike,\n params?: {\n /**\n * Offset from which to fetch.\n *\n * @default `0`\n */\n offset?: number\n\n /**\n * Maximum number of items to fetch (up to 100)\n *\n * @default `100`\n */\n limit?: number\n },\n ): Promise<ArrayPaginated<Photo, number>>\n /**\n * Get information about multiple users.\n * You can retrieve up to 200 users at once.\n *\n * Note that order is not guaranteed.\n *\n * **Available**: ✅ both users and bots\n *\n * @param ids Users' identifiers. Can be ID, username, phone number, `\"me\"`, `\"self\"` or TL object\n */\n getUsers(ids: MaybeArray<InputPeerLike>): Promise<(User | null)[]>\n /**\n * Iterate over profile photos\n *\n * **Available**: ✅ both users and bots\n *\n * @param userId User ID, username, phone number, `\"me\"` or `\"self\"`\n * @param params\n */\n iterProfilePhotos(\n userId: InputPeerLike,\n params?: Parameters<typeof getProfilePhotos>[2] & {\n /**\n * Maximum number of items to fetch\n *\n * @default `Infinity`, i.e. all items are fetched\n */\n limit?: number\n\n /**\n * Size of chunks which are fetched. Usually not needed.\n *\n * @default 100\n */\n chunkSize?: number\n },\n ): AsyncIterableIterator<Photo>\n /**\n * Get multiple `InputPeer`s at once,\n * while also normalizing and removing\n * peers that can't be normalized to that type.\n *\n * Uses async pool internally, with a concurrent limit of 8\n *\n * @param peerIds Peer Ids\n * @param normalizer Normalization function\n */\n resolvePeerMany<T extends tl.TypeInputPeer | tl.TypeInputUser | tl.TypeInputChannel>(\n peerIds: InputPeerLike[],\n normalizer: (obj: tl.TypeInputPeer) => T | null,\n ): Promise<T[]>\n /**\n * Get multiple `InputPeer`s at once.\n *\n * Uses async pool internally, with a concurrent limit of 8\n *\n * @param peerIds Peer Ids\n */\n resolvePeerMany(peerIds: InputPeerLike[]): Promise<tl.TypeInputPeer[]>\n\n /**\n * Get the `InputPeer` of a known peer id.\n * Useful when an `InputPeer` is needed in Raw API.\n *\n * **Available**: ✅ both users and bots\n *\n * @param peerId The peer identifier that you want to extract the `InputPeer` from.\n * @param [force=false] Whether to force re-fetch the peer from the server (only for usernames and phone numbers)\n */\n resolvePeer(peerId: InputPeerLike, force?: boolean): Promise<tl.TypeInputPeer>\n /**\n * Shorthand for `resolvePeer` that converts the input peer to `InputUser`.\n * **Available**: ✅ both users and bots\n *\n */\n resolveUser(peerId: InputPeerLike, force?: boolean): Promise<tl.TypeInputUser>\n /**\n * Shorthand for `resolvePeer` that converts the input peer to `InputChannel`.\n * **Available**: ✅ both users and bots\n *\n */\n resolveChannel(peerId: InputPeerLike, force?: boolean): Promise<tl.TypeInputChannel>\n /**\n * Changes the current default value of the Time-To-Live setting,\n * applied to all new chats.\n *\n * **Available**: ✅ both users and bots\n *\n * @param period New TTL period, in seconds (or 0 to disable)\n */\n setGlobalTtl(period: number): Promise<void>\n /**\n * Set an emoji status for the current user\n *\n * **Available**: 👤 users only\n *\n * @param emoji Custom emoji ID or `null` to remove the emoji\n */\n setMyEmojiStatus(\n emoji: tl.Long | null,\n params?: {\n /**\n * Date when the emoji status should expire (only if `emoji` is not `null`)\n */\n until?: number | Date\n },\n ): Promise<void>\n /**\n * Set a new profile photo or video for the current user.\n *\n * You can also pass a file ID or an InputPhoto to re-use existing photo.\n * **Available**: ✅ both users and bots\n *\n */\n setMyProfilePhoto(params: {\n /** Media type (photo or video) */\n type: 'photo' | 'video'\n /** Input media file */\n media: InputFileLike | tl.TypeInputPhoto\n /** When `type = video`, timestamp in seconds which will be shown as a static preview. */\n previewSec?: number\n }): Promise<Photo>\n /**\n * Change username of the current user.\n *\n * Note that bots usernames must be changed through\n * bot support or re-created from scratch.\n *\n * **Available**: 👤 users only\n *\n * @param username New username (5-32 chars, allowed chars: `a-zA-Z0-9_`), or `null` to remove\n */\n setMyUsername(username: string | null): Promise<User>\n /**\n * Change user status to offline or online\n *\n * **Available**: 👤 users only\n *\n * @param [offline=true] Whether the user is currently offline\n */\n setOffline(offline?: boolean): Promise<void>\n /**\n * Unblock a user\n *\n * **Available**: 👤 users only\n *\n * @param id User ID, username or phone number\n */\n unblockUser(id: InputPeerLike): Promise<void>\n /**\n * Update your profile details.\n *\n * Only pass fields that you want to change.\n *\n * **Available**: 👤 users only\n *\n * @param params\n */\n updateProfile(params: {\n /**\n * New first name\n */\n firstName?: string\n\n /**\n * New last name. Pass `''` (empty string) to remove it\n */\n lastName?: string\n\n /**\n * New bio (max 70 chars). Pass `''` (empty string) to remove it\n */\n bio?: string\n }): Promise<User>\n}\n\nexport type { TelegramClientOptions }\n\nexport class TelegramClient extends EventEmitter implements ITelegramClient {\n _client: ITelegramClient\n constructor(opts: TelegramClientOptions) {\n super()\n\n if ('client' in opts) {\n this._client = opts.client\n } else {\n let storage: ITelegramStorageProvider\n\n if (typeof opts.storage === 'string') {\n storage = _defaultStorageFactory(opts.storage)\n } else if (!opts.storage) {\n storage = new MemoryStorage()\n } else {\n storage = opts.storage\n }\n\n this._client = new BaseTelegramClient({\n ...opts,\n storage,\n })\n }\n\n // @ts-expect-error codegen\n this.log = this._client.log\n // @ts-expect-error codegen\n this.storage = this._client.storage\n\n const skipConversationUpdates = opts.skipConversationUpdates ?? true\n const { messageGroupingInterval } = opts.updates ?? {}\n\n this._client.onUpdate(\n makeParsedUpdateHandler({\n messageGroupingInterval,\n onUpdate: (update) => {\n if (Conversation.handleUpdate(this._client, update) && skipConversationUpdates) return\n\n this.emit('update', update)\n this.emit(update.name, update.data)\n },\n onRawUpdate: (update, peers) => {\n this.emit('raw_update', update, peers)\n },\n }),\n )\n }\n}\n\nTelegramClient.prototype.checkPassword = function (...args) {\n return checkPassword(this._client, ...args)\n}\nTelegramClient.prototype.getPasswordHint = function (...args) {\n return getPasswordHint(this._client, ...args)\n}\nTelegramClient.prototype.logOut = function (...args) {\n return logOut(this._client, ...args)\n}\nTelegramClient.prototype.recoverPassword = function (...args) {\n return recoverPassword(this._client, ...args)\n}\nTelegramClient.prototype.resendCode = function (...args) {\n return resendCode(this._client, ...args)\n}\nTelegramClient.prototype.run = function (...args) {\n return run(this._client, ...args)\n}\nTelegramClient.prototype.sendCode = function (...args) {\n return sendCode(this._client, ...args)\n}\nTelegramClient.prototype.sendRecoveryCode = function (...args) {\n return sendRecoveryCode(this._client, ...args)\n}\nTelegramClient.prototype.signInBot = function (...args) {\n return signInBot(this._client, ...args)\n}\nTelegramClient.prototype.signIn = function (...args) {\n return signIn(this._client, ...args)\n}\nTelegramClient.prototype.startTest = function (...args) {\n return startTest(this._client, ...args)\n}\nTelegramClient.prototype.start = function (...args) {\n return start(this._client, ...args)\n}\nTelegramClient.prototype.isSelfPeer = function (...args) {\n return isSelfPeer(this._client, ...args)\n}\nTelegramClient.prototype.answerCallbackQuery = function (...args) {\n return answerCallbackQuery(this._client, ...args)\n}\nTelegramClient.prototype.answerInlineQuery = function (...args) {\n return answerInlineQuery(this._client, ...args)\n}\nTelegramClient.prototype.answerPreCheckoutQuery = function (...args) {\n return answerPreCheckoutQuery(this._client, ...args)\n}\nTelegramClient.prototype.deleteMyCommands = function (...args) {\n return deleteMyCommands(this._client, ...args)\n}\nTelegramClient.prototype.getBotInfo = function (...args) {\n return getBotInfo(this._client, ...args)\n}\nTelegramClient.prototype.getBotMenuButton = function (...args) {\n return getBotMenuButton(this._client, ...args)\n}\nTelegramClient.prototype.getCallbackAnswer = function (...args) {\n return getCallbackAnswer(this._client, ...args)\n}\nTelegramClient.prototype.getGameHighScores = function (...args) {\n return getGameHighScores(this._client, ...args)\n}\nTelegramClient.prototype.getInlineGameHighScores = function (...args) {\n return getInlineGameHighScores(this._client, ...args)\n}\nTelegramClient.prototype.getMyCommands = function (...args) {\n return getMyCommands(this._client, ...args)\n}\nTelegramClient.prototype.setBotInfo = function (...args) {\n return setBotInfo(this._client, ...args)\n}\nTelegramClient.prototype.setBotMenuButton = function (...args) {\n return setBotMenuButton(this._client, ...args)\n}\nTelegramClient.prototype.setGameScore = function (...args) {\n return setGameScore(this._client, ...args)\n}\nTelegramClient.prototype.setInlineGameScore = function (...args) {\n return setInlineGameScore(this._client, ...args)\n}\nTelegramClient.prototype.setMyCommands = function (...args) {\n return setMyCommands(this._client, ...args)\n}\nTelegramClient.prototype.setMyDefaultRights = function (...args) {\n return setMyDefaultRights(this._client, ...args)\n}\nTelegramClient.prototype.addChatMembers = function (...args) {\n return addChatMembers(this._client, ...args)\n}\nTelegramClient.prototype.archiveChats = function (...args) {\n return archiveChats(this._client, ...args)\n}\nTelegramClient.prototype.banChatMember = function (...args) {\n return banChatMember(this._client, ...args)\n}\nTelegramClient.prototype.createChannel = function (...args) {\n return createChannel(this._client, ...args)\n}\nTelegramClient.prototype.createGroup = function (...args) {\n return createGroup(this._client, ...args)\n}\nTelegramClient.prototype.createSupergroup = function (...args) {\n return createSupergroup(this._client, ...args)\n}\nTelegramClient.prototype.deleteChannel = function (...args) {\n return deleteChannel(this._client, ...args)\n}\nTelegramClient.prototype.deleteSupergroup = function (...args) {\n return deleteChannel(this._client, ...args)\n}\nTelegramClient.prototype.deleteChatPhoto = function (...args) {\n return deleteChatPhoto(this._client, ...args)\n}\nTelegramClient.prototype.deleteGroup = function (...args) {\n return deleteGroup(this._client, ...args)\n}\nTelegramClient.prototype.deleteHistory = function (...args) {\n return deleteHistory(this._client, ...args)\n}\nTelegramClient.prototype.deleteUserHistory = function (...args) {\n return deleteUserHistory(this._client, ...args)\n}\nTelegramClient.prototype.editAdminRights = function (...args) {\n return editAdminRights(this._client, ...args)\n}\nTelegramClient.prototype.getChatEventLog = function (...args) {\n return getChatEventLog(this._client, ...args)\n}\nTelegramClient.prototype.getChatMember = function (...args) {\n return getChatMember(this._client, ...args)\n}\nTelegramClient.prototype.getChatMembers = function (...args) {\n return getChatMembers(this._client, ...args)\n}\nTelegramClient.prototype.getChatPreview = function (...args) {\n return getChatPreview(this._client, ...args)\n}\nTelegramClient.prototype.getChat = function (...args) {\n return getChat(this._client, ...args)\n}\nTelegramClient.prototype.getFullChat = function (...args) {\n return getFullChat(this._client, ...args)\n}\nTelegramClient.prototype.getNearbyChats = function (...args) {\n return getNearbyChats(this._client, ...args)\n}\nTelegramClient.prototype.getSimilarChannels = function (...args) {\n return getSimilarChannels(this._client, ...args)\n}\nTelegramClient.prototype.iterChatEventLog = function (...args) {\n return iterChatEventLog(this._client, ...args)\n}\nTelegramClient.prototype.iterChatMembers = function (...args) {\n return iterChatMembers(this._client, ...args)\n}\nTelegramClient.prototype.joinChat = function (...args) {\n return joinChat(this._client, ...args)\n}\nTelegramClient.prototype.kickChatMember = function (...args) {\n return kickChatMember(this._client, ...args)\n}\nTelegramClient.prototype.leaveChat = function (...args) {\n return leaveChat(this._client, ...args)\n}\nTelegramClient.prototype.markChatUnread = function (...args) {\n return markChatUnread(this._client, ...args)\n}\nTelegramClient.prototype.openChat = function (...args) {\n return openChat(this._client, ...args)\n}\nTelegramClient.prototype.closeChat = function (...args) {\n return closeChat(this._client, ...args)\n}\nTelegramClient.prototype.reorderUsernames = function (...args) {\n return reorderUsernames(this._client, ...args)\n}\nTelegramClient.prototype.restrictChatMember = function (...args) {\n return restrictChatMember(this._client, ...args)\n}\nTelegramClient.prototype.saveDraft = function (...args) {\n return saveDraft(this._client, ...args)\n}\nTelegramClient.prototype.setChatColor = function (...args) {\n return setChatColor(this._client, ...args)\n}\nTelegramClient.prototype.setChatDefaultPermissions = function (...args) {\n return setChatDefaultPermissions(this._client, ...args)\n}\nTelegramClient.prototype.setChatDescription = function (...args) {\n return setChatDescription(this._client, ...args)\n}\nTelegramClient.prototype.setChatPhoto = function (...args) {\n return setChatPhoto(this._client, ...args)\n}\nTelegramClient.prototype.setChatTitle = function (...args) {\n return setChatTitle(this._client, ...args)\n}\nTelegramClient.prototype.setChatTtl = function (...args) {\n return setChatTtl(this._client, ...args)\n}\nTelegramClient.prototype.setChatUsername = function (...args) {\n return setChatUsername(this._client, ...args)\n}\nTelegramClient.prototype.setSlowMode = function (...args) {\n return setSlowMode(this._client, ...args)\n}\nTelegramClient.prototype.toggleContentProtection = function (...args) {\n return toggleContentProtection(this._client, ...args)\n}\nTelegramClient.prototype.toggleFragmentUsername = function (...args) {\n return toggleFragmentUsername(this._client, ...args)\n}\nTelegramClient.prototype.toggleJoinRequests = function (...args) {\n return toggleJoinRequests(this._client, ...args)\n}\nTelegramClient.prototype.toggleJoinToSend = function (...args) {\n return toggleJoinToSend(this._client, ...args)\n}\nTelegramClient.prototype.unarchiveChats = function (...args) {\n return unarchiveChats(this._client, ...args)\n}\nTelegramClient.prototype.unbanChatMember = function (...args) {\n return unbanChatMember(this._client, ...args)\n}\nTelegramClient.prototype.unrestrictChatMember = function (...args) {\n return unbanChatMember(this._client, ...args)\n}\nTelegramClient.prototype.addContact = function (...args) {\n return addContact(this._client, ...args)\n}\nTelegramClient.prototype.deleteContacts = function (...args) {\n return deleteContacts(this._client, ...args)\n}\nTelegramClient.prototype.getContacts = function (...args) {\n return getContacts(this._client, ...args)\n}\nTelegramClient.prototype.importContacts = function (...args) {\n return importContacts(this._client, ...args)\n}\nTelegramClient.prototype.createFolder = function (...args) {\n return createFolder(this._client, ...args)\n}\nTelegramClient.prototype.deleteFolder = function (...args) {\n return deleteFolder(this._client, ...args)\n}\nTelegramClient.prototype.editFolder = function (...args) {\n return editFolder(this._client, ...args)\n}\nTelegramClient.prototype.findFolder = function (...args) {\n return findFolder(this._client, ...args)\n}\nTelegramClient.prototype.getFolders = function (...args) {\n return getFolders(this._client, ...args)\n}\nTelegramClient.prototype.getPeerDialogs = function (...args) {\n return getPeerDialogs(this._client, ...args)\n}\nTelegramClient.prototype.iterDialogs = function (...args) {\n return iterDialogs(this._client, ...args)\n}\nTelegramClient.prototype.setFoldersOrder = function (...args) {\n return setFoldersOrder(this._client, ...args)\n}\nTelegramClient.prototype.downloadAsBuffer = function (...args) {\n return downloadAsBuffer(this._client, ...args)\n}\nTelegramClient.prototype.downloadToFile = function (...args) {\n return downloadToFile(this._client, ...args)\n}\nTelegramClient.prototype.downloadAsIterable = function (...args) {\n return downloadAsIterable(this._client, ...args)\n}\nTelegramClient.prototype.downloadAsStream = function (...args) {\n return downloadAsStream(this._client, ...args)\n}\nTelegramClient.prototype._normalizeInputFile = function (...args) {\n return _normalizeInputFile(this._client, ...args)\n}\nTelegramClient.prototype._normalizeInputMedia = function (...args) {\n return _normalizeInputMedia(this._client, ...args)\n}\nTelegramClient.prototype.uploadFile = function (...args) {\n return uploadFile(this._client, ...args)\n}\nTelegramClient.prototype.uploadMedia = function (...args) {\n return uploadMedia(this._client, ...args)\n}\nTelegramClient.prototype.createForumTopic = function (...args) {\n return createForumTopic(this._client, ...args)\n}\nTelegramClient.prototype.deleteForumTopicHistory = function (...args) {\n return deleteForumTopicHistory(this._client, ...args)\n}\nTelegramClient.prototype.editForumTopic = function (...args) {\n return editForumTopic(this._client, ...args)\n}\nTelegramClient.prototype.getForumTopicsById = function (...args) {\n return getForumTopicsById(this._client, ...args)\n}\nTelegramClient.prototype.getForumTopics = function (...args) {\n return getForumTopics(this._client, ...args)\n}\nTelegramClient.prototype.iterForumTopics = function (...args) {\n return iterForumTopics(this._client, ...args)\n}\nTelegramClient.prototype.reorderPinnedForumTopics = function (...args) {\n return reorderPinnedForumTopics(this._client, ...args)\n}\nTelegramClient.prototype.toggleForumTopicClosed = function (...args) {\n return toggleForumTopicClosed(this._client, ...args)\n}\nTelegramClient.prototype.toggleForumTopicPinned = function (...args) {\n return toggleForumTopicPinned(this._client, ...args)\n}\nTelegramClient.prototype.toggleForum = function (...args) {\n return toggleForum(this._client, ...args)\n}\nTelegramClient.prototype.toggleGeneralTopicHidden = function (...args) {\n return toggleGeneralTopicHidden(this._client, ...args)\n}\nTelegramClient.prototype.createInviteLink = function (...args) {\n return createInviteLink(this._client, ...args)\n}\nTelegramClient.prototype.editInviteLink = function (...args) {\n return editInviteLink(this._client, ...args)\n}\nTelegramClient.prototype.exportInviteLink = function (...args) {\n return exportInviteLink(this._client, ...args)\n}\nTelegramClient.prototype.getInviteLinkMembers = function (...args) {\n return getInviteLinkMembers(this._client, ...args)\n}\nTelegramClient.prototype.getInviteLink = function (...args) {\n return getInviteLink(this._client, ...args)\n}\nTelegramClient.prototype.getInviteLinks = function (...args) {\n return getInviteLinks(this._client, ...args)\n}\nTelegramClient.prototype.getPrimaryInviteLink = function (...args) {\n return getPrimaryInviteLink(this._client, ...args)\n}\nTelegramClient.prototype.hideAllJoinRequests = function (...args) {\n return hideAllJoinRequests(this._client, ...args)\n}\nTelegramClient.prototype.hideJoinRequest = function (...args) {\n return hideJoinRequest(this._client, ...args)\n}\nTelegramClient.prototype.iterInviteLinkMembers = function (...args) {\n return iterInviteLinkMembers(this._client, ...args)\n}\nTelegramClient.prototype.iterInviteLinks = function (...args) {\n return iterInviteLinks(this._client, ...args)\n}\nTelegramClient.prototype.revokeInviteLink = function (...args) {\n return revokeInviteLink(this._client, ...args)\n}\nTelegramClient.prototype.closePoll = function (...args) {\n return closePoll(this._client, ...args)\n}\nTelegramClient.prototype.deleteMessagesById = function (...args) {\n return deleteMessagesById(this._client, ...args)\n}\nTelegramClient.prototype.deleteMessages = function (...args) {\n return deleteMessages(this._client, ...args)\n}\nTelegramClient.prototype.deleteScheduledMessages = function (...args) {\n return deleteScheduledMessages(this._client, ...args)\n}\nTelegramClient.prototype.editInlineMessage = function (...args) {\n return editInlineMessage(this._client, ...args)\n}\nTelegramClient.prototype.editMessage = function (...args) {\n return editMessage(this._client, ...args)\n}\nTelegramClient.prototype.forwardMessagesById = function (...args) {\n return forwardMessagesById(this._client, ...args)\n}\nTelegramClient.prototype.forwardMessages = function (...args) {\n return forwardMessages(this._client, ...args)\n}\nTelegramClient.prototype.getCallbackQueryMessage = function (...args) {\n return getCallbackQueryMessage(this._client, ...args)\n}\nTelegramClient.prototype.getDiscussionMessage = function (...args) {\n return getDiscussionMessage(this._client, ...args)\n}\nTelegramClient.prototype.getHistory = function (...args) {\n return getHistory(this._client, ...args)\n}\nTelegramClient.prototype.getMessageByLink = function (...args) {\n return getMessageByLink(this._client, ...args)\n}\nTelegramClient.prototype.getMessageGroup = function (...args) {\n return getMessageGroup(this._client, ...args)\n}\nTelegramClient.prototype.getMessageReactionsById = function (...args) {\n return getMessageReactionsById(this._client, ...args)\n}\nTelegramClient.prototype.getMessageReactions = function (...args) {\n return getMessageReactions(this._client, ...args)\n}\nTelegramClient.prototype.getMessagesUnsafe = function (...args) {\n return getMessagesUnsafe(this._client, ...args)\n}\nTelegramClient.prototype.getMessages = function (...args) {\n return getMessages(this._client, ...args)\n}\nTelegramClient.prototype.getReactionUsers = function (...args) {\n return getReactionUsers(this._client, ...args)\n}\nTelegramClient.prototype.getReplyTo = function (...args) {\n return getReplyTo(this._client, ...args)\n}\nTelegramClient.prototype.getScheduledMessages = function (...args) {\n return getScheduledMessages(this._client, ...args)\n}\nTelegramClient.prototype.iterHistory = function (...args) {\n return iterHistory(this._client, ...args)\n}\nTelegramClient.prototype.iterReactionUsers = function (...args) {\n return iterReactionUsers(this._client, ...args)\n}\nTelegramClient.prototype.iterSearchGlobal = function (...args) {\n return iterSearchGlobal(this._client, ...args)\n}\nTelegramClient.prototype.iterSearchMessages = function (...args) {\n return iterSearchMessages(this._client, ...args)\n}\nTelegramClient.prototype.pinMessage = function (...args) {\n return pinMessage(this._client, ...args)\n}\nTelegramClient.prototype.readHistory = function (...args) {\n return readHistory(this._client, ...args)\n}\nTelegramClient.prototype.readReactions = function (...args) {\n return readReactions(this._client, ...args)\n}\nTelegramClient.prototype.searchGlobal = function (...args) {\n return searchGlobal(this._client, ...args)\n}\nTelegramClient.prototype.searchMessages = function (...args) {\n return searchMessages(this._client, ...args)\n}\nTelegramClient.prototype.answerText = function (...args) {\n return answerText(this._client, ...args)\n}\nTelegramClient.prototype.answerMedia = function (...args) {\n return answerMedia(this._client, ...args)\n}\nTelegramClient.prototype.answerMediaGroup = function (...args) {\n return answerMediaGroup(this._client, ...args)\n}\nTelegramClient.prototype.commentText = function (...args) {\n return commentText(this._client, ...args)\n}\nTelegramClient.prototype.commentMedia = function (...args) {\n return commentMedia(this._client, ...args)\n}\nTelegramClient.prototype.commentMediaGroup = function (...args) {\n return commentMediaGroup(this._client, ...args)\n}\nTelegramClient.prototype.sendCopyGroup = function (...args) {\n return sendCopyGroup(this._client, ...args)\n}\nTelegramClient.prototype.sendCopy = function (...args) {\n return sendCopy(this._client, ...args)\n}\nTelegramClient.prototype.sendMediaGroup = function (...args) {\n return sendMediaGroup(this._client, ...args)\n}\nTelegramClient.prototype.sendMedia = function (...args) {\n return sendMedia(this._client, ...args)\n}\nTelegramClient.prototype.quoteWithText = function (...args) {\n return quoteWithText(this._client, ...args)\n}\nTelegramClient.prototype.quoteWithMedia = function (...args) {\n return quoteWithMedia(this._client, ...args)\n}\nTelegramClient.prototype.quoteWithMediaGroup = function (...args) {\n return quoteWithMediaGroup(this._client, ...args)\n}\nTelegramClient.prototype.sendReaction = function (...args) {\n return sendReaction(this._client, ...args)\n}\nTelegramClient.prototype.replyText = function (...args) {\n return replyText(this._client, ...args)\n}\nTelegramClient.prototype.replyMedia = function (...args) {\n return replyMedia(this._client, ...args)\n}\nTelegramClient.prototype.replyMediaGroup = function (...args) {\n return replyMediaGroup(this._client, ...args)\n}\nTelegramClient.prototype.sendScheduled = function (...args) {\n return sendScheduled(this._client, ...args)\n}\nTelegramClient.prototype.sendText = function (...args) {\n return sendText(this._client, ...args)\n}\nTelegramClient.prototype.sendTyping = function (...args) {\n return sendTyping(this._client, ...args)\n}\nTelegramClient.prototype.sendVote = function (...args) {\n return sendVote(this._client, ...args)\n}\nTelegramClient.prototype.translateMessage = function (...args) {\n return translateMessage(this._client, ...args)\n}\nTelegramClient.prototype.translateText = function (...args) {\n return translateText(this._client, ...args)\n}\nTelegramClient.prototype.unpinAllMessages = function (...args) {\n return unpinAllMessages(this._client, ...args)\n}\nTelegramClient.prototype.unpinMessage = function (...args) {\n return unpinMessage(this._client, ...args)\n}\nTelegramClient.prototype.initTakeoutSession = function (...args) {\n return initTakeoutSession(this._client, ...args)\n}\nTelegramClient.prototype._normalizePrivacyRules = function (...args) {\n return _normalizePrivacyRules(this._client, ...args)\n}\nTelegramClient.prototype.changeCloudPassword = function (...args) {\n return changeCloudPassword(this._client, ...args)\n}\nTelegramClient.prototype.enableCloudPassword = function (...args) {\n return enableCloudPassword(this._client, ...args)\n}\nTelegramClient.prototype.verifyPasswordEmail = function (...args) {\n return verifyPasswordEmail(this._client, ...args)\n}\nTelegramClient.prototype.resendPasswordEmail = function (...args) {\n return resendPasswordEmail(this._client, ...args)\n}\nTelegramClient.prototype.cancelPasswordEmail = function (...args) {\n return cancelPasswordEmail(this._client, ...args)\n}\nTelegramClient.prototype.removeCloudPassword = function (...args) {\n return removeCloudPassword(this._client, ...args)\n}\nTelegramClient.prototype.applyBoost = function (...args) {\n return applyBoost(this._client, ...args)\n}\nTelegramClient.prototype.canApplyBoost = function (...args) {\n return canApplyBoost(this._client, ...args)\n}\nTelegramClient.prototype.getBoostStats = function (...args) {\n return getBoostStats(this._client, ...args)\n}\nTelegramClient.prototype.getBoosts = function (...args) {\n return getBoosts(this._client, ...args)\n}\nTelegramClient.prototype.getMyBoostSlots = function (...args) {\n return getMyBoostSlots(this._client, ...args)\n}\nTelegramClient.prototype.iterBoosters = function (...args) {\n return iterBoosters(this._client, ...args)\n}\nTelegramClient.prototype.addStickerToSet = function (...args) {\n return addStickerToSet(this._client, ...args)\n}\nTelegramClient.prototype.createStickerSet = function (...args) {\n return createStickerSet(this._client, ...args)\n}\nTelegramClient.prototype.deleteStickerFromSet = function (...args) {\n return deleteStickerFromSet(this._client, ...args)\n}\nTelegramClient.prototype.getCustomEmojis = function (...args) {\n return getCustomEmojis(this._client, ...args)\n}\nTelegramClient.prototype.getCustomEmojisFromMessages = function (...args) {\n return getCustomEmojisFromMessages(this._client, ...args)\n}\nTelegramClient.prototype.getInstalledStickers = function (...args) {\n return getInstalledStickers(this._client, ...args)\n}\nTelegramClient.prototype.getStickerSet = function (...args) {\n return getStickerSet(this._client, ...args)\n}\nTelegramClient.prototype.moveStickerInSet = function (...args) {\n return moveStickerInSet(this._client, ...args)\n}\nTelegramClient.prototype.setChatStickerSet = function (...args) {\n return setChatStickerSet(this._client, ...args)\n}\nTelegramClient.prototype.setStickerSetThumb = function (...args) {\n return setStickerSetThumb(this._client, ...args)\n}\nTelegramClient.prototype.canSendStory = function (...args) {\n return canSendStory(this._client, ...args)\n}\nTelegramClient.prototype.deleteStories = function (...args) {\n return deleteStories(this._client, ...args)\n}\nTelegramClient.prototype.editStory = function (...args) {\n return editStory(this._client, ...args)\n}\nTelegramClient.prototype.getAllStories = function (...args) {\n return getAllStories(this._client, ...args)\n}\nTelegramClient.prototype.getPeerStories = function (...args) {\n return getPeerStories(this._client, ...args)\n}\nTelegramClient.prototype.getProfileStories = function (...args) {\n return getProfileStories(this._client, ...args)\n}\nTelegramClient.prototype.getStoriesById = function (...args) {\n return getStoriesById(this._client, ...args)\n}\nTelegramClient.prototype.getStoriesInteractions = function (...args) {\n return getStoriesInteractions(this._client, ...args)\n}\nTelegramClient.prototype.getStoryLink = function (...args) {\n return getStoryLink(this._client, ...args)\n}\nTelegramClient.prototype.getStoryViewers = function (...args) {\n return getStoryViewers(this._client, ...args)\n}\nTelegramClient.prototype.hideMyStoriesViews = function (...args) {\n return hideMyStoriesViews(this._client, ...args)\n}\nTelegramClient.prototype.incrementStoriesViews = function (...args) {\n return incrementStoriesViews(this._client, ...args)\n}\nTelegramClient.prototype.iterAllStories = function (...args) {\n return iterAllStories(this._client, ...args)\n}\nTelegramClient.prototype.iterProfileStories = function (...args) {\n return iterProfileStories(this._client, ...args)\n}\nTelegramClient.prototype.iterStoryViewers = function (...args) {\n return iterStoryViewers(this._client, ...args)\n}\nTelegramClient.prototype.readStories = function (...args) {\n return readStories(this._client, ...args)\n}\nTelegramClient.prototype.reportStory = function (...args) {\n return reportStory(this._client, ...args)\n}\nTelegramClient.prototype.sendStoryReaction = function (...args) {\n return sendStoryReaction(this._client, ...args)\n}\nTelegramClient.prototype.sendStory = function (...args) {\n return sendStory(this._client, ...args)\n}\nTelegramClient.prototype.togglePeerStoriesArchived = function (...args) {\n return togglePeerStoriesArchived(this._client, ...args)\n}\nTelegramClient.prototype.toggleStoriesPinned = function (...args) {\n return toggleStoriesPinned(this._client, ...args)\n}\nTelegramClient.prototype.blockUser = function (...args) {\n return blockUser(this._client, ...args)\n}\nTelegramClient.prototype.deleteProfilePhotos = function (...args) {\n return deleteProfilePhotos(this._client, ...args)\n}\nTelegramClient.prototype.editCloseFriendsRaw = function (...args) {\n return editCloseFriendsRaw(this._client, ...args)\n}\nTelegramClient.prototype.editCloseFriends = function (...args) {\n return editCloseFriends(this._client, ...args)\n}\nTelegramClient.prototype.getCommonChats = function (...args) {\n return getCommonChats(this._client, ...args)\n}\nTelegramClient.prototype.getGlobalTtl = function (...args) {\n return getGlobalTtl(this._client, ...args)\n}\nTelegramClient.prototype.getMe = function (...args) {\n return getMe(this._client, ...args)\n}\nTelegramClient.prototype.getMyUsername = function (...args) {\n return getMyUsername(this._client, ...args)\n}\nTelegramClient.prototype.getProfilePhoto = function (...args) {\n return getProfilePhoto(this._client, ...args)\n}\nTelegramClient.prototype.getProfilePhotos = function (...args) {\n return getProfilePhotos(this._client, ...args)\n}\nTelegramClient.prototype.getUsers = function (...args) {\n return getUsers(this._client, ...args)\n}\nTelegramClient.prototype.iterProfilePhotos = function (...args) {\n return iterProfilePhotos(this._client, ...args)\n}\n// @ts-expect-error this kinda breaks typings for overloads, idc\nTelegramClient.prototype.resolvePeerMany = function (...args) {\n // @ts-expect-error this kinda breaks typings for overloads, idc\n return resolvePeerMany(this._client, ...args)\n}\nTelegramClient.prototype.resolvePeer = function (...args) {\n return resolvePeer(this._client, ...args)\n}\nTelegramClient.prototype.resolveUser = function (...args) {\n return resolveUser(this._client, ...args)\n}\nTelegramClient.prototype.resolveChannel = function (...args) {\n return resolveChannel(this._client, ...args)\n}\nTelegramClient.prototype.setGlobalTtl = function (...args) {\n return setGlobalTtl(this._client, ...args)\n}\nTelegramClient.prototype.setMyEmojiStatus = function (...args) {\n return setMyEmojiStatus(this._client, ...args)\n}\nTelegramClient.prototype.setMyProfilePhoto = function (...args) {\n return setMyProfilePhoto(this._client, ...args)\n}\nTelegramClient.prototype.setMyUsername = function (...args) {\n return setMyUsername(this._client, ...args)\n}\nTelegramClient.prototype.setOffline = function (...args) {\n return setOffline(this._client, ...args)\n}\nTelegramClient.prototype.unblockUser = function (...args) {\n return unblockUser(this._client, ...args)\n}\nTelegramClient.prototype.updateProfile = function (...args) {\n return updateProfile(this._client, ...args)\n}\nTelegramClient.prototype.prepare = function (...args) {\n return this._client.prepare(...args)\n}\nTelegramClient.prototype.connect = function (...args) {\n return this._client.connect(...args)\n}\nTelegramClient.prototype.close = function (...args) {\n return this._client.close(...args)\n}\nTelegramClient.prototype.notifyLoggedIn = function (...args) {\n return this._client.notifyLoggedIn(...args)\n}\nTelegramClient.prototype.notifyLoggedOut = function (...args) {\n return this._client.notifyLoggedOut(...args)\n}\nTelegramClient.prototype.notifyChannelOpened = function (...args) {\n return this._client.notifyChannelOpened(...args)\n}\nTelegramClient.prototype.notifyChannelClosed = function (...args) {\n return this._client.notifyChannelClosed(...args)\n}\nTelegramClient.prototype.startUpdatesLoop = function (...args) {\n return this._client.startUpdatesLoop(...args)\n}\nTelegramClient.prototype.stopUpdatesLoop = function (...args) {\n return this._client.stopUpdatesLoop(...args)\n}\nTelegramClient.prototype.call = function (...args) {\n return this._client.call(...args)\n}\nTelegramClient.prototype.importSession = function (...args) {\n return this._client.importSession(...args)\n}\nTelegramClient.prototype.exportSession = function (...args) {\n return this._client.exportSession(...args)\n}\nTelegramClient.prototype.onError = function (...args) {\n return this._client.onError(...args)\n}\nTelegramClient.prototype.emitError = function (...args) {\n return this._client.emitError(...args)\n}\nTelegramClient.prototype.handleClientUpdate = function (...args) {\n return this._client.handleClientUpdate(...args)\n}\nTelegramClient.prototype.getApiCrenetials = function (...args) {\n return this._client.getApiCrenetials(...args)\n}\nTelegramClient.prototype.getPoolSize = function (...args) {\n return this._client.getPoolSize(...args)\n}\nTelegramClient.prototype.getPrimaryDcId = function (...args) {\n return this._client.getPrimaryDcId(...args)\n}\nTelegramClient.prototype.computeSrpParams = function (...args) {\n return this._client.computeSrpParams(...args)\n}\nTelegramClient.prototype.computeNewPasswordHash = function (...args) {\n return this._client.computeNewPasswordHash(...args)\n}\nTelegramClient.prototype.onServerUpdate = function () {\n throw new Error('onServerUpdate is not available for TelegramClient, use .on() methods instead')\n}\nTelegramClient.prototype.onUpdate = function () {\n throw new Error('onUpdate is not available for TelegramClient, use .on() methods instead')\n}\n"]}