
// This file is autogenerated. All changes will be overwritten.

import { BigInteger } from 'big-integer';

export default Api;

namespace Api {

  type AnyClass = new (...args: any[]) => any;
  type I<T extends AnyClass> = InstanceType<T>;
  type ValuesOf<T> = T[keyof T];
  type AnyLiteral = Record<string, any>;

  type Reader = any; // To be defined.
  type Client = any; // To be defined.
  type Utils = any; // To be defined.

  type X = unknown;
  type Type = unknown;
  type Bool = boolean;
  type int = number;
  type int128 = number;
  type int256 = number;
  type long = BigInteger;
  type bytes = Buffer;

  class VirtualClass<Args extends AnyLiteral> {
    static CONSTRUCTOR_ID: number;
    static SUBCLASS_OF_ID: number;
    static className: string;
    static classType: 'constructor' | 'request';

    static serializeBytes(data: Buffer | string): Buffer;
    static serializeDate(date: Date | number): Buffer;
    static fromReader(reader: Reader): VirtualClass<Args>;

    CONSTRUCTOR_ID: number;
    SUBCLASS_OF_ID: number;
    className: string;
    classType: 'constructor' | 'request';

    constructor(args: Args);
  }

  class Request<Args, Response> extends VirtualClass<Partial<Args>> {
    static readResult(reader: Reader): Buffer;
    static resolve(client: Client, utils: Utils): Promise<void>;

    __response: Response;
  }

  export type TypeInputPeer = InputPeerEmpty | InputPeerSelf | InputPeerChat | InputPeerUser | InputPeerChannel | InputPeerUserFromMessage | InputPeerChannelFromMessage;
  export type TypeInputUser = InputUserEmpty | InputUserSelf | InputUser | InputUserFromMessage;
  export type TypeInputContact = InputPhoneContact;
  export type TypeInputFile = InputFile | InputFileBig;
  export type TypeInputMedia = InputMediaEmpty | InputMediaUploadedPhoto | InputMediaPhoto | InputMediaGeoPoint | InputMediaContact | InputMediaUploadedDocument | InputMediaDocument | InputMediaVenue | InputMediaPhotoExternal | InputMediaDocumentExternal | InputMediaGame | InputMediaInvoice | InputMediaGeoLive | InputMediaPoll | InputMediaDice;
  export type TypeInputChatPhoto = InputChatPhotoEmpty | InputChatUploadedPhoto | InputChatPhoto;
  export type TypeInputGeoPoint = InputGeoPointEmpty | InputGeoPoint;
  export type TypeInputPhoto = InputPhotoEmpty | InputPhoto;
  export type TypeInputFileLocation = InputFileLocation | InputEncryptedFileLocation | InputDocumentFileLocation | InputSecureFileLocation | InputTakeoutFileLocation | InputPhotoFileLocation | InputPhotoLegacyFileLocation | InputPeerPhotoFileLocation | InputStickerSetThumb | InputGroupCallStream;
  export type TypePeer = PeerUser | PeerChat | PeerChannel;
  export type TypeUser = UserEmpty | User;
  export type TypeUserProfilePhoto = UserProfilePhotoEmpty | UserProfilePhoto;
  export type TypeUserStatus = UserStatusEmpty | UserStatusOnline | UserStatusOffline | UserStatusRecently | UserStatusLastWeek | UserStatusLastMonth;
  export type TypeChat = ChatEmpty | Chat | ChatForbidden | Channel | ChannelForbidden;
  export type TypeChatFull = ChatFull | ChannelFull;
  export type TypeChatParticipant = ChatParticipant | ChatParticipantCreator | ChatParticipantAdmin;
  export type TypeChatParticipants = ChatParticipantsForbidden | ChatParticipants;
  export type TypeChatPhoto = ChatPhotoEmpty | ChatPhoto;
  export type TypeMessage = MessageEmpty | Message | MessageService;
  export type TypeMessageMedia = MessageMediaEmpty | MessageMediaPhoto | MessageMediaGeo | MessageMediaContact | MessageMediaUnsupported | MessageMediaDocument | MessageMediaWebPage | MessageMediaVenue | MessageMediaGame | MessageMediaInvoice | MessageMediaGeoLive | MessageMediaPoll | MessageMediaDice;
  export type TypeMessageAction = MessageActionEmpty | MessageActionChatCreate | MessageActionChatEditTitle | MessageActionChatEditPhoto | MessageActionChatDeletePhoto | MessageActionChatAddUser | MessageActionChatDeleteUser | MessageActionChatJoinedByLink | MessageActionChannelCreate | MessageActionChatMigrateTo | MessageActionChannelMigrateFrom | MessageActionPinMessage | MessageActionHistoryClear | MessageActionGameScore | MessageActionPaymentSentMe | MessageActionPaymentSent | MessageActionPhoneCall | MessageActionScreenshotTaken | MessageActionCustomAction | MessageActionBotAllowed | MessageActionSecureValuesSentMe | MessageActionSecureValuesSent | MessageActionContactSignUp | MessageActionGeoProximityReached | MessageActionGroupCall | MessageActionInviteToGroupCall | MessageActionSetMessagesTTL | MessageActionGroupCallScheduled;
  export type TypeDialog = Dialog | DialogFolder;
  export type TypePhoto = PhotoEmpty | Photo;
  export type TypePhotoSize = PhotoSizeEmpty | PhotoSize | PhotoCachedSize | PhotoStrippedSize | PhotoSizeProgressive | PhotoPathSize;
  export type TypeGeoPoint = GeoPointEmpty | GeoPoint;
  export type TypeInputNotifyPeer = InputNotifyPeer | InputNotifyUsers | InputNotifyChats | InputNotifyBroadcasts;
  export type TypeInputPeerNotifySettings = InputPeerNotifySettings;
  export type TypePeerNotifySettings = PeerNotifySettings;
  export type TypePeerSettings = PeerSettings;
  export type TypeWallPaper = WallPaper | WallPaperNoFile;
  export type TypeReportReason = InputReportReasonSpam | InputReportReasonViolence | InputReportReasonPornography | InputReportReasonChildAbuse | InputReportReasonOther | InputReportReasonCopyright | InputReportReasonGeoIrrelevant | InputReportReasonFake;
  export type TypeUserFull = UserFull;
  export type TypeContact = Contact;
  export type TypeImportedContact = ImportedContact;
  export type TypeContactStatus = ContactStatus;
  export type TypeMessagesFilter = InputMessagesFilterEmpty | InputMessagesFilterPhotos | InputMessagesFilterVideo | InputMessagesFilterPhotoVideo | InputMessagesFilterDocument | InputMessagesFilterUrl | InputMessagesFilterGif | InputMessagesFilterVoice | InputMessagesFilterMusic | InputMessagesFilterChatPhotos | InputMessagesFilterPhoneCalls | InputMessagesFilterRoundVoice | InputMessagesFilterRoundVideo | InputMessagesFilterMyMentions | InputMessagesFilterGeo | InputMessagesFilterContacts | InputMessagesFilterPinned;
  export type TypeUpdate = UpdateNewMessage | UpdateMessageID | UpdateDeleteMessages | UpdateUserTyping | UpdateChatUserTyping | UpdateChatParticipants | UpdateUserStatus | UpdateUserName | UpdateUserPhoto | UpdateNewEncryptedMessage | UpdateEncryptedChatTyping | UpdateEncryption | UpdateEncryptedMessagesRead | UpdateChatParticipantAdd | UpdateChatParticipantDelete | UpdateDcOptions | UpdateNotifySettings | UpdateServiceNotification | UpdatePrivacy | UpdateUserPhone | UpdateReadHistoryInbox | UpdateReadHistoryOutbox | UpdateWebPage | UpdateReadMessagesContents | UpdateChannelTooLong | UpdateChannel | UpdateNewChannelMessage | UpdateReadChannelInbox | UpdateDeleteChannelMessages | UpdateChannelMessageViews | UpdateChatParticipantAdmin | UpdateNewStickerSet | UpdateStickerSetsOrder | UpdateStickerSets | UpdateSavedGifs | UpdateBotInlineQuery | UpdateBotInlineSend | UpdateEditChannelMessage | UpdateBotCallbackQuery | UpdateEditMessage | UpdateInlineBotCallbackQuery | UpdateReadChannelOutbox | UpdateDraftMessage | UpdateReadFeaturedStickers | UpdateRecentStickers | UpdateConfig | UpdatePtsChanged | UpdateChannelWebPage | UpdateDialogPinned | UpdatePinnedDialogs | UpdateBotWebhookJSON | UpdateBotWebhookJSONQuery | UpdateBotShippingQuery | UpdateBotPrecheckoutQuery | UpdatePhoneCall | UpdateLangPackTooLong | UpdateLangPack | UpdateFavedStickers | UpdateChannelReadMessagesContents | UpdateContactsReset | UpdateChannelAvailableMessages | UpdateDialogUnreadMark | UpdateMessagePoll | UpdateChatDefaultBannedRights | UpdateFolderPeers | UpdatePeerSettings | UpdatePeerLocated | UpdateNewScheduledMessage | UpdateDeleteScheduledMessages | UpdateTheme | UpdateGeoLiveViewed | UpdateLoginToken | UpdateMessagePollVote | UpdateDialogFilter | UpdateDialogFilterOrder | UpdateDialogFilters | UpdatePhoneCallSignalingData | UpdateChannelMessageForwards | UpdateReadChannelDiscussionInbox | UpdateReadChannelDiscussionOutbox | UpdatePeerBlocked | UpdateChannelUserTyping | UpdatePinnedMessages | UpdatePinnedChannelMessages | UpdateChat | UpdateGroupCallParticipants | UpdateGroupCall | UpdatePeerHistoryTTL | UpdateChatParticipant | UpdateChannelParticipant | UpdateBotStopped;
  export type TypeUpdates = UpdatesTooLong | UpdateShortMessage | UpdateShortChatMessage | UpdateShort | UpdatesCombined | Updates | UpdateShortSentMessage;
  export type TypeDcOption = DcOption;
  export type TypeConfig = Config;
  export type TypeNearestDc = NearestDc;
  export type TypeEncryptedChat = EncryptedChatEmpty | EncryptedChatWaiting | EncryptedChatRequested | EncryptedChat | EncryptedChatDiscarded;
  export type TypeInputEncryptedChat = InputEncryptedChat;
  export type TypeEncryptedFile = EncryptedFileEmpty | EncryptedFile;
  export type TypeInputEncryptedFile = InputEncryptedFileEmpty | InputEncryptedFileUploaded | InputEncryptedFile | InputEncryptedFileBigUploaded;
  export type TypeEncryptedMessage = EncryptedMessage | EncryptedMessageService;
  export type TypeInputDocument = InputDocumentEmpty | InputDocument;
  export type TypeDocument = DocumentEmpty | Document;
  export type TypeNotifyPeer = NotifyPeer | NotifyUsers | NotifyChats | NotifyBroadcasts;
  export type TypeSendMessageAction = SendMessageTypingAction | SendMessageCancelAction | SendMessageRecordVideoAction | SendMessageUploadVideoAction | SendMessageRecordAudioAction | SendMessageUploadAudioAction | SendMessageUploadPhotoAction | SendMessageUploadDocumentAction | SendMessageGeoLocationAction | SendMessageChooseContactAction | SendMessageGamePlayAction | SendMessageRecordRoundAction | SendMessageUploadRoundAction | SpeakingInGroupCallAction | SendMessageHistoryImportAction;
  export type TypeInputPrivacyKey = InputPrivacyKeyStatusTimestamp | InputPrivacyKeyChatInvite | InputPrivacyKeyPhoneCall | InputPrivacyKeyPhoneP2P | InputPrivacyKeyForwards | InputPrivacyKeyProfilePhoto | InputPrivacyKeyPhoneNumber | InputPrivacyKeyAddedByPhone;
  export type TypePrivacyKey = PrivacyKeyStatusTimestamp | PrivacyKeyChatInvite | PrivacyKeyPhoneCall | PrivacyKeyPhoneP2P | PrivacyKeyForwards | PrivacyKeyProfilePhoto | PrivacyKeyPhoneNumber | PrivacyKeyAddedByPhone;
  export type TypeInputPrivacyRule = InputPrivacyValueAllowContacts | InputPrivacyValueAllowAll | InputPrivacyValueAllowUsers | InputPrivacyValueDisallowContacts | InputPrivacyValueDisallowAll | InputPrivacyValueDisallowUsers | InputPrivacyValueAllowChatParticipants | InputPrivacyValueDisallowChatParticipants;
  export type TypePrivacyRule = PrivacyValueAllowContacts | PrivacyValueAllowAll | PrivacyValueAllowUsers | PrivacyValueDisallowContacts | PrivacyValueDisallowAll | PrivacyValueDisallowUsers | PrivacyValueAllowChatParticipants | PrivacyValueDisallowChatParticipants;
  export type TypeAccountDaysTTL = AccountDaysTTL;
  export type TypeDocumentAttribute = DocumentAttributeImageSize | DocumentAttributeAnimated | DocumentAttributeSticker | DocumentAttributeVideo | DocumentAttributeAudio | DocumentAttributeFilename | DocumentAttributeHasStickers;
  export type TypeStickerPack = StickerPack;
  export type TypeWebPage = WebPageEmpty | WebPagePending | WebPage | WebPageNotModified;
  export type TypeAuthorization = Authorization;
  export type TypeReceivedNotifyMessage = ReceivedNotifyMessage;
  export type TypeExportedChatInvite = ChatInviteExported;
  export type TypeChatInvite = ChatInviteAlready | ChatInvite | ChatInvitePeek;
  export type TypeInputStickerSet = InputStickerSetEmpty | InputStickerSetID | InputStickerSetShortName | InputStickerSetAnimatedEmoji | InputStickerSetDice;
  export type TypeStickerSet = StickerSet;
  export type TypeBotCommand = BotCommand;
  export type TypeBotInfo = BotInfo;
  export type TypeKeyboardButton = KeyboardButton | KeyboardButtonUrl | KeyboardButtonCallback | KeyboardButtonRequestPhone | KeyboardButtonRequestGeoLocation | KeyboardButtonSwitchInline | KeyboardButtonGame | KeyboardButtonBuy | KeyboardButtonUrlAuth | InputKeyboardButtonUrlAuth | KeyboardButtonRequestPoll;
  export type TypeKeyboardButtonRow = KeyboardButtonRow;
  export type TypeReplyMarkup = ReplyKeyboardHide | ReplyKeyboardForceReply | ReplyKeyboardMarkup | ReplyInlineMarkup;
  export type TypeMessageEntity = MessageEntityUnknown | MessageEntityMention | MessageEntityHashtag | MessageEntityBotCommand | MessageEntityUrl | MessageEntityEmail | MessageEntityBold | MessageEntityItalic | MessageEntityCode | MessageEntityPre | MessageEntityTextUrl | MessageEntityMentionName | InputMessageEntityMentionName | MessageEntityPhone | MessageEntityCashtag | MessageEntityUnderline | MessageEntityStrike | MessageEntityBlockquote | MessageEntityBankCard;
  export type TypeInputChannel = InputChannelEmpty | InputChannel | InputChannelFromMessage;
  export type TypeMessageRange = MessageRange;
  export type TypeChannelMessagesFilter = ChannelMessagesFilterEmpty | ChannelMessagesFilter;
  export type TypeChannelParticipant = ChannelParticipant | ChannelParticipantSelf | ChannelParticipantCreator | ChannelParticipantAdmin | ChannelParticipantBanned | ChannelParticipantLeft;
  export type TypeChannelParticipantsFilter = ChannelParticipantsRecent | ChannelParticipantsAdmins | ChannelParticipantsKicked | ChannelParticipantsBots | ChannelParticipantsBanned | ChannelParticipantsSearch | ChannelParticipantsContacts | ChannelParticipantsMentions;
  export type TypeInputBotInlineMessage = InputBotInlineMessageMediaAuto | InputBotInlineMessageText | InputBotInlineMessageMediaGeo | InputBotInlineMessageMediaVenue | InputBotInlineMessageMediaContact | InputBotInlineMessageGame | InputBotInlineMessageMediaInvoice;
  export type TypeInputBotInlineResult = InputBotInlineResult | InputBotInlineResultPhoto | InputBotInlineResultDocument | InputBotInlineResultGame;
  export type TypeBotInlineMessage = BotInlineMessageMediaAuto | BotInlineMessageText | BotInlineMessageMediaGeo | BotInlineMessageMediaVenue | BotInlineMessageMediaContact | BotInlineMessageMediaInvoice;
  export type TypeBotInlineResult = BotInlineResult | BotInlineMediaResult;
  export type TypeExportedMessageLink = ExportedMessageLink;
  export type TypeMessageFwdHeader = MessageFwdHeader;
  export type TypeInputBotInlineMessageID = InputBotInlineMessageID;
  export type TypeInlineBotSwitchPM = InlineBotSwitchPM;
  export type TypeTopPeer = TopPeer;
  export type TypeTopPeerCategory = TopPeerCategoryBotsPM | TopPeerCategoryBotsInline | TopPeerCategoryCorrespondents | TopPeerCategoryGroups | TopPeerCategoryChannels | TopPeerCategoryPhoneCalls | TopPeerCategoryForwardUsers | TopPeerCategoryForwardChats;
  export type TypeTopPeerCategoryPeers = TopPeerCategoryPeers;
  export type TypeDraftMessage = DraftMessageEmpty | DraftMessage;
  export type TypeStickerSetCovered = StickerSetCovered | StickerSetMultiCovered;
  export type TypeMaskCoords = MaskCoords;
  export type TypeInputStickeredMedia = InputStickeredMediaPhoto | InputStickeredMediaDocument;
  export type TypeGame = Game;
  export type TypeInputGame = InputGameID | InputGameShortName;
  export type TypeHighScore = HighScore;
  export type TypeRichText = TextEmpty | TextPlain | TextBold | TextItalic | TextUnderline | TextStrike | TextFixed | TextUrl | TextEmail | TextConcat | TextSubscript | TextSuperscript | TextMarked | TextPhone | TextImage | TextAnchor;
  export type TypePageBlock = PageBlockUnsupported | PageBlockTitle | PageBlockSubtitle | PageBlockAuthorDate | PageBlockHeader | PageBlockSubheader | PageBlockParagraph | PageBlockPreformatted | PageBlockFooter | PageBlockDivider | PageBlockAnchor | PageBlockList | PageBlockBlockquote | PageBlockPullquote | PageBlockPhoto | PageBlockVideo | PageBlockCover | PageBlockEmbed | PageBlockEmbedPost | PageBlockCollage | PageBlockSlideshow | PageBlockChannel | PageBlockAudio | PageBlockKicker | PageBlockTable | PageBlockOrderedList | PageBlockDetails | PageBlockRelatedArticles | PageBlockMap;
  export type TypePhoneCallDiscardReason = PhoneCallDiscardReasonMissed | PhoneCallDiscardReasonDisconnect | PhoneCallDiscardReasonHangup | PhoneCallDiscardReasonBusy;
  export type TypeDataJSON = DataJSON;
  export type TypeLabeledPrice = LabeledPrice;
  export type TypeInvoice = Invoice;
  export type TypePaymentCharge = PaymentCharge;
  export type TypePostAddress = PostAddress;
  export type TypePaymentRequestedInfo = PaymentRequestedInfo;
  export type TypePaymentSavedCredentials = PaymentSavedCredentialsCard;
  export type TypeWebDocument = WebDocument | WebDocumentNoProxy;
  export type TypeInputWebDocument = InputWebDocument;
  export type TypeInputWebFileLocation = InputWebFileLocation | InputWebFileGeoPointLocation;
  export type TypeInputPaymentCredentials = InputPaymentCredentialsSaved | InputPaymentCredentials | InputPaymentCredentialsApplePay | InputPaymentCredentialsGooglePay;
  export type TypeShippingOption = ShippingOption;
  export type TypeInputStickerSetItem = InputStickerSetItem;
  export type TypeInputPhoneCall = InputPhoneCall;
  export type TypePhoneCall = PhoneCallEmpty | PhoneCallWaiting | PhoneCallRequested | PhoneCallAccepted | PhoneCall | PhoneCallDiscarded;
  export type TypePhoneConnection = PhoneConnection | PhoneConnectionWebrtc;
  export type TypePhoneCallProtocol = PhoneCallProtocol;
  export type TypeCdnPublicKey = CdnPublicKey;
  export type TypeCdnConfig = CdnConfig;
  export type TypeLangPackString = LangPackString | LangPackStringPluralized | LangPackStringDeleted;
  export type TypeLangPackDifference = LangPackDifference;
  export type TypeLangPackLanguage = LangPackLanguage;
  export type TypeChannelAdminLogEventAction = ChannelAdminLogEventActionChangeTitle | ChannelAdminLogEventActionChangeAbout | ChannelAdminLogEventActionChangeUsername | ChannelAdminLogEventActionChangePhoto | ChannelAdminLogEventActionToggleInvites | ChannelAdminLogEventActionToggleSignatures | ChannelAdminLogEventActionUpdatePinned | ChannelAdminLogEventActionEditMessage | ChannelAdminLogEventActionDeleteMessage | ChannelAdminLogEventActionParticipantJoin | ChannelAdminLogEventActionParticipantLeave | ChannelAdminLogEventActionParticipantInvite | ChannelAdminLogEventActionParticipantToggleBan | ChannelAdminLogEventActionParticipantToggleAdmin | ChannelAdminLogEventActionChangeStickerSet | ChannelAdminLogEventActionTogglePreHistoryHidden | ChannelAdminLogEventActionDefaultBannedRights | ChannelAdminLogEventActionStopPoll | ChannelAdminLogEventActionChangeLinkedChat | ChannelAdminLogEventActionChangeLocation | ChannelAdminLogEventActionToggleSlowMode | ChannelAdminLogEventActionStartGroupCall | ChannelAdminLogEventActionDiscardGroupCall | ChannelAdminLogEventActionParticipantMute | ChannelAdminLogEventActionParticipantUnmute | ChannelAdminLogEventActionToggleGroupCallSetting | ChannelAdminLogEventActionParticipantJoinByInvite | ChannelAdminLogEventActionExportedInviteDelete | ChannelAdminLogEventActionExportedInviteRevoke | ChannelAdminLogEventActionExportedInviteEdit | ChannelAdminLogEventActionParticipantVolume | ChannelAdminLogEventActionChangeHistoryTTL;
  export type TypeChannelAdminLogEvent = ChannelAdminLogEvent;
  export type TypeChannelAdminLogEventsFilter = ChannelAdminLogEventsFilter;
  export type TypePopularContact = PopularContact;
  export type TypeRecentMeUrl = RecentMeUrlUnknown | RecentMeUrlUser | RecentMeUrlChat | RecentMeUrlChatInvite | RecentMeUrlStickerSet;
  export type TypeInputSingleMedia = InputSingleMedia;
  export type TypeWebAuthorization = WebAuthorization;
  export type TypeInputMessage = InputMessageID | InputMessageReplyTo | InputMessagePinned | InputMessageCallbackQuery;
  export type TypeInputDialogPeer = InputDialogPeer | InputDialogPeerFolder;
  export type TypeDialogPeer = DialogPeer | DialogPeerFolder;
  export type TypeFileHash = FileHash;
  export type TypeInputClientProxy = InputClientProxy;
  export type TypeInputSecureFile = InputSecureFileUploaded | InputSecureFile;
  export type TypeSecureFile = SecureFileEmpty | SecureFile;
  export type TypeSecureData = SecureData;
  export type TypeSecurePlainData = SecurePlainPhone | SecurePlainEmail;
  export type TypeSecureValueType = SecureValueTypePersonalDetails | SecureValueTypePassport | SecureValueTypeDriverLicense | SecureValueTypeIdentityCard | SecureValueTypeInternalPassport | SecureValueTypeAddress | SecureValueTypeUtilityBill | SecureValueTypeBankStatement | SecureValueTypeRentalAgreement | SecureValueTypePassportRegistration | SecureValueTypeTemporaryRegistration | SecureValueTypePhone | SecureValueTypeEmail;
  export type TypeSecureValue = SecureValue;
  export type TypeInputSecureValue = InputSecureValue;
  export type TypeSecureValueHash = SecureValueHash;
  export type TypeSecureValueError = SecureValueErrorData | SecureValueErrorFrontSide | SecureValueErrorReverseSide | SecureValueErrorSelfie | SecureValueErrorFile | SecureValueErrorFiles | SecureValueError | SecureValueErrorTranslationFile | SecureValueErrorTranslationFiles;
  export type TypeSecureCredentialsEncrypted = SecureCredentialsEncrypted;
  export type TypeSavedContact = SavedPhoneContact;
  export type TypePasswordKdfAlgo = PasswordKdfAlgoUnknown | PasswordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;
  export type TypeSecurePasswordKdfAlgo = SecurePasswordKdfAlgoUnknown | SecurePasswordKdfAlgoPBKDF2HMACSHA512iter100000 | SecurePasswordKdfAlgoSHA512;
  export type TypeSecureSecretSettings = SecureSecretSettings;
  export type TypeInputCheckPasswordSRP = InputCheckPasswordEmpty | InputCheckPasswordSRP;
  export type TypeSecureRequiredType = SecureRequiredType | SecureRequiredTypeOneOf;
  export type TypeInputAppEvent = InputAppEvent;
  export type TypeJSONObjectValue = JsonObjectValue;
  export type TypeJSONValue = JsonNull | JsonBool | JsonNumber | JsonString | JsonArray | JsonObject;
  export type TypePageTableCell = PageTableCell;
  export type TypePageTableRow = PageTableRow;
  export type TypePageCaption = PageCaption;
  export type TypePageListItem = PageListItemText | PageListItemBlocks;
  export type TypePageListOrderedItem = PageListOrderedItemText | PageListOrderedItemBlocks;
  export type TypePageRelatedArticle = PageRelatedArticle;
  export type TypePage = Page;
  export type TypePollAnswer = PollAnswer;
  export type TypePoll = Poll;
  export type TypePollAnswerVoters = PollAnswerVoters;
  export type TypePollResults = PollResults;
  export type TypeChatOnlines = ChatOnlines;
  export type TypeStatsURL = StatsURL;
  export type TypeChatAdminRights = ChatAdminRights;
  export type TypeChatBannedRights = ChatBannedRights;
  export type TypeInputWallPaper = InputWallPaper | InputWallPaperSlug | InputWallPaperNoFile;
  export type TypeCodeSettings = CodeSettings;
  export type TypeWallPaperSettings = WallPaperSettings;
  export type TypeAutoDownloadSettings = AutoDownloadSettings;
  export type TypeEmojiKeyword = EmojiKeyword | EmojiKeywordDeleted;
  export type TypeEmojiKeywordsDifference = EmojiKeywordsDifference;
  export type TypeEmojiURL = EmojiURL;
  export type TypeEmojiLanguage = EmojiLanguage;
  export type TypeFolder = Folder;
  export type TypeInputFolderPeer = InputFolderPeer;
  export type TypeFolderPeer = FolderPeer;
  export type TypeUrlAuthResult = UrlAuthResultRequest | UrlAuthResultAccepted | UrlAuthResultDefault;
  export type TypeChannelLocation = ChannelLocationEmpty | ChannelLocation;
  export type TypePeerLocated = PeerLocated | PeerSelfLocated;
  export type TypeRestrictionReason = RestrictionReason;
  export type TypeInputTheme = InputTheme | InputThemeSlug;
  export type TypeTheme = Theme;
  export type TypeBaseTheme = BaseThemeClassic | BaseThemeDay | BaseThemeNight | BaseThemeTinted | BaseThemeArctic;
  export type TypeInputThemeSettings = InputThemeSettings;
  export type TypeThemeSettings = ThemeSettings;
  export type TypeWebPageAttribute = WebPageAttributeTheme;
  export type TypeMessageUserVote = MessageUserVote | MessageUserVoteInputOption | MessageUserVoteMultiple;
  export type TypeBankCardOpenUrl = BankCardOpenUrl;
  export type TypeDialogFilter = DialogFilter;
  export type TypeDialogFilterSuggested = DialogFilterSuggested;
  export type TypeStatsDateRangeDays = StatsDateRangeDays;
  export type TypeStatsAbsValueAndPrev = StatsAbsValueAndPrev;
  export type TypeStatsPercentValue = StatsPercentValue;
  export type TypeStatsGraph = StatsGraphAsync | StatsGraphError | StatsGraph;
  export type TypeMessageInteractionCounters = MessageInteractionCounters;
  export type TypeVideoSize = VideoSize;
  export type TypeStatsGroupTopPoster = StatsGroupTopPoster;
  export type TypeStatsGroupTopAdmin = StatsGroupTopAdmin;
  export type TypeStatsGroupTopInviter = StatsGroupTopInviter;
  export type TypeGlobalPrivacySettings = GlobalPrivacySettings;
  export type TypeMessageViews = MessageViews;
  export type TypeMessageReplyHeader = MessageReplyHeader;
  export type TypeMessageReplies = MessageReplies;
  export type TypePeerBlocked = PeerBlocked;
  export type TypeGroupCall = GroupCallDiscarded | GroupCall;
  export type TypeInputGroupCall = InputGroupCall;
  export type TypeGroupCallParticipant = GroupCallParticipant;
  export type TypeInlineQueryPeerType = InlineQueryPeerTypeSameBotPM | InlineQueryPeerTypePM | InlineQueryPeerTypeChat | InlineQueryPeerTypeMegagroup | InlineQueryPeerTypeBroadcast;
  export type TypeChatInviteImporter = ChatInviteImporter;
  export type TypeChatAdminWithInvites = ChatAdminWithInvites;
  export type TypeResPQ = ResPQ;
  export type TypeP_Q_inner_data = PQInnerData | PQInnerDataDc | PQInnerDataTemp | PQInnerDataTempDc;
  export type TypeServer_DH_Params = ServerDHParamsFail | ServerDHParamsOk;
  export type TypeServer_DH_inner_data = ServerDHInnerData;
  export type TypeClient_DH_Inner_Data = ClientDHInnerData;
  export type TypeSet_client_DH_params_answer = DhGenOk | DhGenRetry | DhGenFail;
  export type TypeDestroyAuthKeyRes = DestroyAuthKeyOk | DestroyAuthKeyNone | DestroyAuthKeyFail;
  export type TypeMsgsAck = MsgsAck;
  export type TypeBadMsgNotification = BadMsgNotification | BadServerSalt;
  export type TypeMsgsStateReq = MsgsStateReq;
  export type TypeMsgsStateInfo = MsgsStateInfo;
  export type TypeMsgsAllInfo = MsgsAllInfo;
  export type TypeMsgDetailedInfo = MsgDetailedInfo | MsgNewDetailedInfo;
  export type TypeMsgResendReq = MsgResendReq;
  export type TypeRpcError = RpcError;
  export type TypeRpcDropAnswer = RpcAnswerUnknown | RpcAnswerDroppedRunning | RpcAnswerDropped;
  export type TypeFutureSalt = FutureSalt;
  export type TypeFutureSalts = FutureSalts;
  export type TypePong = Pong;
  export type TypeDestroySessionRes = DestroySessionOk | DestroySessionNone;
  export type TypeNewSession = NewSessionCreated;
  export type TypeHttpWait = HttpWait;
  export type TypeIpPort = IpPort | IpPortSecret;
  export type TypeAccessPointRule = AccessPointRule;
  export type TypeTlsClientHello = TlsClientHello;
  export type TypeTlsBlock = TlsBlockString | TlsBlockRandom | TlsBlockZero | TlsBlockDomain | TlsBlockGrease | TlsBlockScope;
  

  export namespace storage {
    export type TypeFileType = storage.FileUnknown | storage.FilePartial | storage.FileJpeg | storage.FileGif | storage.FilePng | storage.FilePdf | storage.FileMp3 | storage.FileMov | storage.FileMp4 | storage.FileWebp;
  }

  export namespace auth {
    export type TypeSentCode = auth.SentCode;
    export type TypeAuthorization = auth.Authorization | auth.AuthorizationSignUpRequired;
    export type TypeExportedAuthorization = auth.ExportedAuthorization;
    export type TypePasswordRecovery = auth.PasswordRecovery;
    export type TypeCodeType = auth.CodeTypeSms | auth.CodeTypeCall | auth.CodeTypeFlashCall;
    export type TypeSentCodeType = auth.SentCodeTypeApp | auth.SentCodeTypeSms | auth.SentCodeTypeCall | auth.SentCodeTypeFlashCall;
    export type TypeLoginToken = auth.LoginToken | auth.LoginTokenMigrateTo | auth.LoginTokenSuccess;
  }

  export namespace contacts {
    export type TypeContacts = contacts.ContactsNotModified | contacts.Contacts;
    export type TypeImportedContacts = contacts.ImportedContacts;
    export type TypeBlocked = contacts.Blocked | contacts.BlockedSlice;
    export type TypeFound = contacts.Found;
    export type TypeResolvedPeer = contacts.ResolvedPeer;
    export type TypeTopPeers = contacts.TopPeersNotModified | contacts.TopPeers | contacts.TopPeersDisabled;
  }

  export namespace messages {
    export type TypeDialogs = messages.Dialogs | messages.DialogsSlice | messages.DialogsNotModified;
    export type TypeMessages = messages.Messages | messages.MessagesSlice | messages.ChannelMessages | messages.MessagesNotModified;
    export type TypeChats = messages.Chats | messages.ChatsSlice;
    export type TypeChatFull = messages.ChatFull;
    export type TypeAffectedHistory = messages.AffectedHistory;
    export type TypeDhConfig = messages.DhConfigNotModified | messages.DhConfig;
    export type TypeSentEncryptedMessage = messages.SentEncryptedMessage | messages.SentEncryptedFile;
    export type TypeStickers = messages.StickersNotModified | messages.Stickers;
    export type TypeAllStickers = messages.AllStickersNotModified | messages.AllStickers;
    export type TypeAffectedMessages = messages.AffectedMessages;
    export type TypeStickerSet = messages.StickerSet;
    export type TypeSavedGifs = messages.SavedGifsNotModified | messages.SavedGifs;
    export type TypeBotResults = messages.BotResults;
    export type TypeBotCallbackAnswer = messages.BotCallbackAnswer;
    export type TypeMessageEditData = messages.MessageEditData;
    export type TypePeerDialogs = messages.PeerDialogs;
    export type TypeFeaturedStickers = messages.FeaturedStickersNotModified | messages.FeaturedStickers;
    export type TypeRecentStickers = messages.RecentStickersNotModified | messages.RecentStickers;
    export type TypeArchivedStickers = messages.ArchivedStickers;
    export type TypeStickerSetInstallResult = messages.StickerSetInstallResultSuccess | messages.StickerSetInstallResultArchive;
    export type TypeHighScores = messages.HighScores;
    export type TypeFavedStickers = messages.FavedStickersNotModified | messages.FavedStickers;
    export type TypeFoundStickerSets = messages.FoundStickerSetsNotModified | messages.FoundStickerSets;
    export type TypeSearchCounter = messages.SearchCounter;
    export type TypeInactiveChats = messages.InactiveChats;
    export type TypeVotesList = messages.VotesList;
    export type TypeMessageViews = messages.MessageViews;
    export type TypeDiscussionMessage = messages.DiscussionMessage;
    export type TypeHistoryImport = messages.HistoryImport;
    export type TypeHistoryImportParsed = messages.HistoryImportParsed;
    export type TypeAffectedFoundMessages = messages.AffectedFoundMessages;
    export type TypeExportedChatInvites = messages.ExportedChatInvites;
    export type TypeExportedChatInvite = messages.ExportedChatInvite | messages.ExportedChatInviteReplaced;
    export type TypeChatInviteImporters = messages.ChatInviteImporters;
    export type TypeChatAdminsWithInvites = messages.ChatAdminsWithInvites;
    export type TypeCheckedHistoryImportPeer = messages.CheckedHistoryImportPeer;
  }

  export namespace updates {
    export type TypeState = updates.State;
    export type TypeDifference = updates.DifferenceEmpty | updates.Difference | updates.DifferenceSlice | updates.DifferenceTooLong;
    export type TypeChannelDifference = updates.ChannelDifferenceEmpty | updates.ChannelDifferenceTooLong | updates.ChannelDifference;
  }

  export namespace photos {
    export type TypePhotos = photos.Photos | photos.PhotosSlice;
    export type TypePhoto = photos.Photo;
  }

  export namespace upload {
    export type TypeFile = upload.File | upload.FileCdnRedirect;
    export type TypeWebFile = upload.WebFile;
    export type TypeCdnFile = upload.CdnFileReuploadNeeded | upload.CdnFile;
  }

  export namespace help {
    export type TypeAppUpdate = help.AppUpdate | help.NoAppUpdate;
    export type TypeInviteText = help.InviteText;
    export type TypeSupport = help.Support;
    export type TypeTermsOfService = help.TermsOfService;
    export type TypeRecentMeUrls = help.RecentMeUrls;
    export type TypeTermsOfServiceUpdate = help.TermsOfServiceUpdateEmpty | help.TermsOfServiceUpdate;
    export type TypeDeepLinkInfo = help.DeepLinkInfoEmpty | help.DeepLinkInfo;
    export type TypePassportConfig = help.PassportConfigNotModified | help.PassportConfig;
    export type TypeSupportName = help.SupportName;
    export type TypeUserInfo = help.UserInfoEmpty | help.UserInfo;
    export type TypePromoData = help.PromoDataEmpty | help.PromoData;
    export type TypeCountryCode = help.CountryCode;
    export type TypeCountry = help.Country;
    export type TypeCountriesList = help.CountriesListNotModified | help.CountriesList;
    export type TypeConfigSimple = help.ConfigSimple;
  }

  export namespace account {
    export type TypePrivacyRules = account.PrivacyRules;
    export type TypeAuthorizations = account.Authorizations;
    export type TypePassword = account.Password;
    export type TypePasswordSettings = account.PasswordSettings;
    export type TypePasswordInputSettings = account.PasswordInputSettings;
    export type TypeTmpPassword = account.TmpPassword;
    export type TypeWebAuthorizations = account.WebAuthorizations;
    export type TypeAuthorizationForm = account.AuthorizationForm;
    export type TypeSentEmailCode = account.SentEmailCode;
    export type TypeTakeout = account.Takeout;
    export type TypeWallPapers = account.WallPapersNotModified | account.WallPapers;
    export type TypeAutoDownloadSettings = account.AutoDownloadSettings;
    export type TypeThemes = account.ThemesNotModified | account.Themes;
    export type TypeContentSettings = account.ContentSettings;
  }

  export namespace channels {
    export type TypeChannelParticipants = channels.ChannelParticipants | channels.ChannelParticipantsNotModified;
    export type TypeChannelParticipant = channels.ChannelParticipant;
    export type TypeAdminLogResults = channels.AdminLogResults;
  }

  export namespace payments {
    export type TypePaymentForm = payments.PaymentForm;
    export type TypeValidatedRequestedInfo = payments.ValidatedRequestedInfo;
    export type TypePaymentResult = payments.PaymentResult | payments.PaymentVerificationNeeded;
    export type TypePaymentReceipt = payments.PaymentReceipt;
    export type TypeSavedInfo = payments.SavedInfo;
    export type TypeBankCardData = payments.BankCardData;
  }

  export namespace phone {
    export type TypePhoneCall = phone.PhoneCall;
    export type TypeGroupCall = phone.GroupCall;
    export type TypeGroupParticipants = phone.GroupParticipants;
    export type TypeJoinAsPeers = phone.JoinAsPeers;
    export type TypeExportedGroupCallInvite = phone.ExportedGroupCallInvite;
  }

  export namespace stats {
    export type TypeBroadcastStats = stats.BroadcastStats;
    export type TypeMegagroupStats = stats.MegagroupStats;
    export type TypeMessageStats = stats.MessageStats;
  }

  export class InputPeerEmpty extends VirtualClass<void> {};
  export class InputPeerSelf extends VirtualClass<void> {};
  export class InputPeerChat extends VirtualClass<{
    chatId: int;
  }> {
    chatId: int;
  };
  export class InputPeerUser extends VirtualClass<{
    userId: int;
    accessHash: long;
  }> {
    userId: int;
    accessHash: long;
  };
  export class InputPeerChannel extends VirtualClass<{
    channelId: int;
    accessHash: long;
  }> {
    channelId: int;
    accessHash: long;
  };
  export class InputPeerUserFromMessage extends VirtualClass<{
    peer: Api.TypeInputPeer;
    msgId: int;
    userId: int;
  }> {
    peer: Api.TypeInputPeer;
    msgId: int;
    userId: int;
  };
  export class InputPeerChannelFromMessage extends VirtualClass<{
    peer: Api.TypeInputPeer;
    msgId: int;
    channelId: int;
  }> {
    peer: Api.TypeInputPeer;
    msgId: int;
    channelId: int;
  };
  export class InputUserEmpty extends VirtualClass<void> {};
  export class InputUserSelf extends VirtualClass<void> {};
  export class InputUser extends VirtualClass<{
    userId: int;
    accessHash: long;
  }> {
    userId: int;
    accessHash: long;
  };
  export class InputUserFromMessage extends VirtualClass<{
    peer: Api.TypeInputPeer;
    msgId: int;
    userId: int;
  }> {
    peer: Api.TypeInputPeer;
    msgId: int;
    userId: int;
  };
  export class InputPhoneContact extends VirtualClass<{
    clientId: long;
    phone: string;
    firstName: string;
    lastName: string;
  }> {
    clientId: long;
    phone: string;
    firstName: string;
    lastName: string;
  };
  export class InputFile extends VirtualClass<{
    id: long;
    parts: int;
    name: string;
    md5Checksum: string;
  }> {
    id: long;
    parts: int;
    name: string;
    md5Checksum: string;
  };
  export class InputFileBig extends VirtualClass<{
    id: long;
    parts: int;
    name: string;
  }> {
    id: long;
    parts: int;
    name: string;
  };
  export class InputMediaEmpty extends VirtualClass<void> {};
  export class InputMediaUploadedPhoto extends VirtualClass<{
    // flags: undefined;
    file: Api.TypeInputFile;
    stickers?: Api.TypeInputDocument[];
    ttlSeconds?: int;
  }> {
    // flags: undefined;
    file: Api.TypeInputFile;
    stickers?: Api.TypeInputDocument[];
    ttlSeconds?: int;
  };
  export class InputMediaPhoto extends VirtualClass<{
    // flags: undefined;
    id: Api.TypeInputPhoto;
    ttlSeconds?: int;
  }> {
    // flags: undefined;
    id: Api.TypeInputPhoto;
    ttlSeconds?: int;
  };
  export class InputMediaGeoPoint extends VirtualClass<{
    geoPoint: Api.TypeInputGeoPoint;
  }> {
    geoPoint: Api.TypeInputGeoPoint;
  };
  export class InputMediaContact extends VirtualClass<{
    phoneNumber: string;
    firstName: string;
    lastName: string;
    vcard: string;
  }> {
    phoneNumber: string;
    firstName: string;
    lastName: string;
    vcard: string;
  };
  export class InputMediaUploadedDocument extends VirtualClass<{
    // flags: undefined;
    nosoundVideo?: true;
    forceFile?: true;
    file: Api.TypeInputFile;
    thumb?: Api.TypeInputFile;
    mimeType: string;
    attributes: Api.TypeDocumentAttribute[];
    stickers?: Api.TypeInputDocument[];
    ttlSeconds?: int;
  }> {
    // flags: undefined;
    nosoundVideo?: true;
    forceFile?: true;
    file: Api.TypeInputFile;
    thumb?: Api.TypeInputFile;
    mimeType: string;
    attributes: Api.TypeDocumentAttribute[];
    stickers?: Api.TypeInputDocument[];
    ttlSeconds?: int;
  };
  export class InputMediaDocument extends VirtualClass<{
    // flags: undefined;
    id: Api.TypeInputDocument;
    ttlSeconds?: int;
    query?: string;
  }> {
    // flags: undefined;
    id: Api.TypeInputDocument;
    ttlSeconds?: int;
    query?: string;
  };
  export class InputMediaVenue extends VirtualClass<{
    geoPoint: Api.TypeInputGeoPoint;
    title: string;
    address: string;
    provider: string;
    venueId: string;
    venueType: string;
  }> {
    geoPoint: Api.TypeInputGeoPoint;
    title: string;
    address: string;
    provider: string;
    venueId: string;
    venueType: string;
  };
  export class InputMediaPhotoExternal extends VirtualClass<{
    // flags: undefined;
    url: string;
    ttlSeconds?: int;
  }> {
    // flags: undefined;
    url: string;
    ttlSeconds?: int;
  };
  export class InputMediaDocumentExternal extends VirtualClass<{
    // flags: undefined;
    url: string;
    ttlSeconds?: int;
  }> {
    // flags: undefined;
    url: string;
    ttlSeconds?: int;
  };
  export class InputMediaGame extends VirtualClass<{
    id: Api.TypeInputGame;
  }> {
    id: Api.TypeInputGame;
  };
  export class InputMediaInvoice extends VirtualClass<{
    // flags: undefined;
    multipleAllowed?: true;
    canForward?: true;
    title: string;
    description: string;
    photo?: Api.TypeInputWebDocument;
    invoice: Api.TypeInvoice;
    payload: bytes;
    provider: string;
    providerData: Api.TypeDataJSON;
    startParam: string;
  }> {
    // flags: undefined;
    multipleAllowed?: true;
    canForward?: true;
    title: string;
    description: string;
    photo?: Api.TypeInputWebDocument;
    invoice: Api.TypeInvoice;
    payload: bytes;
    provider: string;
    providerData: Api.TypeDataJSON;
    startParam: string;
  };
  export class InputMediaGeoLive extends VirtualClass<{
    // flags: undefined;
    stopped?: true;
    geoPoint: Api.TypeInputGeoPoint;
    heading?: int;
    period?: int;
    proximityNotificationRadius?: int;
  }> {
    // flags: undefined;
    stopped?: true;
    geoPoint: Api.TypeInputGeoPoint;
    heading?: int;
    period?: int;
    proximityNotificationRadius?: int;
  };
  export class InputMediaPoll extends VirtualClass<{
    // flags: undefined;
    poll: Api.TypePoll;
    correctAnswers?: bytes[];
    solution?: string;
    solutionEntities?: Api.TypeMessageEntity[];
  }> {
    // flags: undefined;
    poll: Api.TypePoll;
    correctAnswers?: bytes[];
    solution?: string;
    solutionEntities?: Api.TypeMessageEntity[];
  };
  export class InputMediaDice extends VirtualClass<{
    emoticon: string;
  }> {
    emoticon: string;
  };
  export class InputChatPhotoEmpty extends VirtualClass<void> {};
  export class InputChatUploadedPhoto extends VirtualClass<{
    // flags: undefined;
    file?: Api.TypeInputFile;
    video?: Api.TypeInputFile;
    videoStartTs?: double;
  } | void> {
    // flags: undefined;
    file?: Api.TypeInputFile;
    video?: Api.TypeInputFile;
    videoStartTs?: double;
  };
  export class InputChatPhoto extends VirtualClass<{
    id: Api.TypeInputPhoto;
  }> {
    id: Api.TypeInputPhoto;
  };
  export class InputGeoPointEmpty extends VirtualClass<void> {};
  export class InputGeoPoint extends VirtualClass<{
    // flags: undefined;
    lat: double;
    long: double;
    accuracyRadius?: int;
  }> {
    // flags: undefined;
    lat: double;
    long: double;
    accuracyRadius?: int;
  };
  export class InputPhotoEmpty extends VirtualClass<void> {};
  export class InputPhoto extends VirtualClass<{
    id: long;
    accessHash: long;
    fileReference: bytes;
  }> {
    id: long;
    accessHash: long;
    fileReference: bytes;
  };
  export class InputFileLocation extends VirtualClass<{
    volumeId: long;
    localId: int;
    secret: long;
    fileReference: bytes;
  }> {
    volumeId: long;
    localId: int;
    secret: long;
    fileReference: bytes;
  };
  export class InputEncryptedFileLocation extends VirtualClass<{
    id: long;
    accessHash: long;
  }> {
    id: long;
    accessHash: long;
  };
  export class InputDocumentFileLocation extends VirtualClass<{
    id: long;
    accessHash: long;
    fileReference: bytes;
    thumbSize: string;
  }> {
    id: long;
    accessHash: long;
    fileReference: bytes;
    thumbSize: string;
  };
  export class InputSecureFileLocation extends VirtualClass<{
    id: long;
    accessHash: long;
  }> {
    id: long;
    accessHash: long;
  };
  export class InputTakeoutFileLocation extends VirtualClass<void> {};
  export class InputPhotoFileLocation extends VirtualClass<{
    id: long;
    accessHash: long;
    fileReference: bytes;
    thumbSize: string;
  }> {
    id: long;
    accessHash: long;
    fileReference: bytes;
    thumbSize: string;
  };
  export class InputPhotoLegacyFileLocation extends VirtualClass<{
    id: long;
    accessHash: long;
    fileReference: bytes;
    volumeId: long;
    localId: int;
    secret: long;
  }> {
    id: long;
    accessHash: long;
    fileReference: bytes;
    volumeId: long;
    localId: int;
    secret: long;
  };
  export class InputPeerPhotoFileLocation extends VirtualClass<{
    // flags: undefined;
    big?: true;
    peer: Api.TypeInputPeer;
    photoId: long;
  }> {
    // flags: undefined;
    big?: true;
    peer: Api.TypeInputPeer;
    photoId: long;
  };
  export class InputStickerSetThumb extends VirtualClass<{
    stickerset: Api.TypeInputStickerSet;
    thumbVersion: int;
  }> {
    stickerset: Api.TypeInputStickerSet;
    thumbVersion: int;
  };
  export class InputGroupCallStream extends VirtualClass<{
    call: Api.TypeInputGroupCall;
    timeMs: long;
    scale: int;
  }> {
    call: Api.TypeInputGroupCall;
    timeMs: long;
    scale: int;
  };
  export class PeerUser extends VirtualClass<{
    userId: int;
  }> {
    userId: int;
  };
  export class PeerChat extends VirtualClass<{
    chatId: int;
  }> {
    chatId: int;
  };
  export class PeerChannel extends VirtualClass<{
    channelId: int;
  }> {
    channelId: int;
  };
  export class UserEmpty extends VirtualClass<{
    id: int;
  }> {
    id: int;
  };
  export class User extends VirtualClass<{
    // flags: undefined;
    self?: true;
    contact?: true;
    mutualContact?: true;
    deleted?: true;
    bot?: true;
    botChatHistory?: true;
    botNochats?: true;
    verified?: true;
    restricted?: true;
    min?: true;
    botInlineGeo?: true;
    support?: true;
    scam?: true;
    applyMinPhoto?: true;
    fake?: true;
    id: int;
    accessHash?: long;
    firstName?: string;
    lastName?: string;
    username?: string;
    phone?: string;
    photo?: Api.TypeUserProfilePhoto;
    status?: Api.TypeUserStatus;
    botInfoVersion?: int;
    restrictionReason?: Api.TypeRestrictionReason[];
    botInlinePlaceholder?: string;
    langCode?: string;
  }> {
    // flags: undefined;
    self?: true;
    contact?: true;
    mutualContact?: true;
    deleted?: true;
    bot?: true;
    botChatHistory?: true;
    botNochats?: true;
    verified?: true;
    restricted?: true;
    min?: true;
    botInlineGeo?: true;
    support?: true;
    scam?: true;
    applyMinPhoto?: true;
    fake?: true;
    id: int;
    accessHash?: long;
    firstName?: string;
    lastName?: string;
    username?: string;
    phone?: string;
    photo?: Api.TypeUserProfilePhoto;
    status?: Api.TypeUserStatus;
    botInfoVersion?: int;
    restrictionReason?: Api.TypeRestrictionReason[];
    botInlinePlaceholder?: string;
    langCode?: string;
  };
  export class UserProfilePhotoEmpty extends VirtualClass<void> {};
  export class UserProfilePhoto extends VirtualClass<{
    // flags: undefined;
    hasVideo?: true;
    photoId: long;
    strippedThumb?: bytes;
    dcId: int;
  }> {
    // flags: undefined;
    hasVideo?: true;
    photoId: long;
    strippedThumb?: bytes;
    dcId: int;
  };
  export class UserStatusEmpty extends VirtualClass<void> {};
  export class UserStatusOnline extends VirtualClass<{
    expires: int;
  }> {
    expires: int;
  };
  export class UserStatusOffline extends VirtualClass<{
    wasOnline: int;
  }> {
    wasOnline: int;
  };
  export class UserStatusRecently extends VirtualClass<void> {};
  export class UserStatusLastWeek extends VirtualClass<void> {};
  export class UserStatusLastMonth extends VirtualClass<void> {};
  export class ChatEmpty extends VirtualClass<{
    id: int;
  }> {
    id: int;
  };
  export class Chat extends VirtualClass<{
    // flags: undefined;
    creator?: true;
    kicked?: true;
    left?: true;
    deactivated?: true;
    callActive?: true;
    callNotEmpty?: true;
    id: int;
    title: string;
    photo: Api.TypeChatPhoto;
    participantsCount: int;
    date: int;
    version: int;
    migratedTo?: Api.TypeInputChannel;
    adminRights?: Api.TypeChatAdminRights;
    defaultBannedRights?: Api.TypeChatBannedRights;
  }> {
    // flags: undefined;
    creator?: true;
    kicked?: true;
    left?: true;
    deactivated?: true;
    callActive?: true;
    callNotEmpty?: true;
    id: int;
    title: string;
    photo: Api.TypeChatPhoto;
    participantsCount: int;
    date: int;
    version: int;
    migratedTo?: Api.TypeInputChannel;
    adminRights?: Api.TypeChatAdminRights;
    defaultBannedRights?: Api.TypeChatBannedRights;
  };
  export class ChatForbidden extends VirtualClass<{
    id: int;
    title: string;
  }> {
    id: int;
    title: string;
  };
  export class Channel extends VirtualClass<{
    // flags: undefined;
    creator?: true;
    left?: true;
    broadcast?: true;
    verified?: true;
    megagroup?: true;
    restricted?: true;
    signatures?: true;
    min?: true;
    scam?: true;
    hasLink?: true;
    hasGeo?: true;
    slowmodeEnabled?: true;
    callActive?: true;
    callNotEmpty?: true;
    fake?: true;
    gigagroup?: true;
    id: int;
    accessHash?: long;
    title: string;
    username?: string;
    photo: Api.TypeChatPhoto;
    date: int;
    version: int;
    restrictionReason?: Api.TypeRestrictionReason[];
    adminRights?: Api.TypeChatAdminRights;
    bannedRights?: Api.TypeChatBannedRights;
    defaultBannedRights?: Api.TypeChatBannedRights;
    participantsCount?: int;
  }> {
    // flags: undefined;
    creator?: true;
    left?: true;
    broadcast?: true;
    verified?: true;
    megagroup?: true;
    restricted?: true;
    signatures?: true;
    min?: true;
    scam?: true;
    hasLink?: true;
    hasGeo?: true;
    slowmodeEnabled?: true;
    callActive?: true;
    callNotEmpty?: true;
    fake?: true;
    gigagroup?: true;
    id: int;
    accessHash?: long;
    title: string;
    username?: string;
    photo: Api.TypeChatPhoto;
    date: int;
    version: int;
    restrictionReason?: Api.TypeRestrictionReason[];
    adminRights?: Api.TypeChatAdminRights;
    bannedRights?: Api.TypeChatBannedRights;
    defaultBannedRights?: Api.TypeChatBannedRights;
    participantsCount?: int;
  };
  export class ChannelForbidden extends VirtualClass<{
    // flags: undefined;
    broadcast?: true;
    megagroup?: true;
    id: int;
    accessHash: long;
    title: string;
    untilDate?: int;
  }> {
    // flags: undefined;
    broadcast?: true;
    megagroup?: true;
    id: int;
    accessHash: long;
    title: string;
    untilDate?: int;
  };
  export class ChatFull extends VirtualClass<{
    // flags: undefined;
    canSetUsername?: true;
    hasScheduled?: true;
    id: int;
    about: string;
    participants: Api.TypeChatParticipants;
    chatPhoto?: Api.TypePhoto;
    notifySettings: Api.TypePeerNotifySettings;
    exportedInvite?: Api.TypeExportedChatInvite;
    botInfo?: Api.TypeBotInfo[];
    pinnedMsgId?: int;
    folderId?: int;
    call?: Api.TypeInputGroupCall;
    ttlPeriod?: int;
    groupcallDefaultJoinAs?: Api.TypePeer;
  }> {
    // flags: undefined;
    canSetUsername?: true;
    hasScheduled?: true;
    id: int;
    about: string;
    participants: Api.TypeChatParticipants;
    chatPhoto?: Api.TypePhoto;
    notifySettings: Api.TypePeerNotifySettings;
    exportedInvite?: Api.TypeExportedChatInvite;
    botInfo?: Api.TypeBotInfo[];
    pinnedMsgId?: int;
    folderId?: int;
    call?: Api.TypeInputGroupCall;
    ttlPeriod?: int;
    groupcallDefaultJoinAs?: Api.TypePeer;
  };
  export class ChannelFull extends VirtualClass<{
    // flags: undefined;
    canViewParticipants?: true;
    canSetUsername?: true;
    canSetStickers?: true;
    hiddenPrehistory?: true;
    canSetLocation?: true;
    hasScheduled?: true;
    canViewStats?: true;
    blocked?: true;
    id: int;
    about: string;
    participantsCount?: int;
    adminsCount?: int;
    kickedCount?: int;
    bannedCount?: int;
    onlineCount?: int;
    readInboxMaxId: int;
    readOutboxMaxId: int;
    unreadCount: int;
    chatPhoto: Api.TypePhoto;
    notifySettings: Api.TypePeerNotifySettings;
    exportedInvite?: Api.TypeExportedChatInvite;
    botInfo: Api.TypeBotInfo[];
    migratedFromChatId?: int;
    migratedFromMaxId?: int;
    pinnedMsgId?: int;
    stickerset?: Api.TypeStickerSet;
    availableMinId?: int;
    folderId?: int;
    linkedChatId?: int;
    location?: Api.TypeChannelLocation;
    slowmodeSeconds?: int;
    slowmodeNextSendDate?: int;
    statsDc?: int;
    pts: int;
    call?: Api.TypeInputGroupCall;
    ttlPeriod?: int;
    pendingSuggestions?: string[];
    groupcallDefaultJoinAs?: Api.TypePeer;
  }> {
    // flags: undefined;
    canViewParticipants?: true;
    canSetUsername?: true;
    canSetStickers?: true;
    hiddenPrehistory?: true;
    canSetLocation?: true;
    hasScheduled?: true;
    canViewStats?: true;
    blocked?: true;
    id: int;
    about: string;
    participantsCount?: int;
    adminsCount?: int;
    kickedCount?: int;
    bannedCount?: int;
    onlineCount?: int;
    readInboxMaxId: int;
    readOutboxMaxId: int;
    unreadCount: int;
    chatPhoto: Api.TypePhoto;
    notifySettings: Api.TypePeerNotifySettings;
    exportedInvite?: Api.TypeExportedChatInvite;
    botInfo: Api.TypeBotInfo[];
    migratedFromChatId?: int;
    migratedFromMaxId?: int;
    pinnedMsgId?: int;
    stickerset?: Api.TypeStickerSet;
    availableMinId?: int;
    folderId?: int;
    linkedChatId?: int;
    location?: Api.TypeChannelLocation;
    slowmodeSeconds?: int;
    slowmodeNextSendDate?: int;
    statsDc?: int;
    pts: int;
    call?: Api.TypeInputGroupCall;
    ttlPeriod?: int;
    pendingSuggestions?: string[];
    groupcallDefaultJoinAs?: Api.TypePeer;
  };
  export class ChatParticipant extends VirtualClass<{
    userId: int;
    inviterId: int;
    date: int;
  }> {
    userId: int;
    inviterId: int;
    date: int;
  };
  export class ChatParticipantCreator extends VirtualClass<{
    userId: int;
  }> {
    userId: int;
  };
  export class ChatParticipantAdmin extends VirtualClass<{
    userId: int;
    inviterId: int;
    date: int;
  }> {
    userId: int;
    inviterId: int;
    date: int;
  };
  export class ChatParticipantsForbidden extends VirtualClass<{
    // flags: undefined;
    chatId: int;
    selfParticipant?: Api.TypeChatParticipant;
  }> {
    // flags: undefined;
    chatId: int;
    selfParticipant?: Api.TypeChatParticipant;
  };
  export class ChatParticipants extends VirtualClass<{
    chatId: int;
    participants: Api.TypeChatParticipant[];
    version: int;
  }> {
    chatId: int;
    participants: Api.TypeChatParticipant[];
    version: int;
  };
  export class ChatPhotoEmpty extends VirtualClass<void> {};
  export class ChatPhoto extends VirtualClass<{
    // flags: undefined;
    hasVideo?: true;
    photoId: long;
    strippedThumb?: bytes;
    dcId: int;
  }> {
    // flags: undefined;
    hasVideo?: true;
    photoId: long;
    strippedThumb?: bytes;
    dcId: int;
  };
  export class MessageEmpty extends VirtualClass<{
    // flags: undefined;
    id: int;
    peerId?: Api.TypePeer;
  }> {
    // flags: undefined;
    id: int;
    peerId?: Api.TypePeer;
  };
  export class Message extends VirtualClass<{
    // flags: undefined;
    out?: true;
    mentioned?: true;
    mediaUnread?: true;
    silent?: true;
    post?: true;
    fromScheduled?: true;
    legacy?: true;
    editHide?: true;
    pinned?: true;
    id: int;
    fromId?: Api.TypePeer;
    peerId: Api.TypePeer;
    fwdFrom?: Api.TypeMessageFwdHeader;
    viaBotId?: int;
    replyTo?: Api.TypeMessageReplyHeader;
    date: int;
    message: string;
    media?: Api.TypeMessageMedia;
    replyMarkup?: Api.TypeReplyMarkup;
    entities?: Api.TypeMessageEntity[];
    views?: int;
    forwards?: int;
    replies?: Api.TypeMessageReplies;
    editDate?: int;
    postAuthor?: string;
    groupedId?: long;
    restrictionReason?: Api.TypeRestrictionReason[];
    ttlPeriod?: int;
  }> {
    // flags: undefined;
    out?: true;
    mentioned?: true;
    mediaUnread?: true;
    silent?: true;
    post?: true;
    fromScheduled?: true;
    legacy?: true;
    editHide?: true;
    pinned?: true;
    id: int;
    fromId?: Api.TypePeer;
    peerId: Api.TypePeer;
    fwdFrom?: Api.TypeMessageFwdHeader;
    viaBotId?: int;
    replyTo?: Api.TypeMessageReplyHeader;
    date: int;
    message: string;
    media?: Api.TypeMessageMedia;
    replyMarkup?: Api.TypeReplyMarkup;
    entities?: Api.TypeMessageEntity[];
    views?: int;
    forwards?: int;
    replies?: Api.TypeMessageReplies;
    editDate?: int;
    postAuthor?: string;
    groupedId?: long;
    restrictionReason?: Api.TypeRestrictionReason[];
    ttlPeriod?: int;
  };
  export class MessageService extends VirtualClass<{
    // flags: undefined;
    out?: true;
    mentioned?: true;
    mediaUnread?: true;
    silent?: true;
    post?: true;
    legacy?: true;
    id: int;
    fromId?: Api.TypePeer;
    peerId: Api.TypePeer;
    replyTo?: Api.TypeMessageReplyHeader;
    date: int;
    action: Api.TypeMessageAction;
    ttlPeriod?: int;
  }> {
    // flags: undefined;
    out?: true;
    mentioned?: true;
    mediaUnread?: true;
    silent?: true;
    post?: true;
    legacy?: true;
    id: int;
    fromId?: Api.TypePeer;
    peerId: Api.TypePeer;
    replyTo?: Api.TypeMessageReplyHeader;
    date: int;
    action: Api.TypeMessageAction;
    ttlPeriod?: int;
  };
  export class MessageMediaEmpty extends VirtualClass<void> {};
  export class MessageMediaPhoto extends VirtualClass<{
    // flags: undefined;
    photo?: Api.TypePhoto;
    ttlSeconds?: int;
  } | void> {
    // flags: undefined;
    photo?: Api.TypePhoto;
    ttlSeconds?: int;
  };
  export class MessageMediaGeo extends VirtualClass<{
    geo: Api.TypeGeoPoint;
  }> {
    geo: Api.TypeGeoPoint;
  };
  export class MessageMediaContact extends VirtualClass<{
    phoneNumber: string;
    firstName: string;
    lastName: string;
    vcard: string;
    userId: int;
  }> {
    phoneNumber: string;
    firstName: string;
    lastName: string;
    vcard: string;
    userId: int;
  };
  export class MessageMediaUnsupported extends VirtualClass<void> {};
  export class MessageMediaDocument extends VirtualClass<{
    // flags: undefined;
    document?: Api.TypeDocument;
    ttlSeconds?: int;
  } | void> {
    // flags: undefined;
    document?: Api.TypeDocument;
    ttlSeconds?: int;
  };
  export class MessageMediaWebPage extends VirtualClass<{
    webpage: Api.TypeWebPage;
  }> {
    webpage: Api.TypeWebPage;
  };
  export class MessageMediaVenue extends VirtualClass<{
    geo: Api.TypeGeoPoint;
    title: string;
    address: string;
    provider: string;
    venueId: string;
    venueType: string;
  }> {
    geo: Api.TypeGeoPoint;
    title: string;
    address: string;
    provider: string;
    venueId: string;
    venueType: string;
  };
  export class MessageMediaGame extends VirtualClass<{
    game: Api.TypeGame;
  }> {
    game: Api.TypeGame;
  };
  export class MessageMediaInvoice extends VirtualClass<{
    // flags: undefined;
    shippingAddressRequested?: true;
    test?: true;
    title: string;
    description: string;
    photo?: Api.TypeWebDocument;
    receiptMsgId?: int;
    currency: string;
    totalAmount: long;
    startParam: string;
  }> {
    // flags: undefined;
    shippingAddressRequested?: true;
    test?: true;
    title: string;
    description: string;
    photo?: Api.TypeWebDocument;
    receiptMsgId?: int;
    currency: string;
    totalAmount: long;
    startParam: string;
  };
  export class MessageMediaGeoLive extends VirtualClass<{
    // flags: undefined;
    geo: Api.TypeGeoPoint;
    heading?: int;
    period: int;
    proximityNotificationRadius?: int;
  }> {
    // flags: undefined;
    geo: Api.TypeGeoPoint;
    heading?: int;
    period: int;
    proximityNotificationRadius?: int;
  };
  export class MessageMediaPoll extends VirtualClass<{
    poll: Api.TypePoll;
    results: Api.TypePollResults;
  }> {
    poll: Api.TypePoll;
    results: Api.TypePollResults;
  };
  export class MessageMediaDice extends VirtualClass<{
    value: int;
    emoticon: string;
  }> {
    value: int;
    emoticon: string;
  };
  export class MessageActionEmpty extends VirtualClass<void> {};
  export class MessageActionChatCreate extends VirtualClass<{
    title: string;
    users: int[];
  }> {
    title: string;
    users: int[];
  };
  export class MessageActionChatEditTitle extends VirtualClass<{
    title: string;
  }> {
    title: string;
  };
  export class MessageActionChatEditPhoto extends VirtualClass<{
    photo: Api.TypePhoto;
  }> {
    photo: Api.TypePhoto;
  };
  export class MessageActionChatDeletePhoto extends VirtualClass<void> {};
  export class MessageActionChatAddUser extends VirtualClass<{
    users: int[];
  }> {
    users: int[];
  };
  export class MessageActionChatDeleteUser extends VirtualClass<{
    userId: int;
  }> {
    userId: int;
  };
  export class MessageActionChatJoinedByLink extends VirtualClass<{
    inviterId: int;
  }> {
    inviterId: int;
  };
  export class MessageActionChannelCreate extends VirtualClass<{
    title: string;
  }> {
    title: string;
  };
  export class MessageActionChatMigrateTo extends VirtualClass<{
    channelId: int;
  }> {
    channelId: int;
  };
  export class MessageActionChannelMigrateFrom extends VirtualClass<{
    title: string;
    chatId: int;
  }> {
    title: string;
    chatId: int;
  };
  export class MessageActionPinMessage extends VirtualClass<void> {};
  export class MessageActionHistoryClear extends VirtualClass<void> {};
  export class MessageActionGameScore extends VirtualClass<{
    gameId: long;
    score: int;
  }> {
    gameId: long;
    score: int;
  };
  export class MessageActionPaymentSentMe extends VirtualClass<{
    // flags: undefined;
    currency: string;
    totalAmount: long;
    payload: bytes;
    info?: Api.TypePaymentRequestedInfo;
    shippingOptionId?: string;
    charge: Api.TypePaymentCharge;
  }> {
    // flags: undefined;
    currency: string;
    totalAmount: long;
    payload: bytes;
    info?: Api.TypePaymentRequestedInfo;
    shippingOptionId?: string;
    charge: Api.TypePaymentCharge;
  };
  export class MessageActionPaymentSent extends VirtualClass<{
    currency: string;
    totalAmount: long;
  }> {
    currency: string;
    totalAmount: long;
  };
  export class MessageActionPhoneCall extends VirtualClass<{
    // flags: undefined;
    video?: true;
    callId: long;
    reason?: Api.TypePhoneCallDiscardReason;
    duration?: int;
  }> {
    // flags: undefined;
    video?: true;
    callId: long;
    reason?: Api.TypePhoneCallDiscardReason;
    duration?: int;
  };
  export class MessageActionScreenshotTaken extends VirtualClass<void> {};
  export class MessageActionCustomAction extends VirtualClass<{
    message: string;
  }> {
    message: string;
  };
  export class MessageActionBotAllowed extends VirtualClass<{
    domain: string;
  }> {
    domain: string;
  };
  export class MessageActionSecureValuesSentMe extends VirtualClass<{
    values: Api.TypeSecureValue[];
    credentials: Api.TypeSecureCredentialsEncrypted;
  }> {
    values: Api.TypeSecureValue[];
    credentials: Api.TypeSecureCredentialsEncrypted;
  };
  export class MessageActionSecureValuesSent extends VirtualClass<{
    types: Api.TypeSecureValueType[];
  }> {
    types: Api.TypeSecureValueType[];
  };
  export class MessageActionContactSignUp extends VirtualClass<void> {};
  export class MessageActionGeoProximityReached extends VirtualClass<{
    fromId: Api.TypePeer;
    toId: Api.TypePeer;
    distance: int;
  }> {
    fromId: Api.TypePeer;
    toId: Api.TypePeer;
    distance: int;
  };
  export class MessageActionGroupCall extends VirtualClass<{
    // flags: undefined;
    call: Api.TypeInputGroupCall;
    duration?: int;
  }> {
    // flags: undefined;
    call: Api.TypeInputGroupCall;
    duration?: int;
  };
  export class MessageActionInviteToGroupCall extends VirtualClass<{
    call: Api.TypeInputGroupCall;
    users: int[];
  }> {
    call: Api.TypeInputGroupCall;
    users: int[];
  };
  export class MessageActionSetMessagesTTL extends VirtualClass<{
    period: int;
  }> {
    period: int;
  };
  export class MessageActionGroupCallScheduled extends VirtualClass<{
    call: Api.TypeInputGroupCall;
    scheduleDate: int;
  }> {
    call: Api.TypeInputGroupCall;
    scheduleDate: int;
  };
  export class Dialog extends VirtualClass<{
    // flags: undefined;
    pinned?: true;
    unreadMark?: true;
    peer: Api.TypePeer;
    topMessage: int;
    readInboxMaxId: int;
    readOutboxMaxId: int;
    unreadCount: int;
    unreadMentionsCount: int;
    notifySettings: Api.TypePeerNotifySettings;
    pts?: int;
    draft?: Api.TypeDraftMessage;
    folderId?: int;
  }> {
    // flags: undefined;
    pinned?: true;
    unreadMark?: true;
    peer: Api.TypePeer;
    topMessage: int;
    readInboxMaxId: int;
    readOutboxMaxId: int;
    unreadCount: int;
    unreadMentionsCount: int;
    notifySettings: Api.TypePeerNotifySettings;
    pts?: int;
    draft?: Api.TypeDraftMessage;
    folderId?: int;
  };
  export class DialogFolder extends VirtualClass<{
    // flags: undefined;
    pinned?: true;
    folder: Api.TypeFolder;
    peer: Api.TypePeer;
    topMessage: int;
    unreadMutedPeersCount: int;
    unreadUnmutedPeersCount: int;
    unreadMutedMessagesCount: int;
    unreadUnmutedMessagesCount: int;
  }> {
    // flags: undefined;
    pinned?: true;
    folder: Api.TypeFolder;
    peer: Api.TypePeer;
    topMessage: int;
    unreadMutedPeersCount: int;
    unreadUnmutedPeersCount: int;
    unreadMutedMessagesCount: int;
    unreadUnmutedMessagesCount: int;
  };
  export class PhotoEmpty extends VirtualClass<{
    id: long;
  }> {
    id: long;
  };
  export class Photo extends VirtualClass<{
    // flags: undefined;
    hasStickers?: true;
    id: long;
    accessHash: long;
    fileReference: bytes;
    date: int;
    sizes: Api.TypePhotoSize[];
    videoSizes?: Api.TypeVideoSize[];
    dcId: int;
  }> {
    // flags: undefined;
    hasStickers?: true;
    id: long;
    accessHash: long;
    fileReference: bytes;
    date: int;
    sizes: Api.TypePhotoSize[];
    videoSizes?: Api.TypeVideoSize[];
    dcId: int;
  };
  export class PhotoSizeEmpty extends VirtualClass<{
    type: string;
  }> {
    type: string;
  };
  export class PhotoSize extends VirtualClass<{
    type: string;
    w: int;
    h: int;
    size: int;
  }> {
    type: string;
    w: int;
    h: int;
    size: int;
  };
  export class PhotoCachedSize extends VirtualClass<{
    type: string;
    w: int;
    h: int;
    bytes: bytes;
  }> {
    type: string;
    w: int;
    h: int;
    bytes: bytes;
  };
  export class PhotoStrippedSize extends VirtualClass<{
    type: string;
    bytes: bytes;
  }> {
    type: string;
    bytes: bytes;
  };
  export class PhotoSizeProgressive extends VirtualClass<{
    type: string;
    w: int;
    h: int;
    sizes: int[];
  }> {
    type: string;
    w: int;
    h: int;
    sizes: int[];
  };
  export class PhotoPathSize extends VirtualClass<{
    type: string;
    bytes: bytes;
  }> {
    type: string;
    bytes: bytes;
  };
  export class GeoPointEmpty extends VirtualClass<void> {};
  export class GeoPoint extends VirtualClass<{
    // flags: undefined;
    long: double;
    lat: double;
    accessHash: long;
    accuracyRadius?: int;
  }> {
    // flags: undefined;
    long: double;
    lat: double;
    accessHash: long;
    accuracyRadius?: int;
  };
  export class InputNotifyPeer extends VirtualClass<{
    peer: Api.TypeInputPeer;
  }> {
    peer: Api.TypeInputPeer;
  };
  export class InputNotifyUsers extends VirtualClass<void> {};
  export class InputNotifyChats extends VirtualClass<void> {};
  export class InputNotifyBroadcasts extends VirtualClass<void> {};
  export class InputPeerNotifySettings extends VirtualClass<{
    // flags: undefined;
    showPreviews?: Bool;
    silent?: Bool;
    muteUntil?: int;
    sound?: string;
  } | void> {
    // flags: undefined;
    showPreviews?: Bool;
    silent?: Bool;
    muteUntil?: int;
    sound?: string;
  };
  export class PeerNotifySettings extends VirtualClass<{
    // flags: undefined;
    showPreviews?: Bool;
    silent?: Bool;
    muteUntil?: int;
    sound?: string;
  } | void> {
    // flags: undefined;
    showPreviews?: Bool;
    silent?: Bool;
    muteUntil?: int;
    sound?: string;
  };
  export class PeerSettings extends VirtualClass<{
    // flags: undefined;
    reportSpam?: true;
    addContact?: true;
    blockContact?: true;
    shareContact?: true;
    needContactsException?: true;
    reportGeo?: true;
    autoarchived?: true;
    inviteMembers?: true;
    geoDistance?: int;
  } | void> {
    // flags: undefined;
    reportSpam?: true;
    addContact?: true;
    blockContact?: true;
    shareContact?: true;
    needContactsException?: true;
    reportGeo?: true;
    autoarchived?: true;
    inviteMembers?: true;
    geoDistance?: int;
  };
  export class WallPaper extends VirtualClass<{
    id: long;
    // flags: undefined;
    creator?: true;
    default?: true;
    pattern?: true;
    dark?: true;
    accessHash: long;
    slug: string;
    document: Api.TypeDocument;
    settings?: Api.TypeWallPaperSettings;
  }> {
    id: long;
    // flags: undefined;
    creator?: true;
    default?: true;
    pattern?: true;
    dark?: true;
    accessHash: long;
    slug: string;
    document: Api.TypeDocument;
    settings?: Api.TypeWallPaperSettings;
  };
  export class WallPaperNoFile extends VirtualClass<{
    // flags: undefined;
    default?: true;
    dark?: true;
    settings?: Api.TypeWallPaperSettings;
  } | void> {
    // flags: undefined;
    default?: true;
    dark?: true;
    settings?: Api.TypeWallPaperSettings;
  };
  export class InputReportReasonSpam extends VirtualClass<void> {};
  export class InputReportReasonViolence extends VirtualClass<void> {};
  export class InputReportReasonPornography extends VirtualClass<void> {};
  export class InputReportReasonChildAbuse extends VirtualClass<void> {};
  export class InputReportReasonOther extends VirtualClass<void> {};
  export class InputReportReasonCopyright extends VirtualClass<void> {};
  export class InputReportReasonGeoIrrelevant extends VirtualClass<void> {};
  export class InputReportReasonFake extends VirtualClass<void> {};
  export class UserFull extends VirtualClass<{
    // flags: undefined;
    blocked?: true;
    phoneCallsAvailable?: true;
    phoneCallsPrivate?: true;
    canPinMessage?: true;
    hasScheduled?: true;
    videoCallsAvailable?: true;
    user: Api.TypeUser;
    about?: string;
    settings: Api.TypePeerSettings;
    profilePhoto?: Api.TypePhoto;
    notifySettings: Api.TypePeerNotifySettings;
    botInfo?: Api.TypeBotInfo;
    pinnedMsgId?: int;
    commonChatsCount: int;
    folderId?: int;
    ttlPeriod?: int;
  }> {
    // flags: undefined;
    blocked?: true;
    phoneCallsAvailable?: true;
    phoneCallsPrivate?: true;
    canPinMessage?: true;
    hasScheduled?: true;
    videoCallsAvailable?: true;
    user: Api.TypeUser;
    about?: string;
    settings: Api.TypePeerSettings;
    profilePhoto?: Api.TypePhoto;
    notifySettings: Api.TypePeerNotifySettings;
    botInfo?: Api.TypeBotInfo;
    pinnedMsgId?: int;
    commonChatsCount: int;
    folderId?: int;
    ttlPeriod?: int;
  };
  export class Contact extends VirtualClass<{
    userId: int;
    mutual: Bool;
  }> {
    userId: int;
    mutual: Bool;
  };
  export class ImportedContact extends VirtualClass<{
    userId: int;
    clientId: long;
  }> {
    userId: int;
    clientId: long;
  };
  export class ContactStatus extends VirtualClass<{
    userId: int;
    status: Api.TypeUserStatus;
  }> {
    userId: int;
    status: Api.TypeUserStatus;
  };
  export class InputMessagesFilterEmpty extends VirtualClass<void> {};
  export class InputMessagesFilterPhotos extends VirtualClass<void> {};
  export class InputMessagesFilterVideo extends VirtualClass<void> {};
  export class InputMessagesFilterPhotoVideo extends VirtualClass<void> {};
  export class InputMessagesFilterDocument extends VirtualClass<void> {};
  export class InputMessagesFilterUrl extends VirtualClass<void> {};
  export class InputMessagesFilterGif extends VirtualClass<void> {};
  export class InputMessagesFilterVoice extends VirtualClass<void> {};
  export class InputMessagesFilterMusic extends VirtualClass<void> {};
  export class InputMessagesFilterChatPhotos extends VirtualClass<void> {};
  export class InputMessagesFilterPhoneCalls extends VirtualClass<{
    // flags: undefined;
    missed?: true;
  } | void> {
    // flags: undefined;
    missed?: true;
  };
  export class InputMessagesFilterRoundVoice extends VirtualClass<void> {};
  export class InputMessagesFilterRoundVideo extends VirtualClass<void> {};
  export class InputMessagesFilterMyMentions extends VirtualClass<void> {};
  export class InputMessagesFilterGeo extends VirtualClass<void> {};
  export class InputMessagesFilterContacts extends VirtualClass<void> {};
  export class InputMessagesFilterPinned extends VirtualClass<void> {};
  export class UpdateNewMessage extends VirtualClass<{
    message: Api.TypeMessage;
    pts: int;
    ptsCount: int;
  }> {
    message: Api.TypeMessage;
    pts: int;
    ptsCount: int;
  };
  export class UpdateMessageID extends VirtualClass<{
    id: int;
    randomId: long;
  }> {
    id: int;
    randomId: long;
  };
  export class UpdateDeleteMessages extends VirtualClass<{
    messages: int[];
    pts: int;
    ptsCount: int;
  }> {
    messages: int[];
    pts: int;
    ptsCount: int;
  };
  export class UpdateUserTyping extends VirtualClass<{
    userId: int;
    action: Api.TypeSendMessageAction;
  }> {
    userId: int;
    action: Api.TypeSendMessageAction;
  };
  export class UpdateChatUserTyping extends VirtualClass<{
    chatId: int;
    fromId: Api.TypePeer;
    action: Api.TypeSendMessageAction;
  }> {
    chatId: int;
    fromId: Api.TypePeer;
    action: Api.TypeSendMessageAction;
  };
  export class UpdateChatParticipants extends VirtualClass<{
    participants: Api.TypeChatParticipants;
  }> {
    participants: Api.TypeChatParticipants;
  };
  export class UpdateUserStatus extends VirtualClass<{
    userId: int;
    status: Api.TypeUserStatus;
  }> {
    userId: int;
    status: Api.TypeUserStatus;
  };
  export class UpdateUserName extends VirtualClass<{
    userId: int;
    firstName: string;
    lastName: string;
    username: string;
  }> {
    userId: int;
    firstName: string;
    lastName: string;
    username: string;
  };
  export class UpdateUserPhoto extends VirtualClass<{
    userId: int;
    date: int;
    photo: Api.TypeUserProfilePhoto;
    previous: Bool;
  }> {
    userId: int;
    date: int;
    photo: Api.TypeUserProfilePhoto;
    previous: Bool;
  };
  export class UpdateNewEncryptedMessage extends VirtualClass<{
    message: Api.TypeEncryptedMessage;
    qts: int;
  }> {
    message: Api.TypeEncryptedMessage;
    qts: int;
  };
  export class UpdateEncryptedChatTyping extends VirtualClass<{
    chatId: int;
  }> {
    chatId: int;
  };
  export class UpdateEncryption extends VirtualClass<{
    chat: Api.TypeEncryptedChat;
    date: int;
  }> {
    chat: Api.TypeEncryptedChat;
    date: int;
  };
  export class UpdateEncryptedMessagesRead extends VirtualClass<{
    chatId: int;
    maxDate: int;
    date: int;
  }> {
    chatId: int;
    maxDate: int;
    date: int;
  };
  export class UpdateChatParticipantAdd extends VirtualClass<{
    chatId: int;
    userId: int;
    inviterId: int;
    date: int;
    version: int;
  }> {
    chatId: int;
    userId: int;
    inviterId: int;
    date: int;
    version: int;
  };
  export class UpdateChatParticipantDelete extends VirtualClass<{
    chatId: int;
    userId: int;
    version: int;
  }> {
    chatId: int;
    userId: int;
    version: int;
  };
  export class UpdateDcOptions extends VirtualClass<{
    dcOptions: Api.TypeDcOption[];
  }> {
    dcOptions: Api.TypeDcOption[];
  };
  export class UpdateNotifySettings extends VirtualClass<{
    peer: Api.TypeNotifyPeer;
    notifySettings: Api.TypePeerNotifySettings;
  }> {
    peer: Api.TypeNotifyPeer;
    notifySettings: Api.TypePeerNotifySettings;
  };
  export class UpdateServiceNotification extends VirtualClass<{
    // flags: undefined;
    popup?: true;
    inboxDate?: int;
    type: string;
    message: string;
    media: Api.TypeMessageMedia;
    entities: Api.TypeMessageEntity[];
  }> {
    // flags: undefined;
    popup?: true;
    inboxDate?: int;
    type: string;
    message: string;
    media: Api.TypeMessageMedia;
    entities: Api.TypeMessageEntity[];
  };
  export class UpdatePrivacy extends VirtualClass<{
    key: Api.TypePrivacyKey;
    rules: Api.TypePrivacyRule[];
  }> {
    key: Api.TypePrivacyKey;
    rules: Api.TypePrivacyRule[];
  };
  export class UpdateUserPhone extends VirtualClass<{
    userId: int;
    phone: string;
  }> {
    userId: int;
    phone: string;
  };
  export class UpdateReadHistoryInbox extends VirtualClass<{
    // flags: undefined;
    folderId?: int;
    peer: Api.TypePeer;
    maxId: int;
    stillUnreadCount: int;
    pts: int;
    ptsCount: int;
  }> {
    // flags: undefined;
    folderId?: int;
    peer: Api.TypePeer;
    maxId: int;
    stillUnreadCount: int;
    pts: int;
    ptsCount: int;
  };
  export class UpdateReadHistoryOutbox extends VirtualClass<{
    peer: Api.TypePeer;
    maxId: int;
    pts: int;
    ptsCount: int;
  }> {
    peer: Api.TypePeer;
    maxId: int;
    pts: int;
    ptsCount: int;
  };
  export class UpdateWebPage extends VirtualClass<{
    webpage: Api.TypeWebPage;
    pts: int;
    ptsCount: int;
  }> {
    webpage: Api.TypeWebPage;
    pts: int;
    ptsCount: int;
  };
  export class UpdateReadMessagesContents extends VirtualClass<{
    messages: int[];
    pts: int;
    ptsCount: int;
  }> {
    messages: int[];
    pts: int;
    ptsCount: int;
  };
  export class UpdateChannelTooLong extends VirtualClass<{
    // flags: undefined;
    channelId: int;
    pts?: int;
  }> {
    // flags: undefined;
    channelId: int;
    pts?: int;
  };
  export class UpdateChannel extends VirtualClass<{
    channelId: int;
  }> {
    channelId: int;
  };
  export class UpdateNewChannelMessage extends VirtualClass<{
    message: Api.TypeMessage;
    pts: int;
    ptsCount: int;
  }> {
    message: Api.TypeMessage;
    pts: int;
    ptsCount: int;
  };
  export class UpdateReadChannelInbox extends VirtualClass<{
    // flags: undefined;
    folderId?: int;
    channelId: int;
    maxId: int;
    stillUnreadCount: int;
    pts: int;
  }> {
    // flags: undefined;
    folderId?: int;
    channelId: int;
    maxId: int;
    stillUnreadCount: int;
    pts: int;
  };
  export class UpdateDeleteChannelMessages extends VirtualClass<{
    channelId: int;
    messages: int[];
    pts: int;
    ptsCount: int;
  }> {
    channelId: int;
    messages: int[];
    pts: int;
    ptsCount: int;
  };
  export class UpdateChannelMessageViews extends VirtualClass<{
    channelId: int;
    id: int;
    views: int;
  }> {
    channelId: int;
    id: int;
    views: int;
  };
  export class UpdateChatParticipantAdmin extends VirtualClass<{
    chatId: int;
    userId: int;
    isAdmin: Bool;
    version: int;
  }> {
    chatId: int;
    userId: int;
    isAdmin: Bool;
    version: int;
  };
  export class UpdateNewStickerSet extends VirtualClass<{
    stickerset: messages.TypeStickerSet;
  }> {
    stickerset: messages.TypeStickerSet;
  };
  export class UpdateStickerSetsOrder extends VirtualClass<{
    // flags: undefined;
    masks?: true;
    order: long[];
  }> {
    // flags: undefined;
    masks?: true;
    order: long[];
  };
  export class UpdateStickerSets extends VirtualClass<void> {};
  export class UpdateSavedGifs extends VirtualClass<void> {};
  export class UpdateBotInlineQuery extends VirtualClass<{
    // flags: undefined;
    queryId: long;
    userId: int;
    query: string;
    geo?: Api.TypeGeoPoint;
    peerType?: Api.TypeInlineQueryPeerType;
    offset: string;
  }> {
    // flags: undefined;
    queryId: long;
    userId: int;
    query: string;
    geo?: Api.TypeGeoPoint;
    peerType?: Api.TypeInlineQueryPeerType;
    offset: string;
  };
  export class UpdateBotInlineSend extends VirtualClass<{
    // flags: undefined;
    userId: int;
    query: string;
    geo?: Api.TypeGeoPoint;
    id: string;
    msgId?: Api.TypeInputBotInlineMessageID;
  }> {
    // flags: undefined;
    userId: int;
    query: string;
    geo?: Api.TypeGeoPoint;
    id: string;
    msgId?: Api.TypeInputBotInlineMessageID;
  };
  export class UpdateEditChannelMessage extends VirtualClass<{
    message: Api.TypeMessage;
    pts: int;
    ptsCount: int;
  }> {
    message: Api.TypeMessage;
    pts: int;
    ptsCount: int;
  };
  export class UpdateBotCallbackQuery extends VirtualClass<{
    // flags: undefined;
    queryId: long;
    userId: int;
    peer: Api.TypePeer;
    msgId: int;
    chatInstance: long;
    data?: bytes;
    gameShortName?: string;
  }> {
    // flags: undefined;
    queryId: long;
    userId: int;
    peer: Api.TypePeer;
    msgId: int;
    chatInstance: long;
    data?: bytes;
    gameShortName?: string;
  };
  export class UpdateEditMessage extends VirtualClass<{
    message: Api.TypeMessage;
    pts: int;
    ptsCount: int;
  }> {
    message: Api.TypeMessage;
    pts: int;
    ptsCount: int;
  };
  export class UpdateInlineBotCallbackQuery extends VirtualClass<{
    // flags: undefined;
    queryId: long;
    userId: int;
    msgId: Api.TypeInputBotInlineMessageID;
    chatInstance: long;
    data?: bytes;
    gameShortName?: string;
  }> {
    // flags: undefined;
    queryId: long;
    userId: int;
    msgId: Api.TypeInputBotInlineMessageID;
    chatInstance: long;
    data?: bytes;
    gameShortName?: string;
  };
  export class UpdateReadChannelOutbox extends VirtualClass<{
    channelId: int;
    maxId: int;
  }> {
    channelId: int;
    maxId: int;
  };
  export class UpdateDraftMessage extends VirtualClass<{
    peer: Api.TypePeer;
    draft: Api.TypeDraftMessage;
  }> {
    peer: Api.TypePeer;
    draft: Api.TypeDraftMessage;
  };
  export class UpdateReadFeaturedStickers extends VirtualClass<void> {};
  export class UpdateRecentStickers extends VirtualClass<void> {};
  export class UpdateConfig extends VirtualClass<void> {};
  export class UpdatePtsChanged extends VirtualClass<void> {};
  export class UpdateChannelWebPage extends VirtualClass<{
    channelId: int;
    webpage: Api.TypeWebPage;
    pts: int;
    ptsCount: int;
  }> {
    channelId: int;
    webpage: Api.TypeWebPage;
    pts: int;
    ptsCount: int;
  };
  export class UpdateDialogPinned extends VirtualClass<{
    // flags: undefined;
    pinned?: true;
    folderId?: int;
    peer: Api.TypeDialogPeer;
  }> {
    // flags: undefined;
    pinned?: true;
    folderId?: int;
    peer: Api.TypeDialogPeer;
  };
  export class UpdatePinnedDialogs extends VirtualClass<{
    // flags: undefined;
    folderId?: int;
    order?: Api.TypeDialogPeer[];
  } | void> {
    // flags: undefined;
    folderId?: int;
    order?: Api.TypeDialogPeer[];
  };
  export class UpdateBotWebhookJSON extends VirtualClass<{
    data: Api.TypeDataJSON;
  }> {
    data: Api.TypeDataJSON;
  };
  export class UpdateBotWebhookJSONQuery extends VirtualClass<{
    queryId: long;
    data: Api.TypeDataJSON;
    timeout: int;
  }> {
    queryId: long;
    data: Api.TypeDataJSON;
    timeout: int;
  };
  export class UpdateBotShippingQuery extends VirtualClass<{
    queryId: long;
    userId: int;
    payload: bytes;
    shippingAddress: Api.TypePostAddress;
  }> {
    queryId: long;
    userId: int;
    payload: bytes;
    shippingAddress: Api.TypePostAddress;
  };
  export class UpdateBotPrecheckoutQuery extends VirtualClass<{
    // flags: undefined;
    queryId: long;
    userId: int;
    payload: bytes;
    info?: Api.TypePaymentRequestedInfo;
    shippingOptionId?: string;
    currency: string;
    totalAmount: long;
  }> {
    // flags: undefined;
    queryId: long;
    userId: int;
    payload: bytes;
    info?: Api.TypePaymentRequestedInfo;
    shippingOptionId?: string;
    currency: string;
    totalAmount: long;
  };
  export class UpdatePhoneCall extends VirtualClass<{
    phoneCall: Api.TypePhoneCall;
  }> {
    phoneCall: Api.TypePhoneCall;
  };
  export class UpdateLangPackTooLong extends VirtualClass<{
    langCode: string;
  }> {
    langCode: string;
  };
  export class UpdateLangPack extends VirtualClass<{
    difference: Api.TypeLangPackDifference;
  }> {
    difference: Api.TypeLangPackDifference;
  };
  export class UpdateFavedStickers extends VirtualClass<void> {};
  export class UpdateChannelReadMessagesContents extends VirtualClass<{
    channelId: int;
    messages: int[];
  }> {
    channelId: int;
    messages: int[];
  };
  export class UpdateContactsReset extends VirtualClass<void> {};
  export class UpdateChannelAvailableMessages extends VirtualClass<{
    channelId: int;
    availableMinId: int;
  }> {
    channelId: int;
    availableMinId: int;
  };
  export class UpdateDialogUnreadMark extends VirtualClass<{
    // flags: undefined;
    unread?: true;
    peer: Api.TypeDialogPeer;
  }> {
    // flags: undefined;
    unread?: true;
    peer: Api.TypeDialogPeer;
  };
  export class UpdateMessagePoll extends VirtualClass<{
    // flags: undefined;
    pollId: long;
    poll?: Api.TypePoll;
    results: Api.TypePollResults;
  }> {
    // flags: undefined;
    pollId: long;
    poll?: Api.TypePoll;
    results: Api.TypePollResults;
  };
  export class UpdateChatDefaultBannedRights extends VirtualClass<{
    peer: Api.TypePeer;
    defaultBannedRights: Api.TypeChatBannedRights;
    version: int;
  }> {
    peer: Api.TypePeer;
    defaultBannedRights: Api.TypeChatBannedRights;
    version: int;
  };
  export class UpdateFolderPeers extends VirtualClass<{
    folderPeers: Api.TypeFolderPeer[];
    pts: int;
    ptsCount: int;
  }> {
    folderPeers: Api.TypeFolderPeer[];
    pts: int;
    ptsCount: int;
  };
  export class UpdatePeerSettings extends VirtualClass<{
    peer: Api.TypePeer;
    settings: Api.TypePeerSettings;
  }> {
    peer: Api.TypePeer;
    settings: Api.TypePeerSettings;
  };
  export class UpdatePeerLocated extends VirtualClass<{
    peers: Api.TypePeerLocated[];
  }> {
    peers: Api.TypePeerLocated[];
  };
  export class UpdateNewScheduledMessage extends VirtualClass<{
    message: Api.TypeMessage;
  }> {
    message: Api.TypeMessage;
  };
  export class UpdateDeleteScheduledMessages extends VirtualClass<{
    peer: Api.TypePeer;
    messages: int[];
  }> {
    peer: Api.TypePeer;
    messages: int[];
  };
  export class UpdateTheme extends VirtualClass<{
    theme: Api.TypeTheme;
  }> {
    theme: Api.TypeTheme;
  };
  export class UpdateGeoLiveViewed extends VirtualClass<{
    peer: Api.TypePeer;
    msgId: int;
  }> {
    peer: Api.TypePeer;
    msgId: int;
  };
  export class UpdateLoginToken extends VirtualClass<void> {};
  export class UpdateMessagePollVote extends VirtualClass<{
    pollId: long;
    userId: int;
    options: bytes[];
  }> {
    pollId: long;
    userId: int;
    options: bytes[];
  };
  export class UpdateDialogFilter extends VirtualClass<{
    // flags: undefined;
    id: int;
    filter?: Api.TypeDialogFilter;
  }> {
    // flags: undefined;
    id: int;
    filter?: Api.TypeDialogFilter;
  };
  export class UpdateDialogFilterOrder extends VirtualClass<{
    order: int[];
  }> {
    order: int[];
  };
  export class UpdateDialogFilters extends VirtualClass<void> {};
  export class UpdatePhoneCallSignalingData extends VirtualClass<{
    phoneCallId: long;
    data: bytes;
  }> {
    phoneCallId: long;
    data: bytes;
  };
  export class UpdateChannelMessageForwards extends VirtualClass<{
    channelId: int;
    id: int;
    forwards: int;
  }> {
    channelId: int;
    id: int;
    forwards: int;
  };
  export class UpdateReadChannelDiscussionInbox extends VirtualClass<{
    // flags: undefined;
    channelId: int;
    topMsgId: int;
    readMaxId: int;
    broadcastId?: int;
    broadcastPost?: int;
  }> {
    // flags: undefined;
    channelId: int;
    topMsgId: int;
    readMaxId: int;
    broadcastId?: int;
    broadcastPost?: int;
  };
  export class UpdateReadChannelDiscussionOutbox extends VirtualClass<{
    channelId: int;
    topMsgId: int;
    readMaxId: int;
  }> {
    channelId: int;
    topMsgId: int;
    readMaxId: int;
  };
  export class UpdatePeerBlocked extends VirtualClass<{
    peerId: Api.TypePeer;
    blocked: Bool;
  }> {
    peerId: Api.TypePeer;
    blocked: Bool;
  };
  export class UpdateChannelUserTyping extends VirtualClass<{
    // flags: undefined;
    channelId: int;
    topMsgId?: int;
    fromId: Api.TypePeer;
    action: Api.TypeSendMessageAction;
  }> {
    // flags: undefined;
    channelId: int;
    topMsgId?: int;
    fromId: Api.TypePeer;
    action: Api.TypeSendMessageAction;
  };
  export class UpdatePinnedMessages extends VirtualClass<{
    // flags: undefined;
    pinned?: true;
    peer: Api.TypePeer;
    messages: int[];
    pts: int;
    ptsCount: int;
  }> {
    // flags: undefined;
    pinned?: true;
    peer: Api.TypePeer;
    messages: int[];
    pts: int;
    ptsCount: int;
  };
  export class UpdatePinnedChannelMessages extends VirtualClass<{
    // flags: undefined;
    pinned?: true;
    channelId: int;
    messages: int[];
    pts: int;
    ptsCount: int;
  }> {
    // flags: undefined;
    pinned?: true;
    channelId: int;
    messages: int[];
    pts: int;
    ptsCount: int;
  };
  export class UpdateChat extends VirtualClass<{
    chatId: int;
  }> {
    chatId: int;
  };
  export class UpdateGroupCallParticipants extends VirtualClass<{
    call: Api.TypeInputGroupCall;
    participants: Api.TypeGroupCallParticipant[];
    version: int;
  }> {
    call: Api.TypeInputGroupCall;
    participants: Api.TypeGroupCallParticipant[];
    version: int;
  };
  export class UpdateGroupCall extends VirtualClass<{
    chatId: int;
    call: Api.TypeGroupCall;
  }> {
    chatId: int;
    call: Api.TypeGroupCall;
  };
  export class UpdatePeerHistoryTTL extends VirtualClass<{
    // flags: undefined;
    peer: Api.TypePeer;
    ttlPeriod?: int;
  }> {
    // flags: undefined;
    peer: Api.TypePeer;
    ttlPeriod?: int;
  };
  export class UpdateChatParticipant extends VirtualClass<{
    // flags: undefined;
    chatId: int;
    date: int;
    actorId: int;
    userId: int;
    prevParticipant?: Api.TypeChatParticipant;
    newParticipant?: Api.TypeChatParticipant;
    invite?: Api.TypeExportedChatInvite;
    qts: int;
  }> {
    // flags: undefined;
    chatId: int;
    date: int;
    actorId: int;
    userId: int;
    prevParticipant?: Api.TypeChatParticipant;
    newParticipant?: Api.TypeChatParticipant;
    invite?: Api.TypeExportedChatInvite;
    qts: int;
  };
  export class UpdateChannelParticipant extends VirtualClass<{
    // flags: undefined;
    channelId: int;
    date: int;
    actorId: int;
    userId: int;
    prevParticipant?: Api.TypeChannelParticipant;
    newParticipant?: Api.TypeChannelParticipant;
    invite?: Api.TypeExportedChatInvite;
    qts: int;
  }> {
    // flags: undefined;
    channelId: int;
    date: int;
    actorId: int;
    userId: int;
    prevParticipant?: Api.TypeChannelParticipant;
    newParticipant?: Api.TypeChannelParticipant;
    invite?: Api.TypeExportedChatInvite;
    qts: int;
  };
  export class UpdateBotStopped extends VirtualClass<{
    userId: int;
    date: int;
    stopped: Bool;
    qts: int;
  }> {
    userId: int;
    date: int;
    stopped: Bool;
    qts: int;
  };
  export class UpdatesTooLong extends VirtualClass<void> {};
  export class UpdateShortMessage extends VirtualClass<{
    // flags: undefined;
    out?: true;
    mentioned?: true;
    mediaUnread?: true;
    silent?: true;
    id: int;
    userId: int;
    message: string;
    pts: int;
    ptsCount: int;
    date: int;
    fwdFrom?: Api.TypeMessageFwdHeader;
    viaBotId?: int;
    replyTo?: Api.TypeMessageReplyHeader;
    entities?: Api.TypeMessageEntity[];
    ttlPeriod?: int;
  }> {
    // flags: undefined;
    out?: true;
    mentioned?: true;
    mediaUnread?: true;
    silent?: true;
    id: int;
    userId: int;
    message: string;
    pts: int;
    ptsCount: int;
    date: int;
    fwdFrom?: Api.TypeMessageFwdHeader;
    viaBotId?: int;
    replyTo?: Api.TypeMessageReplyHeader;
    entities?: Api.TypeMessageEntity[];
    ttlPeriod?: int;
  };
  export class UpdateShortChatMessage extends VirtualClass<{
    // flags: undefined;
    out?: true;
    mentioned?: true;
    mediaUnread?: true;
    silent?: true;
    id: int;
    fromId: int;
    chatId: int;
    message: string;
    pts: int;
    ptsCount: int;
    date: int;
    fwdFrom?: Api.TypeMessageFwdHeader;
    viaBotId?: int;
    replyTo?: Api.TypeMessageReplyHeader;
    entities?: Api.TypeMessageEntity[];
    ttlPeriod?: int;
  }> {
    // flags: undefined;
    out?: true;
    mentioned?: true;
    mediaUnread?: true;
    silent?: true;
    id: int;
    fromId: int;
    chatId: int;
    message: string;
    pts: int;
    ptsCount: int;
    date: int;
    fwdFrom?: Api.TypeMessageFwdHeader;
    viaBotId?: int;
    replyTo?: Api.TypeMessageReplyHeader;
    entities?: Api.TypeMessageEntity[];
    ttlPeriod?: int;
  };
  export class UpdateShort extends VirtualClass<{
    update: Api.TypeUpdate;
    date: int;
  }> {
    update: Api.TypeUpdate;
    date: int;
  };
  export class UpdatesCombined extends VirtualClass<{
    updates: Api.TypeUpdate[];
    users: Api.TypeUser[];
    chats: Api.TypeChat[];
    date: int;
    seqStart: int;
    seq: int;
  }> {
    updates: Api.TypeUpdate[];
    users: Api.TypeUser[];
    chats: Api.TypeChat[];
    date: int;
    seqStart: int;
    seq: int;
  };
  export class Updates extends VirtualClass<{
    updates: Api.TypeUpdate[];
    users: Api.TypeUser[];
    chats: Api.TypeChat[];
    date: int;
    seq: int;
  }> {
    updates: Api.TypeUpdate[];
    users: Api.TypeUser[];
    chats: Api.TypeChat[];
    date: int;
    seq: int;
  };
  export class UpdateShortSentMessage extends VirtualClass<{
    // flags: undefined;
    out?: true;
    id: int;
    pts: int;
    ptsCount: int;
    date: int;
    media?: Api.TypeMessageMedia;
    entities?: Api.TypeMessageEntity[];
    ttlPeriod?: int;
  }> {
    // flags: undefined;
    out?: true;
    id: int;
    pts: int;
    ptsCount: int;
    date: int;
    media?: Api.TypeMessageMedia;
    entities?: Api.TypeMessageEntity[];
    ttlPeriod?: int;
  };
  export class DcOption extends VirtualClass<{
    // flags: undefined;
    ipv6?: true;
    mediaOnly?: true;
    tcpoOnly?: true;
    cdn?: true;
    static?: true;
    id: int;
    ipAddress: string;
    port: int;
    secret?: bytes;
  }> {
    // flags: undefined;
    ipv6?: true;
    mediaOnly?: true;
    tcpoOnly?: true;
    cdn?: true;
    static?: true;
    id: int;
    ipAddress: string;
    port: int;
    secret?: bytes;
  };
  export class Config extends VirtualClass<{
    // flags: undefined;
    phonecallsEnabled?: true;
    defaultP2pContacts?: true;
    preloadFeaturedStickers?: true;
    ignorePhoneEntities?: true;
    revokePmInbox?: true;
    blockedMode?: true;
    pfsEnabled?: true;
    date: int;
    expires: int;
    testMode: Bool;
    thisDc: int;
    dcOptions: Api.TypeDcOption[];
    dcTxtDomainName: string;
    chatSizeMax: int;
    megagroupSizeMax: int;
    forwardedCountMax: int;
    onlineUpdatePeriodMs: int;
    offlineBlurTimeoutMs: int;
    offlineIdleTimeoutMs: int;
    onlineCloudTimeoutMs: int;
    notifyCloudDelayMs: int;
    notifyDefaultDelayMs: int;
    pushChatPeriodMs: int;
    pushChatLimit: int;
    savedGifsLimit: int;
    editTimeLimit: int;
    revokeTimeLimit: int;
    revokePmTimeLimit: int;
    ratingEDecay: int;
    stickersRecentLimit: int;
    stickersFavedLimit: int;
    channelsReadMediaPeriod: int;
    tmpSessions?: int;
    pinnedDialogsCountMax: int;
    pinnedInfolderCountMax: int;
    callReceiveTimeoutMs: int;
    callRingTimeoutMs: int;
    callConnectTimeoutMs: int;
    callPacketTimeoutMs: int;
    meUrlPrefix: string;
    autoupdateUrlPrefix?: string;
    gifSearchUsername?: string;
    venueSearchUsername?: string;
    imgSearchUsername?: string;
    staticMapsProvider?: string;
    captionLengthMax: int;
    messageLengthMax: int;
    webfileDcId: int;
    suggestedLangCode?: string;
    langPackVersion?: int;
    baseLangPackVersion?: int;
  }> {
    // flags: undefined;
    phonecallsEnabled?: true;
    defaultP2pContacts?: true;
    preloadFeaturedStickers?: true;
    ignorePhoneEntities?: true;
    revokePmInbox?: true;
    blockedMode?: true;
    pfsEnabled?: true;
    date: int;
    expires: int;
    testMode: Bool;
    thisDc: int;
    dcOptions: Api.TypeDcOption[];
    dcTxtDomainName: string;
    chatSizeMax: int;
    megagroupSizeMax: int;
    forwardedCountMax: int;
    onlineUpdatePeriodMs: int;
    offlineBlurTimeoutMs: int;
    offlineIdleTimeoutMs: int;
    onlineCloudTimeoutMs: int;
    notifyCloudDelayMs: int;
    notifyDefaultDelayMs: int;
    pushChatPeriodMs: int;
    pushChatLimit: int;
    savedGifsLimit: int;
    editTimeLimit: int;
    revokeTimeLimit: int;
    revokePmTimeLimit: int;
    ratingEDecay: int;
    stickersRecentLimit: int;
    stickersFavedLimit: int;
    channelsReadMediaPeriod: int;
    tmpSessions?: int;
    pinnedDialogsCountMax: int;
    pinnedInfolderCountMax: int;
    callReceiveTimeoutMs: int;
    callRingTimeoutMs: int;
    callConnectTimeoutMs: int;
    callPacketTimeoutMs: int;
    meUrlPrefix: string;
    autoupdateUrlPrefix?: string;
    gifSearchUsername?: string;
    venueSearchUsername?: string;
    imgSearchUsername?: string;
    staticMapsProvider?: string;
    captionLengthMax: int;
    messageLengthMax: int;
    webfileDcId: int;
    suggestedLangCode?: string;
    langPackVersion?: int;
    baseLangPackVersion?: int;
  };
  export class NearestDc extends VirtualClass<{
    country: string;
    thisDc: int;
    nearestDc: int;
  }> {
    country: string;
    thisDc: int;
    nearestDc: int;
  };
  export class EncryptedChatEmpty extends VirtualClass<{
    id: int;
  }> {
    id: int;
  };
  export class EncryptedChatWaiting extends VirtualClass<{
    id: int;
    accessHash: long;
    date: int;
    adminId: int;
    participantId: int;
  }> {
    id: int;
    accessHash: long;
    date: int;
    adminId: int;
    participantId: int;
  };
  export class EncryptedChatRequested extends VirtualClass<{
    // flags: undefined;
    folderId?: int;
    id: int;
    accessHash: long;
    date: int;
    adminId: int;
    participantId: int;
    gA: bytes;
  }> {
    // flags: undefined;
    folderId?: int;
    id: int;
    accessHash: long;
    date: int;
    adminId: int;
    participantId: int;
    gA: bytes;
  };
  export class EncryptedChat extends VirtualClass<{
    id: int;
    accessHash: long;
    date: int;
    adminId: int;
    participantId: int;
    gAOrB: bytes;
    keyFingerprint: long;
  }> {
    id: int;
    accessHash: long;
    date: int;
    adminId: int;
    participantId: int;
    gAOrB: bytes;
    keyFingerprint: long;
  };
  export class EncryptedChatDiscarded extends VirtualClass<{
    // flags: undefined;
    historyDeleted?: true;
    id: int;
  }> {
    // flags: undefined;
    historyDeleted?: true;
    id: int;
  };
  export class InputEncryptedChat extends VirtualClass<{
    chatId: int;
    accessHash: long;
  }> {
    chatId: int;
    accessHash: long;
  };
  export class EncryptedFileEmpty extends VirtualClass<void> {};
  export class EncryptedFile extends VirtualClass<{
    id: long;
    accessHash: long;
    size: int;
    dcId: int;
    keyFingerprint: int;
  }> {
    id: long;
    accessHash: long;
    size: int;
    dcId: int;
    keyFingerprint: int;
  };
  export class InputEncryptedFileEmpty extends VirtualClass<void> {};
  export class InputEncryptedFileUploaded extends VirtualClass<{
    id: long;
    parts: int;
    md5Checksum: string;
    keyFingerprint: int;
  }> {
    id: long;
    parts: int;
    md5Checksum: string;
    keyFingerprint: int;
  };
  export class InputEncryptedFile extends VirtualClass<{
    id: long;
    accessHash: long;
  }> {
    id: long;
    accessHash: long;
  };
  export class InputEncryptedFileBigUploaded extends VirtualClass<{
    id: long;
    parts: int;
    keyFingerprint: int;
  }> {
    id: long;
    parts: int;
    keyFingerprint: int;
  };
  export class EncryptedMessage extends VirtualClass<{
    randomId: long;
    chatId: int;
    date: int;
    bytes: bytes;
    file: Api.TypeEncryptedFile;
  }> {
    randomId: long;
    chatId: int;
    date: int;
    bytes: bytes;
    file: Api.TypeEncryptedFile;
  };
  export class EncryptedMessageService extends VirtualClass<{
    randomId: long;
    chatId: int;
    date: int;
    bytes: bytes;
  }> {
    randomId: long;
    chatId: int;
    date: int;
    bytes: bytes;
  };
  export class InputDocumentEmpty extends VirtualClass<void> {};
  export class InputDocument extends VirtualClass<{
    id: long;
    accessHash: long;
    fileReference: bytes;
  }> {
    id: long;
    accessHash: long;
    fileReference: bytes;
  };
  export class DocumentEmpty extends VirtualClass<{
    id: long;
  }> {
    id: long;
  };
  export class Document extends VirtualClass<{
    // flags: undefined;
    id: long;
    accessHash: long;
    fileReference: bytes;
    date: int;
    mimeType: string;
    size: int;
    thumbs?: Api.TypePhotoSize[];
    videoThumbs?: Api.TypeVideoSize[];
    dcId: int;
    attributes: Api.TypeDocumentAttribute[];
  }> {
    // flags: undefined;
    id: long;
    accessHash: long;
    fileReference: bytes;
    date: int;
    mimeType: string;
    size: int;
    thumbs?: Api.TypePhotoSize[];
    videoThumbs?: Api.TypeVideoSize[];
    dcId: int;
    attributes: Api.TypeDocumentAttribute[];
  };
  export class NotifyPeer extends VirtualClass<{
    peer: Api.TypePeer;
  }> {
    peer: Api.TypePeer;
  };
  export class NotifyUsers extends VirtualClass<void> {};
  export class NotifyChats extends VirtualClass<void> {};
  export class NotifyBroadcasts extends VirtualClass<void> {};
  export class SendMessageTypingAction extends VirtualClass<void> {};
  export class SendMessageCancelAction extends VirtualClass<void> {};
  export class SendMessageRecordVideoAction extends VirtualClass<void> {};
  export class SendMessageUploadVideoAction extends VirtualClass<{
    progress: int;
  }> {
    progress: int;
  };
  export class SendMessageRecordAudioAction extends VirtualClass<void> {};
  export class SendMessageUploadAudioAction extends VirtualClass<{
    progress: int;
  }> {
    progress: int;
  };
  export class SendMessageUploadPhotoAction extends VirtualClass<{
    progress: int;
  }> {
    progress: int;
  };
  export class SendMessageUploadDocumentAction extends VirtualClass<{
    progress: int;
  }> {
    progress: int;
  };
  export class SendMessageGeoLocationAction extends VirtualClass<void> {};
  export class SendMessageChooseContactAction extends VirtualClass<void> {};
  export class SendMessageGamePlayAction extends VirtualClass<void> {};
  export class SendMessageRecordRoundAction extends VirtualClass<void> {};
  export class SendMessageUploadRoundAction extends VirtualClass<{
    progress: int;
  }> {
    progress: int;
  };
  export class SpeakingInGroupCallAction extends VirtualClass<void> {};
  export class SendMessageHistoryImportAction extends VirtualClass<{
    progress: int;
  }> {
    progress: int;
  };
  export class InputPrivacyKeyStatusTimestamp extends VirtualClass<void> {};
  export class InputPrivacyKeyChatInvite extends VirtualClass<void> {};
  export class InputPrivacyKeyPhoneCall extends VirtualClass<void> {};
  export class InputPrivacyKeyPhoneP2P extends VirtualClass<void> {};
  export class InputPrivacyKeyForwards extends VirtualClass<void> {};
  export class InputPrivacyKeyProfilePhoto extends VirtualClass<void> {};
  export class InputPrivacyKeyPhoneNumber extends VirtualClass<void> {};
  export class InputPrivacyKeyAddedByPhone extends VirtualClass<void> {};
  export class PrivacyKeyStatusTimestamp extends VirtualClass<void> {};
  export class PrivacyKeyChatInvite extends VirtualClass<void> {};
  export class PrivacyKeyPhoneCall extends VirtualClass<void> {};
  export class PrivacyKeyPhoneP2P extends VirtualClass<void> {};
  export class PrivacyKeyForwards extends VirtualClass<void> {};
  export class PrivacyKeyProfilePhoto extends VirtualClass<void> {};
  export class PrivacyKeyPhoneNumber extends VirtualClass<void> {};
  export class PrivacyKeyAddedByPhone extends VirtualClass<void> {};
  export class InputPrivacyValueAllowContacts extends VirtualClass<void> {};
  export class InputPrivacyValueAllowAll extends VirtualClass<void> {};
  export class InputPrivacyValueAllowUsers extends VirtualClass<{
    users: Api.TypeInputUser[];
  }> {
    users: Api.TypeInputUser[];
  };
  export class InputPrivacyValueDisallowContacts extends VirtualClass<void> {};
  export class InputPrivacyValueDisallowAll extends VirtualClass<void> {};
  export class InputPrivacyValueDisallowUsers extends VirtualClass<{
    users: Api.TypeInputUser[];
  }> {
    users: Api.TypeInputUser[];
  };
  export class InputPrivacyValueAllowChatParticipants extends VirtualClass<{
    chats: int[];
  }> {
    chats: int[];
  };
  export class InputPrivacyValueDisallowChatParticipants extends VirtualClass<{
    chats: int[];
  }> {
    chats: int[];
  };
  export class PrivacyValueAllowContacts extends VirtualClass<void> {};
  export class PrivacyValueAllowAll extends VirtualClass<void> {};
  export class PrivacyValueAllowUsers extends VirtualClass<{
    users: int[];
  }> {
    users: int[];
  };
  export class PrivacyValueDisallowContacts extends VirtualClass<void> {};
  export class PrivacyValueDisallowAll extends VirtualClass<void> {};
  export class PrivacyValueDisallowUsers extends VirtualClass<{
    users: int[];
  }> {
    users: int[];
  };
  export class PrivacyValueAllowChatParticipants extends VirtualClass<{
    chats: int[];
  }> {
    chats: int[];
  };
  export class PrivacyValueDisallowChatParticipants extends VirtualClass<{
    chats: int[];
  }> {
    chats: int[];
  };
  export class AccountDaysTTL extends VirtualClass<{
    days: int;
  }> {
    days: int;
  };
  export class DocumentAttributeImageSize extends VirtualClass<{
    w: int;
    h: int;
  }> {
    w: int;
    h: int;
  };
  export class DocumentAttributeAnimated extends VirtualClass<void> {};
  export class DocumentAttributeSticker extends VirtualClass<{
    // flags: undefined;
    mask?: true;
    alt: string;
    stickerset: Api.TypeInputStickerSet;
    maskCoords?: Api.TypeMaskCoords;
  }> {
    // flags: undefined;
    mask?: true;
    alt: string;
    stickerset: Api.TypeInputStickerSet;
    maskCoords?: Api.TypeMaskCoords;
  };
  export class DocumentAttributeVideo extends VirtualClass<{
    // flags: undefined;
    roundMessage?: true;
    supportsStreaming?: true;
    duration: int;
    w: int;
    h: int;
  }> {
    // flags: undefined;
    roundMessage?: true;
    supportsStreaming?: true;
    duration: int;
    w: int;
    h: int;
  };
  export class DocumentAttributeAudio extends VirtualClass<{
    // flags: undefined;
    voice?: true;
    duration: int;
    title?: string;
    performer?: string;
    waveform?: bytes;
  }> {
    // flags: undefined;
    voice?: true;
    duration: int;
    title?: string;
    performer?: string;
    waveform?: bytes;
  };
  export class DocumentAttributeFilename extends VirtualClass<{
    fileName: string;
  }> {
    fileName: string;
  };
  export class DocumentAttributeHasStickers extends VirtualClass<void> {};
  export class StickerPack extends VirtualClass<{
    emoticon: string;
    documents: long[];
  }> {
    emoticon: string;
    documents: long[];
  };
  export class WebPageEmpty extends VirtualClass<{
    id: long;
  }> {
    id: long;
  };
  export class WebPagePending extends VirtualClass<{
    id: long;
    date: int;
  }> {
    id: long;
    date: int;
  };
  export class WebPage extends VirtualClass<{
    // flags: undefined;
    id: long;
    url: string;
    displayUrl: string;
    hash: int;
    type?: string;
    siteName?: string;
    title?: string;
    description?: string;
    photo?: Api.TypePhoto;
    embedUrl?: string;
    embedType?: string;
    embedWidth?: int;
    embedHeight?: int;
    duration?: int;
    author?: string;
    document?: Api.TypeDocument;
    cachedPage?: Api.TypePage;
    attributes?: Api.TypeWebPageAttribute[];
  }> {
    // flags: undefined;
    id: long;
    url: string;
    displayUrl: string;
    hash: int;
    type?: string;
    siteName?: string;
    title?: string;
    description?: string;
    photo?: Api.TypePhoto;
    embedUrl?: string;
    embedType?: string;
    embedWidth?: int;
    embedHeight?: int;
    duration?: int;
    author?: string;
    document?: Api.TypeDocument;
    cachedPage?: Api.TypePage;
    attributes?: Api.TypeWebPageAttribute[];
  };
  export class WebPageNotModified extends VirtualClass<{
    // flags: undefined;
    cachedPageViews?: int;
  } | void> {
    // flags: undefined;
    cachedPageViews?: int;
  };
  export class Authorization extends VirtualClass<{
    // flags: undefined;
    current?: true;
    officialApp?: true;
    passwordPending?: true;
    hash: long;
    deviceModel: string;
    platform: string;
    systemVersion: string;
    apiId: int;
    appName: string;
    appVersion: string;
    dateCreated: int;
    dateActive: int;
    ip: string;
    country: string;
    region: string;
  }> {
    // flags: undefined;
    current?: true;
    officialApp?: true;
    passwordPending?: true;
    hash: long;
    deviceModel: string;
    platform: string;
    systemVersion: string;
    apiId: int;
    appName: string;
    appVersion: string;
    dateCreated: int;
    dateActive: int;
    ip: string;
    country: string;
    region: string;
  };
  export class ReceivedNotifyMessage extends VirtualClass<{
    id: int;
    // flags: int;
  }> {
    id: int;
    // flags: int;
  };
  export class ChatInviteExported extends VirtualClass<{
    // flags: undefined;
    revoked?: true;
    permanent?: true;
    link: string;
    adminId: int;
    date: int;
    startDate?: int;
    expireDate?: int;
    usageLimit?: int;
    usage?: int;
  }> {
    // flags: undefined;
    revoked?: true;
    permanent?: true;
    link: string;
    adminId: int;
    date: int;
    startDate?: int;
    expireDate?: int;
    usageLimit?: int;
    usage?: int;
  };
  export class ChatInviteAlready extends VirtualClass<{
    chat: Api.TypeChat;
  }> {
    chat: Api.TypeChat;
  };
  export class ChatInvite extends VirtualClass<{
    // flags: undefined;
    channel?: true;
    broadcast?: true;
    public?: true;
    megagroup?: true;
    title: string;
    photo: Api.TypePhoto;
    participantsCount: int;
    participants?: Api.TypeUser[];
  }> {
    // flags: undefined;
    channel?: true;
    broadcast?: true;
    public?: true;
    megagroup?: true;
    title: string;
    photo: Api.TypePhoto;
    participantsCount: int;
    participants?: Api.TypeUser[];
  };
  export class ChatInvitePeek extends VirtualClass<{
    chat: Api.TypeChat;
    expires: int;
  }> {
    chat: Api.TypeChat;
    expires: int;
  };
  export class InputStickerSetEmpty extends VirtualClass<void> {};
  export class InputStickerSetID extends VirtualClass<{
    id: long;
    accessHash: long;
  }> {
    id: long;
    accessHash: long;
  };
  export class InputStickerSetShortName extends VirtualClass<{
    shortName: string;
  }> {
    shortName: string;
  };
  export class InputStickerSetAnimatedEmoji extends VirtualClass<void> {};
  export class InputStickerSetDice extends VirtualClass<{
    emoticon: string;
  }> {
    emoticon: string;
  };
  export class StickerSet extends VirtualClass<{
    // flags: undefined;
    archived?: true;
    official?: true;
    masks?: true;
    animated?: true;
    installedDate?: int;
    id: long;
    accessHash: long;
    title: string;
    shortName: string;
    thumbs?: Api.TypePhotoSize[];
    thumbDcId?: int;
    thumbVersion?: int;
    count: int;
    hash: int;
  }> {
    // flags: undefined;
    archived?: true;
    official?: true;
    masks?: true;
    animated?: true;
    installedDate?: int;
    id: long;
    accessHash: long;
    title: string;
    shortName: string;
    thumbs?: Api.TypePhotoSize[];
    thumbDcId?: int;
    thumbVersion?: int;
    count: int;
    hash: int;
  };
  export class BotCommand extends VirtualClass<{
    command: string;
    description: string;
  }> {
    command: string;
    description: string;
  };
  export class BotInfo extends VirtualClass<{
    userId: int;
    description: string;
    commands: Api.TypeBotCommand[];
  }> {
    userId: int;
    description: string;
    commands: Api.TypeBotCommand[];
  };
  export class KeyboardButton extends VirtualClass<{
    text: string;
  }> {
    text: string;
  };
  export class KeyboardButtonUrl extends VirtualClass<{
    text: string;
    url: string;
  }> {
    text: string;
    url: string;
  };
  export class KeyboardButtonCallback extends VirtualClass<{
    // flags: undefined;
    requiresPassword?: true;
    text: string;
    data: bytes;
  }> {
    // flags: undefined;
    requiresPassword?: true;
    text: string;
    data: bytes;
  };
  export class KeyboardButtonRequestPhone extends VirtualClass<{
    text: string;
  }> {
    text: string;
  };
  export class KeyboardButtonRequestGeoLocation extends VirtualClass<{
    text: string;
  }> {
    text: string;
  };
  export class KeyboardButtonSwitchInline extends VirtualClass<{
    // flags: undefined;
    samePeer?: true;
    text: string;
    query: string;
  }> {
    // flags: undefined;
    samePeer?: true;
    text: string;
    query: string;
  };
  export class KeyboardButtonGame extends VirtualClass<{
    text: string;
  }> {
    text: string;
  };
  export class KeyboardButtonBuy extends VirtualClass<{
    text: string;
  }> {
    text: string;
  };
  export class KeyboardButtonUrlAuth extends VirtualClass<{
    // flags: undefined;
    text: string;
    fwdText?: string;
    url: string;
    buttonId: int;
  }> {
    // flags: undefined;
    text: string;
    fwdText?: string;
    url: string;
    buttonId: int;
  };
  export class InputKeyboardButtonUrlAuth extends VirtualClass<{
    // flags: undefined;
    requestWriteAccess?: true;
    text: string;
    fwdText?: string;
    url: string;
    bot: Api.TypeInputUser;
  }> {
    // flags: undefined;
    requestWriteAccess?: true;
    text: string;
    fwdText?: string;
    url: string;
    bot: Api.TypeInputUser;
  };
  export class KeyboardButtonRequestPoll extends VirtualClass<{
    // flags: undefined;
    quiz?: Bool;
    text: string;
  }> {
    // flags: undefined;
    quiz?: Bool;
    text: string;
  };
  export class KeyboardButtonRow extends VirtualClass<{
    buttons: Api.TypeKeyboardButton[];
  }> {
    buttons: Api.TypeKeyboardButton[];
  };
  export class ReplyKeyboardHide extends VirtualClass<{
    // flags: undefined;
    selective?: true;
  } | void> {
    // flags: undefined;
    selective?: true;
  };
  export class ReplyKeyboardForceReply extends VirtualClass<{
    // flags: undefined;
    singleUse?: true;
    selective?: true;
  } | void> {
    // flags: undefined;
    singleUse?: true;
    selective?: true;
  };
  export class ReplyKeyboardMarkup extends VirtualClass<{
    // flags: undefined;
    resize?: true;
    singleUse?: true;
    selective?: true;
    rows: Api.TypeKeyboardButtonRow[];
  }> {
    // flags: undefined;
    resize?: true;
    singleUse?: true;
    selective?: true;
    rows: Api.TypeKeyboardButtonRow[];
  };
  export class ReplyInlineMarkup extends VirtualClass<{
    rows: Api.TypeKeyboardButtonRow[];
  }> {
    rows: Api.TypeKeyboardButtonRow[];
  };
  export class MessageEntityUnknown extends VirtualClass<{
    offset: int;
    length: int;
  }> {
    offset: int;
    length: int;
  };
  export class MessageEntityMention extends VirtualClass<{
    offset: int;
    length: int;
  }> {
    offset: int;
    length: int;
  };
  export class MessageEntityHashtag extends VirtualClass<{
    offset: int;
    length: int;
  }> {
    offset: int;
    length: int;
  };
  export class MessageEntityBotCommand extends VirtualClass<{
    offset: int;
    length: int;
  }> {
    offset: int;
    length: int;
  };
  export class MessageEntityUrl extends VirtualClass<{
    offset: int;
    length: int;
  }> {
    offset: int;
    length: int;
  };
  export class MessageEntityEmail extends VirtualClass<{
    offset: int;
    length: int;
  }> {
    offset: int;
    length: int;
  };
  export class MessageEntityBold extends VirtualClass<{
    offset: int;
    length: int;
  }> {
    offset: int;
    length: int;
  };
  export class MessageEntityItalic extends VirtualClass<{
    offset: int;
    length: int;
  }> {
    offset: int;
    length: int;
  };
  export class MessageEntityCode extends VirtualClass<{
    offset: int;
    length: int;
  }> {
    offset: int;
    length: int;
  };
  export class MessageEntityPre extends VirtualClass<{
    offset: int;
    length: int;
    language: string;
  }> {
    offset: int;
    length: int;
    language: string;
  };
  export class MessageEntityTextUrl extends VirtualClass<{
    offset: int;
    length: int;
    url: string;
  }> {
    offset: int;
    length: int;
    url: string;
  };
  export class MessageEntityMentionName extends VirtualClass<{
    offset: int;
    length: int;
    userId: int;
  }> {
    offset: int;
    length: int;
    userId: int;
  };
  export class InputMessageEntityMentionName extends VirtualClass<{
    offset: int;
    length: int;
    userId: Api.TypeInputUser;
  }> {
    offset: int;
    length: int;
    userId: Api.TypeInputUser;
  };
  export class MessageEntityPhone extends VirtualClass<{
    offset: int;
    length: int;
  }> {
    offset: int;
    length: int;
  };
  export class MessageEntityCashtag extends VirtualClass<{
    offset: int;
    length: int;
  }> {
    offset: int;
    length: int;
  };
  export class MessageEntityUnderline extends VirtualClass<{
    offset: int;
    length: int;
  }> {
    offset: int;
    length: int;
  };
  export class MessageEntityStrike extends VirtualClass<{
    offset: int;
    length: int;
  }> {
    offset: int;
    length: int;
  };
  export class MessageEntityBlockquote extends VirtualClass<{
    offset: int;
    length: int;
  }> {
    offset: int;
    length: int;
  };
  export class MessageEntityBankCard extends VirtualClass<{
    offset: int;
    length: int;
  }> {
    offset: int;
    length: int;
  };
  export class InputChannelEmpty extends VirtualClass<void> {};
  export class InputChannel extends VirtualClass<{
    channelId: int;
    accessHash: long;
  }> {
    channelId: int;
    accessHash: long;
  };
  export class InputChannelFromMessage extends VirtualClass<{
    peer: Api.TypeInputPeer;
    msgId: int;
    channelId: int;
  }> {
    peer: Api.TypeInputPeer;
    msgId: int;
    channelId: int;
  };
  export class MessageRange extends VirtualClass<{
    minId: int;
    maxId: int;
  }> {
    minId: int;
    maxId: int;
  };
  export class ChannelMessagesFilterEmpty extends VirtualClass<void> {};
  export class ChannelMessagesFilter extends VirtualClass<{
    // flags: undefined;
    excludeNewMessages?: true;
    ranges: Api.TypeMessageRange[];
  }> {
    // flags: undefined;
    excludeNewMessages?: true;
    ranges: Api.TypeMessageRange[];
  };
  export class ChannelParticipant extends VirtualClass<{
    userId: int;
    date: int;
  }> {
    userId: int;
    date: int;
  };
  export class ChannelParticipantSelf extends VirtualClass<{
    userId: int;
    inviterId: int;
    date: int;
  }> {
    userId: int;
    inviterId: int;
    date: int;
  };
  export class ChannelParticipantCreator extends VirtualClass<{
    // flags: undefined;
    userId: int;
    adminRights: Api.TypeChatAdminRights;
    rank?: string;
  }> {
    // flags: undefined;
    userId: int;
    adminRights: Api.TypeChatAdminRights;
    rank?: string;
  };
  export class ChannelParticipantAdmin extends VirtualClass<{
    // flags: undefined;
    canEdit?: true;
    self?: true;
    userId: int;
    inviterId?: int;
    promotedBy: int;
    date: int;
    adminRights: Api.TypeChatAdminRights;
    rank?: string;
  }> {
    // flags: undefined;
    canEdit?: true;
    self?: true;
    userId: int;
    inviterId?: int;
    promotedBy: int;
    date: int;
    adminRights: Api.TypeChatAdminRights;
    rank?: string;
  };
  export class ChannelParticipantBanned extends VirtualClass<{
    // flags: undefined;
    left?: true;
    peer: Api.TypePeer;
    kickedBy: int;
    date: int;
    bannedRights: Api.TypeChatBannedRights;
  }> {
    // flags: undefined;
    left?: true;
    peer: Api.TypePeer;
    kickedBy: int;
    date: int;
    bannedRights: Api.TypeChatBannedRights;
  };
  export class ChannelParticipantLeft extends VirtualClass<{
    peer: Api.TypePeer;
  }> {
    peer: Api.TypePeer;
  };
  export class ChannelParticipantsRecent extends VirtualClass<void> {};
  export class ChannelParticipantsAdmins extends VirtualClass<void> {};
  export class ChannelParticipantsKicked extends VirtualClass<{
    q: string;
  }> {
    q: string;
  };
  export class ChannelParticipantsBots extends VirtualClass<void> {};
  export class ChannelParticipantsBanned extends VirtualClass<{
    q: string;
  }> {
    q: string;
  };
  export class ChannelParticipantsSearch extends VirtualClass<{
    q: string;
  }> {
    q: string;
  };
  export class ChannelParticipantsContacts extends VirtualClass<{
    q: string;
  }> {
    q: string;
  };
  export class ChannelParticipantsMentions extends VirtualClass<{
    // flags: undefined;
    q?: string;
    topMsgId?: int;
  } | void> {
    // flags: undefined;
    q?: string;
    topMsgId?: int;
  };
  export class InputBotInlineMessageMediaAuto extends VirtualClass<{
    // flags: undefined;
    message: string;
    entities?: Api.TypeMessageEntity[];
    replyMarkup?: Api.TypeReplyMarkup;
  }> {
    // flags: undefined;
    message: string;
    entities?: Api.TypeMessageEntity[];
    replyMarkup?: Api.TypeReplyMarkup;
  };
  export class InputBotInlineMessageText extends VirtualClass<{
    // flags: undefined;
    noWebpage?: true;
    message: string;
    entities?: Api.TypeMessageEntity[];
    replyMarkup?: Api.TypeReplyMarkup;
  }> {
    // flags: undefined;
    noWebpage?: true;
    message: string;
    entities?: Api.TypeMessageEntity[];
    replyMarkup?: Api.TypeReplyMarkup;
  };
  export class InputBotInlineMessageMediaGeo extends VirtualClass<{
    // flags: undefined;
    geoPoint: Api.TypeInputGeoPoint;
    heading?: int;
    period?: int;
    proximityNotificationRadius?: int;
    replyMarkup?: Api.TypeReplyMarkup;
  }> {
    // flags: undefined;
    geoPoint: Api.TypeInputGeoPoint;
    heading?: int;
    period?: int;
    proximityNotificationRadius?: int;
    replyMarkup?: Api.TypeReplyMarkup;
  };
  export class InputBotInlineMessageMediaVenue extends VirtualClass<{
    // flags: undefined;
    geoPoint: Api.TypeInputGeoPoint;
    title: string;
    address: string;
    provider: string;
    venueId: string;
    venueType: string;
    replyMarkup?: Api.TypeReplyMarkup;
  }> {
    // flags: undefined;
    geoPoint: Api.TypeInputGeoPoint;
    title: string;
    address: string;
    provider: string;
    venueId: string;
    venueType: string;
    replyMarkup?: Api.TypeReplyMarkup;
  };
  export class InputBotInlineMessageMediaContact extends VirtualClass<{
    // flags: undefined;
    phoneNumber: string;
    firstName: string;
    lastName: string;
    vcard: string;
    replyMarkup?: Api.TypeReplyMarkup;
  }> {
    // flags: undefined;
    phoneNumber: string;
    firstName: string;
    lastName: string;
    vcard: string;
    replyMarkup?: Api.TypeReplyMarkup;
  };
  export class InputBotInlineMessageGame extends VirtualClass<{
    // flags: undefined;
    replyMarkup?: Api.TypeReplyMarkup;
  } | void> {
    // flags: undefined;
    replyMarkup?: Api.TypeReplyMarkup;
  };
  export class InputBotInlineMessageMediaInvoice extends VirtualClass<{
    // flags: undefined;
    multipleAllowed?: true;
    canForward?: true;
    title: string;
    description: string;
    photo?: Api.TypeInputWebDocument;
    invoice: Api.TypeInvoice;
    payload: bytes;
    provider: string;
    providerData: Api.TypeDataJSON;
    startParam: string;
    replyMarkup?: Api.TypeReplyMarkup;
  }> {
    // flags: undefined;
    multipleAllowed?: true;
    canForward?: true;
    title: string;
    description: string;
    photo?: Api.TypeInputWebDocument;
    invoice: Api.TypeInvoice;
    payload: bytes;
    provider: string;
    providerData: Api.TypeDataJSON;
    startParam: string;
    replyMarkup?: Api.TypeReplyMarkup;
  };
  export class InputBotInlineResult extends VirtualClass<{
    // flags: undefined;
    id: string;
    type: string;
    title?: string;
    description?: string;
    url?: string;
    thumb?: Api.TypeInputWebDocument;
    content?: Api.TypeInputWebDocument;
    sendMessage: Api.TypeInputBotInlineMessage;
  }> {
    // flags: undefined;
    id: string;
    type: string;
    title?: string;
    description?: string;
    url?: string;
    thumb?: Api.TypeInputWebDocument;
    content?: Api.TypeInputWebDocument;
    sendMessage: Api.TypeInputBotInlineMessage;
  };
  export class InputBotInlineResultPhoto extends VirtualClass<{
    id: string;
    type: string;
    photo: Api.TypeInputPhoto;
    sendMessage: Api.TypeInputBotInlineMessage;
  }> {
    id: string;
    type: string;
    photo: Api.TypeInputPhoto;
    sendMessage: Api.TypeInputBotInlineMessage;
  };
  export class InputBotInlineResultDocument extends VirtualClass<{
    // flags: undefined;
    id: string;
    type: string;
    title?: string;
    description?: string;
    document: Api.TypeInputDocument;
    sendMessage: Api.TypeInputBotInlineMessage;
  }> {
    // flags: undefined;
    id: string;
    type: string;
    title?: string;
    description?: string;
    document: Api.TypeInputDocument;
    sendMessage: Api.TypeInputBotInlineMessage;
  };
  export class InputBotInlineResultGame extends VirtualClass<{
    id: string;
    shortName: string;
    sendMessage: Api.TypeInputBotInlineMessage;
  }> {
    id: string;
    shortName: string;
    sendMessage: Api.TypeInputBotInlineMessage;
  };
  export class BotInlineMessageMediaAuto extends VirtualClass<{
    // flags: undefined;
    message: string;
    entities?: Api.TypeMessageEntity[];
    replyMarkup?: Api.TypeReplyMarkup;
  }> {
    // flags: undefined;
    message: string;
    entities?: Api.TypeMessageEntity[];
    replyMarkup?: Api.TypeReplyMarkup;
  };
  export class BotInlineMessageText extends VirtualClass<{
    // flags: undefined;
    noWebpage?: true;
    message: string;
    entities?: Api.TypeMessageEntity[];
    replyMarkup?: Api.TypeReplyMarkup;
  }> {
    // flags: undefined;
    noWebpage?: true;
    message: string;
    entities?: Api.TypeMessageEntity[];
    replyMarkup?: Api.TypeReplyMarkup;
  };
  export class BotInlineMessageMediaGeo extends VirtualClass<{
    // flags: undefined;
    geo: Api.TypeGeoPoint;
    heading?: int;
    period?: int;
    proximityNotificationRadius?: int;
    replyMarkup?: Api.TypeReplyMarkup;
  }> {
    // flags: undefined;
    geo: Api.TypeGeoPoint;
    heading?: int;
    period?: int;
    proximityNotificationRadius?: int;
    replyMarkup?: Api.TypeReplyMarkup;
  };
  export class BotInlineMessageMediaVenue extends VirtualClass<{
    // flags: undefined;
    geo: Api.TypeGeoPoint;
    title: string;
    address: string;
    provider: string;
    venueId: string;
    venueType: string;
    replyMarkup?: Api.TypeReplyMarkup;
  }> {
    // flags: undefined;
    geo: Api.TypeGeoPoint;
    title: string;
    address: string;
    provider: string;
    venueId: string;
    venueType: string;
    replyMarkup?: Api.TypeReplyMarkup;
  };
  export class BotInlineMessageMediaContact extends VirtualClass<{
    // flags: undefined;
    phoneNumber: string;
    firstName: string;
    lastName: string;
    vcard: string;
    replyMarkup?: Api.TypeReplyMarkup;
  }> {
    // flags: undefined;
    phoneNumber: string;
    firstName: string;
    lastName: string;
    vcard: string;
    replyMarkup?: Api.TypeReplyMarkup;
  };
  export class BotInlineMessageMediaInvoice extends VirtualClass<{
    // flags: undefined;
    shippingAddressRequested?: true;
    test?: true;
    title: string;
    description: string;
    photo?: Api.TypeWebDocument;
    currency: string;
    totalAmount: long;
    replyMarkup?: Api.TypeReplyMarkup;
  }> {
    // flags: undefined;
    shippingAddressRequested?: true;
    test?: true;
    title: string;
    description: string;
    photo?: Api.TypeWebDocument;
    currency: string;
    totalAmount: long;
    replyMarkup?: Api.TypeReplyMarkup;
  };
  export class BotInlineResult extends VirtualClass<{
    // flags: undefined;
    id: string;
    type: string;
    title?: string;
    description?: string;
    url?: string;
    thumb?: Api.TypeWebDocument;
    content?: Api.TypeWebDocument;
    sendMessage: Api.TypeBotInlineMessage;
  }> {
    // flags: undefined;
    id: string;
    type: string;
    title?: string;
    description?: string;
    url?: string;
    thumb?: Api.TypeWebDocument;
    content?: Api.TypeWebDocument;
    sendMessage: Api.TypeBotInlineMessage;
  };
  export class BotInlineMediaResult extends VirtualClass<{
    // flags: undefined;
    id: string;
    type: string;
    photo?: Api.TypePhoto;
    document?: Api.TypeDocument;
    title?: string;
    description?: string;
    sendMessage: Api.TypeBotInlineMessage;
  }> {
    // flags: undefined;
    id: string;
    type: string;
    photo?: Api.TypePhoto;
    document?: Api.TypeDocument;
    title?: string;
    description?: string;
    sendMessage: Api.TypeBotInlineMessage;
  };
  export class ExportedMessageLink extends VirtualClass<{
    link: string;
    html: string;
  }> {
    link: string;
    html: string;
  };
  export class MessageFwdHeader extends VirtualClass<{
    // flags: undefined;
    imported?: true;
    fromId?: Api.TypePeer;
    fromName?: string;
    date: int;
    channelPost?: int;
    postAuthor?: string;
    savedFromPeer?: Api.TypePeer;
    savedFromMsgId?: int;
    psaType?: string;
  }> {
    // flags: undefined;
    imported?: true;
    fromId?: Api.TypePeer;
    fromName?: string;
    date: int;
    channelPost?: int;
    postAuthor?: string;
    savedFromPeer?: Api.TypePeer;
    savedFromMsgId?: int;
    psaType?: string;
  };
  export class InputBotInlineMessageID extends VirtualClass<{
    dcId: int;
    id: long;
    accessHash: long;
  }> {
    dcId: int;
    id: long;
    accessHash: long;
  };
  export class InlineBotSwitchPM extends VirtualClass<{
    text: string;
    startParam: string;
  }> {
    text: string;
    startParam: string;
  };
  export class TopPeer extends VirtualClass<{
    peer: Api.TypePeer;
    rating: double;
  }> {
    peer: Api.TypePeer;
    rating: double;
  };
  export class TopPeerCategoryBotsPM extends VirtualClass<void> {};
  export class TopPeerCategoryBotsInline extends VirtualClass<void> {};
  export class TopPeerCategoryCorrespondents extends VirtualClass<void> {};
  export class TopPeerCategoryGroups extends VirtualClass<void> {};
  export class TopPeerCategoryChannels extends VirtualClass<void> {};
  export class TopPeerCategoryPhoneCalls extends VirtualClass<void> {};
  export class TopPeerCategoryForwardUsers extends VirtualClass<void> {};
  export class TopPeerCategoryForwardChats extends VirtualClass<void> {};
  export class TopPeerCategoryPeers extends VirtualClass<{
    category: Api.TypeTopPeerCategory;
    count: int;
    peers: Api.TypeTopPeer[];
  }> {
    category: Api.TypeTopPeerCategory;
    count: int;
    peers: Api.TypeTopPeer[];
  };
  export class DraftMessageEmpty extends VirtualClass<{
    // flags: undefined;
    date?: int;
  } | void> {
    // flags: undefined;
    date?: int;
  };
  export class DraftMessage extends VirtualClass<{
    // flags: undefined;
    noWebpage?: true;
    replyToMsgId?: int;
    message: string;
    entities?: Api.TypeMessageEntity[];
    date: int;
  }> {
    // flags: undefined;
    noWebpage?: true;
    replyToMsgId?: int;
    message: string;
    entities?: Api.TypeMessageEntity[];
    date: int;
  };
  export class StickerSetCovered extends VirtualClass<{
    set: Api.TypeStickerSet;
    cover: Api.TypeDocument;
  }> {
    set: Api.TypeStickerSet;
    cover: Api.TypeDocument;
  };
  export class StickerSetMultiCovered extends VirtualClass<{
    set: Api.TypeStickerSet;
    covers: Api.TypeDocument[];
  }> {
    set: Api.TypeStickerSet;
    covers: Api.TypeDocument[];
  };
  export class MaskCoords extends VirtualClass<{
    n: int;
    x: double;
    y: double;
    zoom: double;
  }> {
    n: int;
    x: double;
    y: double;
    zoom: double;
  };
  export class InputStickeredMediaPhoto extends VirtualClass<{
    id: Api.TypeInputPhoto;
  }> {
    id: Api.TypeInputPhoto;
  };
  export class InputStickeredMediaDocument extends VirtualClass<{
    id: Api.TypeInputDocument;
  }> {
    id: Api.TypeInputDocument;
  };
  export class Game extends VirtualClass<{
    // flags: undefined;
    id: long;
    accessHash: long;
    shortName: string;
    title: string;
    description: string;
    photo: Api.TypePhoto;
    document?: Api.TypeDocument;
  }> {
    // flags: undefined;
    id: long;
    accessHash: long;
    shortName: string;
    title: string;
    description: string;
    photo: Api.TypePhoto;
    document?: Api.TypeDocument;
  };
  export class InputGameID extends VirtualClass<{
    id: long;
    accessHash: long;
  }> {
    id: long;
    accessHash: long;
  };
  export class InputGameShortName extends VirtualClass<{
    botId: Api.TypeInputUser;
    shortName: string;
  }> {
    botId: Api.TypeInputUser;
    shortName: string;
  };
  export class HighScore extends VirtualClass<{
    pos: int;
    userId: int;
    score: int;
  }> {
    pos: int;
    userId: int;
    score: int;
  };
  export class TextEmpty extends VirtualClass<void> {};
  export class TextPlain extends VirtualClass<{
    text: string;
  }> {
    text: string;
  };
  export class TextBold extends VirtualClass<{
    text: Api.TypeRichText;
  }> {
    text: Api.TypeRichText;
  };
  export class TextItalic extends VirtualClass<{
    text: Api.TypeRichText;
  }> {
    text: Api.TypeRichText;
  };
  export class TextUnderline extends VirtualClass<{
    text: Api.TypeRichText;
  }> {
    text: Api.TypeRichText;
  };
  export class TextStrike extends VirtualClass<{
    text: Api.TypeRichText;
  }> {
    text: Api.TypeRichText;
  };
  export class TextFixed extends VirtualClass<{
    text: Api.TypeRichText;
  }> {
    text: Api.TypeRichText;
  };
  export class TextUrl extends VirtualClass<{
    text: Api.TypeRichText;
    url: string;
    webpageId: long;
  }> {
    text: Api.TypeRichText;
    url: string;
    webpageId: long;
  };
  export class TextEmail extends VirtualClass<{
    text: Api.TypeRichText;
    email: string;
  }> {
    text: Api.TypeRichText;
    email: string;
  };
  export class TextConcat extends VirtualClass<{
    texts: Api.TypeRichText[];
  }> {
    texts: Api.TypeRichText[];
  };
  export class TextSubscript extends VirtualClass<{
    text: Api.TypeRichText;
  }> {
    text: Api.TypeRichText;
  };
  export class TextSuperscript extends VirtualClass<{
    text: Api.TypeRichText;
  }> {
    text: Api.TypeRichText;
  };
  export class TextMarked extends VirtualClass<{
    text: Api.TypeRichText;
  }> {
    text: Api.TypeRichText;
  };
  export class TextPhone extends VirtualClass<{
    text: Api.TypeRichText;
    phone: string;
  }> {
    text: Api.TypeRichText;
    phone: string;
  };
  export class TextImage extends VirtualClass<{
    documentId: long;
    w: int;
    h: int;
  }> {
    documentId: long;
    w: int;
    h: int;
  };
  export class TextAnchor extends VirtualClass<{
    text: Api.TypeRichText;
    name: string;
  }> {
    text: Api.TypeRichText;
    name: string;
  };
  export class PageBlockUnsupported extends VirtualClass<void> {};
  export class PageBlockTitle extends VirtualClass<{
    text: Api.TypeRichText;
  }> {
    text: Api.TypeRichText;
  };
  export class PageBlockSubtitle extends VirtualClass<{
    text: Api.TypeRichText;
  }> {
    text: Api.TypeRichText;
  };
  export class PageBlockAuthorDate extends VirtualClass<{
    author: Api.TypeRichText;
    publishedDate: int;
  }> {
    author: Api.TypeRichText;
    publishedDate: int;
  };
  export class PageBlockHeader extends VirtualClass<{
    text: Api.TypeRichText;
  }> {
    text: Api.TypeRichText;
  };
  export class PageBlockSubheader extends VirtualClass<{
    text: Api.TypeRichText;
  }> {
    text: Api.TypeRichText;
  };
  export class PageBlockParagraph extends VirtualClass<{
    text: Api.TypeRichText;
  }> {
    text: Api.TypeRichText;
  };
  export class PageBlockPreformatted extends VirtualClass<{
    text: Api.TypeRichText;
    language: string;
  }> {
    text: Api.TypeRichText;
    language: string;
  };
  export class PageBlockFooter extends VirtualClass<{
    text: Api.TypeRichText;
  }> {
    text: Api.TypeRichText;
  };
  export class PageBlockDivider extends VirtualClass<void> {};
  export class PageBlockAnchor extends VirtualClass<{
    name: string;
  }> {
    name: string;
  };
  export class PageBlockList extends VirtualClass<{
    items: Api.TypePageListItem[];
  }> {
    items: Api.TypePageListItem[];
  };
  export class PageBlockBlockquote extends VirtualClass<{
    text: Api.TypeRichText;
    caption: Api.TypeRichText;
  }> {
    text: Api.TypeRichText;
    caption: Api.TypeRichText;
  };
  export class PageBlockPullquote extends VirtualClass<{
    text: Api.TypeRichText;
    caption: Api.TypeRichText;
  }> {
    text: Api.TypeRichText;
    caption: Api.TypeRichText;
  };
  export class PageBlockPhoto extends VirtualClass<{
    // flags: undefined;
    photoId: long;
    caption: Api.TypePageCaption;
    url?: string;
    webpageId?: long;
  }> {
    // flags: undefined;
    photoId: long;
    caption: Api.TypePageCaption;
    url?: string;
    webpageId?: long;
  };
  export class PageBlockVideo extends VirtualClass<{
    // flags: undefined;
    autoplay?: true;
    loop?: true;
    videoId: long;
    caption: Api.TypePageCaption;
  }> {
    // flags: undefined;
    autoplay?: true;
    loop?: true;
    videoId: long;
    caption: Api.TypePageCaption;
  };
  export class PageBlockCover extends VirtualClass<{
    cover: Api.TypePageBlock;
  }> {
    cover: Api.TypePageBlock;
  };
  export class PageBlockEmbed extends VirtualClass<{
    // flags: undefined;
    fullWidth?: true;
    allowScrolling?: true;
    url?: string;
    html?: string;
    posterPhotoId?: long;
    w?: int;
    h?: int;
    caption: Api.TypePageCaption;
  }> {
    // flags: undefined;
    fullWidth?: true;
    allowScrolling?: true;
    url?: string;
    html?: string;
    posterPhotoId?: long;
    w?: int;
    h?: int;
    caption: Api.TypePageCaption;
  };
  export class PageBlockEmbedPost extends VirtualClass<{
    url: string;
    webpageId: long;
    authorPhotoId: long;
    author: string;
    date: int;
    blocks: Api.TypePageBlock[];
    caption: Api.TypePageCaption;
  }> {
    url: string;
    webpageId: long;
    authorPhotoId: long;
    author: string;
    date: int;
    blocks: Api.TypePageBlock[];
    caption: Api.TypePageCaption;
  };
  export class PageBlockCollage extends VirtualClass<{
    items: Api.TypePageBlock[];
    caption: Api.TypePageCaption;
  }> {
    items: Api.TypePageBlock[];
    caption: Api.TypePageCaption;
  };
  export class PageBlockSlideshow extends VirtualClass<{
    items: Api.TypePageBlock[];
    caption: Api.TypePageCaption;
  }> {
    items: Api.TypePageBlock[];
    caption: Api.TypePageCaption;
  };
  export class PageBlockChannel extends VirtualClass<{
    channel: Api.TypeChat;
  }> {
    channel: Api.TypeChat;
  };
  export class PageBlockAudio extends VirtualClass<{
    audioId: long;
    caption: Api.TypePageCaption;
  }> {
    audioId: long;
    caption: Api.TypePageCaption;
  };
  export class PageBlockKicker extends VirtualClass<{
    text: Api.TypeRichText;
  }> {
    text: Api.TypeRichText;
  };
  export class PageBlockTable extends VirtualClass<{
    // flags: undefined;
    bordered?: true;
    striped?: true;
    title: Api.TypeRichText;
    rows: Api.TypePageTableRow[];
  }> {
    // flags: undefined;
    bordered?: true;
    striped?: true;
    title: Api.TypeRichText;
    rows: Api.TypePageTableRow[];
  };
  export class PageBlockOrderedList extends VirtualClass<{
    items: Api.TypePageListOrderedItem[];
  }> {
    items: Api.TypePageListOrderedItem[];
  };
  export class PageBlockDetails extends VirtualClass<{
    // flags: undefined;
    open?: true;
    blocks: Api.TypePageBlock[];
    title: Api.TypeRichText;
  }> {
    // flags: undefined;
    open?: true;
    blocks: Api.TypePageBlock[];
    title: Api.TypeRichText;
  };
  export class PageBlockRelatedArticles extends VirtualClass<{
    title: Api.TypeRichText;
    articles: Api.TypePageRelatedArticle[];
  }> {
    title: Api.TypeRichText;
    articles: Api.TypePageRelatedArticle[];
  };
  export class PageBlockMap extends VirtualClass<{
    geo: Api.TypeGeoPoint;
    zoom: int;
    w: int;
    h: int;
    caption: Api.TypePageCaption;
  }> {
    geo: Api.TypeGeoPoint;
    zoom: int;
    w: int;
    h: int;
    caption: Api.TypePageCaption;
  };
  export class PhoneCallDiscardReasonMissed extends VirtualClass<void> {};
  export class PhoneCallDiscardReasonDisconnect extends VirtualClass<void> {};
  export class PhoneCallDiscardReasonHangup extends VirtualClass<void> {};
  export class PhoneCallDiscardReasonBusy extends VirtualClass<void> {};
  export class DataJSON extends VirtualClass<{
    data: string;
  }> {
    data: string;
  };
  export class LabeledPrice extends VirtualClass<{
    label: string;
    amount: long;
  }> {
    label: string;
    amount: long;
  };
  export class Invoice extends VirtualClass<{
    // flags: undefined;
    test?: true;
    nameRequested?: true;
    phoneRequested?: true;
    emailRequested?: true;
    shippingAddressRequested?: true;
    flexible?: true;
    phoneToProvider?: true;
    emailToProvider?: true;
    currency: string;
    prices: Api.TypeLabeledPrice[];
    maxTipAmount?: long;
    suggestedTipAmounts?: long[];
  }> {
    // flags: undefined;
    test?: true;
    nameRequested?: true;
    phoneRequested?: true;
    emailRequested?: true;
    shippingAddressRequested?: true;
    flexible?: true;
    phoneToProvider?: true;
    emailToProvider?: true;
    currency: string;
    prices: Api.TypeLabeledPrice[];
    maxTipAmount?: long;
    suggestedTipAmounts?: long[];
  };
  export class PaymentCharge extends VirtualClass<{
    id: string;
    providerChargeId: string;
  }> {
    id: string;
    providerChargeId: string;
  };
  export class PostAddress extends VirtualClass<{
    streetLine1: string;
    streetLine2: string;
    city: string;
    state: string;
    countryIso2: string;
    postCode: string;
  }> {
    streetLine1: string;
    streetLine2: string;
    city: string;
    state: string;
    countryIso2: string;
    postCode: string;
  };
  export class PaymentRequestedInfo extends VirtualClass<{
    // flags: undefined;
    name?: string;
    phone?: string;
    email?: string;
    shippingAddress?: Api.TypePostAddress;
  } | void> {
    // flags: undefined;
    name?: string;
    phone?: string;
    email?: string;
    shippingAddress?: Api.TypePostAddress;
  };
  export class PaymentSavedCredentialsCard extends VirtualClass<{
    id: string;
    title: string;
  }> {
    id: string;
    title: string;
  };
  export class WebDocument extends VirtualClass<{
    url: string;
    accessHash: long;
    size: int;
    mimeType: string;
    attributes: Api.TypeDocumentAttribute[];
  }> {
    url: string;
    accessHash: long;
    size: int;
    mimeType: string;
    attributes: Api.TypeDocumentAttribute[];
  };
  export class WebDocumentNoProxy extends VirtualClass<{
    url: string;
    size: int;
    mimeType: string;
    attributes: Api.TypeDocumentAttribute[];
  }> {
    url: string;
    size: int;
    mimeType: string;
    attributes: Api.TypeDocumentAttribute[];
  };
  export class InputWebDocument extends VirtualClass<{
    url: string;
    size: int;
    mimeType: string;
    attributes: Api.TypeDocumentAttribute[];
  }> {
    url: string;
    size: int;
    mimeType: string;
    attributes: Api.TypeDocumentAttribute[];
  };
  export class InputWebFileLocation extends VirtualClass<{
    url: string;
    accessHash: long;
  }> {
    url: string;
    accessHash: long;
  };
  export class InputWebFileGeoPointLocation extends VirtualClass<{
    geoPoint: Api.TypeInputGeoPoint;
    accessHash: long;
    w: int;
    h: int;
    zoom: int;
    scale: int;
  }> {
    geoPoint: Api.TypeInputGeoPoint;
    accessHash: long;
    w: int;
    h: int;
    zoom: int;
    scale: int;
  };
  export class InputPaymentCredentialsSaved extends VirtualClass<{
    id: string;
    tmpPassword: bytes;
  }> {
    id: string;
    tmpPassword: bytes;
  };
  export class InputPaymentCredentials extends VirtualClass<{
    // flags: undefined;
    save?: true;
    data: Api.TypeDataJSON;
  }> {
    // flags: undefined;
    save?: true;
    data: Api.TypeDataJSON;
  };
  export class InputPaymentCredentialsApplePay extends VirtualClass<{
    paymentData: Api.TypeDataJSON;
  }> {
    paymentData: Api.TypeDataJSON;
  };
  export class InputPaymentCredentialsGooglePay extends VirtualClass<{
    paymentToken: Api.TypeDataJSON;
  }> {
    paymentToken: Api.TypeDataJSON;
  };
  export class ShippingOption extends VirtualClass<{
    id: string;
    title: string;
    prices: Api.TypeLabeledPrice[];
  }> {
    id: string;
    title: string;
    prices: Api.TypeLabeledPrice[];
  };
  export class InputStickerSetItem extends VirtualClass<{
    // flags: undefined;
    document: Api.TypeInputDocument;
    emoji: string;
    maskCoords?: Api.TypeMaskCoords;
  }> {
    // flags: undefined;
    document: Api.TypeInputDocument;
    emoji: string;
    maskCoords?: Api.TypeMaskCoords;
  };
  export class InputPhoneCall extends VirtualClass<{
    id: long;
    accessHash: long;
  }> {
    id: long;
    accessHash: long;
  };
  export class PhoneCallEmpty extends VirtualClass<{
    id: long;
  }> {
    id: long;
  };
  export class PhoneCallWaiting extends VirtualClass<{
    // flags: undefined;
    video?: true;
    id: long;
    accessHash: long;
    date: int;
    adminId: int;
    participantId: int;
    protocol: Api.TypePhoneCallProtocol;
    receiveDate?: int;
  }> {
    // flags: undefined;
    video?: true;
    id: long;
    accessHash: long;
    date: int;
    adminId: int;
    participantId: int;
    protocol: Api.TypePhoneCallProtocol;
    receiveDate?: int;
  };
  export class PhoneCallRequested extends VirtualClass<{
    // flags: undefined;
    video?: true;
    id: long;
    accessHash: long;
    date: int;
    adminId: int;
    participantId: int;
    gAHash: bytes;
    protocol: Api.TypePhoneCallProtocol;
  }> {
    // flags: undefined;
    video?: true;
    id: long;
    accessHash: long;
    date: int;
    adminId: int;
    participantId: int;
    gAHash: bytes;
    protocol: Api.TypePhoneCallProtocol;
  };
  export class PhoneCallAccepted extends VirtualClass<{
    // flags: undefined;
    video?: true;
    id: long;
    accessHash: long;
    date: int;
    adminId: int;
    participantId: int;
    gB: bytes;
    protocol: Api.TypePhoneCallProtocol;
  }> {
    // flags: undefined;
    video?: true;
    id: long;
    accessHash: long;
    date: int;
    adminId: int;
    participantId: int;
    gB: bytes;
    protocol: Api.TypePhoneCallProtocol;
  };
  export class PhoneCall extends VirtualClass<{
    // flags: undefined;
    p2pAllowed?: true;
    video?: true;
    id: long;
    accessHash: long;
    date: int;
    adminId: int;
    participantId: int;
    gAOrB: bytes;
    keyFingerprint: long;
    protocol: Api.TypePhoneCallProtocol;
    connections: Api.TypePhoneConnection[];
    startDate: int;
  }> {
    // flags: undefined;
    p2pAllowed?: true;
    video?: true;
    id: long;
    accessHash: long;
    date: int;
    adminId: int;
    participantId: int;
    gAOrB: bytes;
    keyFingerprint: long;
    protocol: Api.TypePhoneCallProtocol;
    connections: Api.TypePhoneConnection[];
    startDate: int;
  };
  export class PhoneCallDiscarded extends VirtualClass<{
    // flags: undefined;
    needRating?: true;
    needDebug?: true;
    video?: true;
    id: long;
    reason?: Api.TypePhoneCallDiscardReason;
    duration?: int;
  }> {
    // flags: undefined;
    needRating?: true;
    needDebug?: true;
    video?: true;
    id: long;
    reason?: Api.TypePhoneCallDiscardReason;
    duration?: int;
  };
  export class PhoneConnection extends VirtualClass<{
    id: long;
    ip: string;
    ipv6: string;
    port: int;
    peerTag: bytes;
  }> {
    id: long;
    ip: string;
    ipv6: string;
    port: int;
    peerTag: bytes;
  };
  export class PhoneConnectionWebrtc extends VirtualClass<{
    // flags: undefined;
    turn?: true;
    stun?: true;
    id: long;
    ip: string;
    ipv6: string;
    port: int;
    username: string;
    password: string;
  }> {
    // flags: undefined;
    turn?: true;
    stun?: true;
    id: long;
    ip: string;
    ipv6: string;
    port: int;
    username: string;
    password: string;
  };
  export class PhoneCallProtocol extends VirtualClass<{
    // flags: undefined;
    udpP2p?: true;
    udpReflector?: true;
    minLayer: int;
    maxLayer: int;
    libraryVersions: string[];
  }> {
    // flags: undefined;
    udpP2p?: true;
    udpReflector?: true;
    minLayer: int;
    maxLayer: int;
    libraryVersions: string[];
  };
  export class CdnPublicKey extends VirtualClass<{
    dcId: int;
    publicKey: string;
  }> {
    dcId: int;
    publicKey: string;
  };
  export class CdnConfig extends VirtualClass<{
    publicKeys: Api.TypeCdnPublicKey[];
  }> {
    publicKeys: Api.TypeCdnPublicKey[];
  };
  export class LangPackString extends VirtualClass<{
    key: string;
    value: string;
  }> {
    key: string;
    value: string;
  };
  export class LangPackStringPluralized extends VirtualClass<{
    // flags: undefined;
    key: string;
    zeroValue?: string;
    oneValue?: string;
    twoValue?: string;
    fewValue?: string;
    manyValue?: string;
    otherValue: string;
  }> {
    // flags: undefined;
    key: string;
    zeroValue?: string;
    oneValue?: string;
    twoValue?: string;
    fewValue?: string;
    manyValue?: string;
    otherValue: string;
  };
  export class LangPackStringDeleted extends VirtualClass<{
    key: string;
  }> {
    key: string;
  };
  export class LangPackDifference extends VirtualClass<{
    langCode: string;
    fromVersion: int;
    version: int;
    strings: Api.TypeLangPackString[];
  }> {
    langCode: string;
    fromVersion: int;
    version: int;
    strings: Api.TypeLangPackString[];
  };
  export class LangPackLanguage extends VirtualClass<{
    // flags: undefined;
    official?: true;
    rtl?: true;
    beta?: true;
    name: string;
    nativeName: string;
    langCode: string;
    baseLangCode?: string;
    pluralCode: string;
    stringsCount: int;
    translatedCount: int;
    translationsUrl: string;
  }> {
    // flags: undefined;
    official?: true;
    rtl?: true;
    beta?: true;
    name: string;
    nativeName: string;
    langCode: string;
    baseLangCode?: string;
    pluralCode: string;
    stringsCount: int;
    translatedCount: int;
    translationsUrl: string;
  };
  export class ChannelAdminLogEventActionChangeTitle extends VirtualClass<{
    prevValue: string;
    newValue: string;
  }> {
    prevValue: string;
    newValue: string;
  };
  export class ChannelAdminLogEventActionChangeAbout extends VirtualClass<{
    prevValue: string;
    newValue: string;
  }> {
    prevValue: string;
    newValue: string;
  };
  export class ChannelAdminLogEventActionChangeUsername extends VirtualClass<{
    prevValue: string;
    newValue: string;
  }> {
    prevValue: string;
    newValue: string;
  };
  export class ChannelAdminLogEventActionChangePhoto extends VirtualClass<{
    prevPhoto: Api.TypePhoto;
    newPhoto: Api.TypePhoto;
  }> {
    prevPhoto: Api.TypePhoto;
    newPhoto: Api.TypePhoto;
  };
  export class ChannelAdminLogEventActionToggleInvites extends VirtualClass<{
    newValue: Bool;
  }> {
    newValue: Bool;
  };
  export class ChannelAdminLogEventActionToggleSignatures extends VirtualClass<{
    newValue: Bool;
  }> {
    newValue: Bool;
  };
  export class ChannelAdminLogEventActionUpdatePinned extends VirtualClass<{
    message: Api.TypeMessage;
  }> {
    message: Api.TypeMessage;
  };
  export class ChannelAdminLogEventActionEditMessage extends VirtualClass<{
    prevMessage: Api.TypeMessage;
    newMessage: Api.TypeMessage;
  }> {
    prevMessage: Api.TypeMessage;
    newMessage: Api.TypeMessage;
  };
  export class ChannelAdminLogEventActionDeleteMessage extends VirtualClass<{
    message: Api.TypeMessage;
  }> {
    message: Api.TypeMessage;
  };
  export class ChannelAdminLogEventActionParticipantJoin extends VirtualClass<void> {};
  export class ChannelAdminLogEventActionParticipantLeave extends VirtualClass<void> {};
  export class ChannelAdminLogEventActionParticipantInvite extends VirtualClass<{
    participant: Api.TypeChannelParticipant;
  }> {
    participant: Api.TypeChannelParticipant;
  };
  export class ChannelAdminLogEventActionParticipantToggleBan extends VirtualClass<{
    prevParticipant: Api.TypeChannelParticipant;
    newParticipant: Api.TypeChannelParticipant;
  }> {
    prevParticipant: Api.TypeChannelParticipant;
    newParticipant: Api.TypeChannelParticipant;
  };
  export class ChannelAdminLogEventActionParticipantToggleAdmin extends VirtualClass<{
    prevParticipant: Api.TypeChannelParticipant;
    newParticipant: Api.TypeChannelParticipant;
  }> {
    prevParticipant: Api.TypeChannelParticipant;
    newParticipant: Api.TypeChannelParticipant;
  };
  export class ChannelAdminLogEventActionChangeStickerSet extends VirtualClass<{
    prevStickerset: Api.TypeInputStickerSet;
    newStickerset: Api.TypeInputStickerSet;
  }> {
    prevStickerset: Api.TypeInputStickerSet;
    newStickerset: Api.TypeInputStickerSet;
  };
  export class ChannelAdminLogEventActionTogglePreHistoryHidden extends VirtualClass<{
    newValue: Bool;
  }> {
    newValue: Bool;
  };
  export class ChannelAdminLogEventActionDefaultBannedRights extends VirtualClass<{
    prevBannedRights: Api.TypeChatBannedRights;
    newBannedRights: Api.TypeChatBannedRights;
  }> {
    prevBannedRights: Api.TypeChatBannedRights;
    newBannedRights: Api.TypeChatBannedRights;
  };
  export class ChannelAdminLogEventActionStopPoll extends VirtualClass<{
    message: Api.TypeMessage;
  }> {
    message: Api.TypeMessage;
  };
  export class ChannelAdminLogEventActionChangeLinkedChat extends VirtualClass<{
    prevValue: int;
    newValue: int;
  }> {
    prevValue: int;
    newValue: int;
  };
  export class ChannelAdminLogEventActionChangeLocation extends VirtualClass<{
    prevValue: Api.TypeChannelLocation;
    newValue: Api.TypeChannelLocation;
  }> {
    prevValue: Api.TypeChannelLocation;
    newValue: Api.TypeChannelLocation;
  };
  export class ChannelAdminLogEventActionToggleSlowMode extends VirtualClass<{
    prevValue: int;
    newValue: int;
  }> {
    prevValue: int;
    newValue: int;
  };
  export class ChannelAdminLogEventActionStartGroupCall extends VirtualClass<{
    call: Api.TypeInputGroupCall;
  }> {
    call: Api.TypeInputGroupCall;
  };
  export class ChannelAdminLogEventActionDiscardGroupCall extends VirtualClass<{
    call: Api.TypeInputGroupCall;
  }> {
    call: Api.TypeInputGroupCall;
  };
  export class ChannelAdminLogEventActionParticipantMute extends VirtualClass<{
    participant: Api.TypeGroupCallParticipant;
  }> {
    participant: Api.TypeGroupCallParticipant;
  };
  export class ChannelAdminLogEventActionParticipantUnmute extends VirtualClass<{
    participant: Api.TypeGroupCallParticipant;
  }> {
    participant: Api.TypeGroupCallParticipant;
  };
  export class ChannelAdminLogEventActionToggleGroupCallSetting extends VirtualClass<{
    joinMuted: Bool;
  }> {
    joinMuted: Bool;
  };
  export class ChannelAdminLogEventActionParticipantJoinByInvite extends VirtualClass<{
    invite: Api.TypeExportedChatInvite;
  }> {
    invite: Api.TypeExportedChatInvite;
  };
  export class ChannelAdminLogEventActionExportedInviteDelete extends VirtualClass<{
    invite: Api.TypeExportedChatInvite;
  }> {
    invite: Api.TypeExportedChatInvite;
  };
  export class ChannelAdminLogEventActionExportedInviteRevoke extends VirtualClass<{
    invite: Api.TypeExportedChatInvite;
  }> {
    invite: Api.TypeExportedChatInvite;
  };
  export class ChannelAdminLogEventActionExportedInviteEdit extends VirtualClass<{
    prevInvite: Api.TypeExportedChatInvite;
    newInvite: Api.TypeExportedChatInvite;
  }> {
    prevInvite: Api.TypeExportedChatInvite;
    newInvite: Api.TypeExportedChatInvite;
  };
  export class ChannelAdminLogEventActionParticipantVolume extends VirtualClass<{
    participant: Api.TypeGroupCallParticipant;
  }> {
    participant: Api.TypeGroupCallParticipant;
  };
  export class ChannelAdminLogEventActionChangeHistoryTTL extends VirtualClass<{
    prevValue: int;
    newValue: int;
  }> {
    prevValue: int;
    newValue: int;
  };
  export class ChannelAdminLogEvent extends VirtualClass<{
    id: long;
    date: int;
    userId: int;
    action: Api.TypeChannelAdminLogEventAction;
  }> {
    id: long;
    date: int;
    userId: int;
    action: Api.TypeChannelAdminLogEventAction;
  };
  export class ChannelAdminLogEventsFilter extends VirtualClass<{
    // flags: undefined;
    join?: true;
    leave?: true;
    invite?: true;
    ban?: true;
    unban?: true;
    kick?: true;
    unkick?: true;
    promote?: true;
    demote?: true;
    info?: true;
    settings?: true;
    pinned?: true;
    edit?: true;
    delete?: true;
    groupCall?: true;
    invites?: true;
  } | void> {
    // flags: undefined;
    join?: true;
    leave?: true;
    invite?: true;
    ban?: true;
    unban?: true;
    kick?: true;
    unkick?: true;
    promote?: true;
    demote?: true;
    info?: true;
    settings?: true;
    pinned?: true;
    edit?: true;
    delete?: true;
    groupCall?: true;
    invites?: true;
  };
  export class PopularContact extends VirtualClass<{
    clientId: long;
    importers: int;
  }> {
    clientId: long;
    importers: int;
  };
  export class RecentMeUrlUnknown extends VirtualClass<{
    url: string;
  }> {
    url: string;
  };
  export class RecentMeUrlUser extends VirtualClass<{
    url: string;
    userId: int;
  }> {
    url: string;
    userId: int;
  };
  export class RecentMeUrlChat extends VirtualClass<{
    url: string;
    chatId: int;
  }> {
    url: string;
    chatId: int;
  };
  export class RecentMeUrlChatInvite extends VirtualClass<{
    url: string;
    chatInvite: Api.TypeChatInvite;
  }> {
    url: string;
    chatInvite: Api.TypeChatInvite;
  };
  export class RecentMeUrlStickerSet extends VirtualClass<{
    url: string;
    set: Api.TypeStickerSetCovered;
  }> {
    url: string;
    set: Api.TypeStickerSetCovered;
  };
  export class InputSingleMedia extends VirtualClass<{
    // flags: undefined;
    media: Api.TypeInputMedia;
    randomId: long;
    message: string;
    entities?: Api.TypeMessageEntity[];
  }> {
    // flags: undefined;
    media: Api.TypeInputMedia;
    randomId: long;
    message: string;
    entities?: Api.TypeMessageEntity[];
  };
  export class WebAuthorization extends VirtualClass<{
    hash: long;
    botId: int;
    domain: string;
    browser: string;
    platform: string;
    dateCreated: int;
    dateActive: int;
    ip: string;
    region: string;
  }> {
    hash: long;
    botId: int;
    domain: string;
    browser: string;
    platform: string;
    dateCreated: int;
    dateActive: int;
    ip: string;
    region: string;
  };
  export class InputMessageID extends VirtualClass<{
    id: int;
  }> {
    id: int;
  };
  export class InputMessageReplyTo extends VirtualClass<{
    id: int;
  }> {
    id: int;
  };
  export class InputMessagePinned extends VirtualClass<void> {};
  export class InputMessageCallbackQuery extends VirtualClass<{
    id: int;
    queryId: long;
  }> {
    id: int;
    queryId: long;
  };
  export class InputDialogPeer extends VirtualClass<{
    peer: Api.TypeInputPeer;
  }> {
    peer: Api.TypeInputPeer;
  };
  export class InputDialogPeerFolder extends VirtualClass<{
    folderId: int;
  }> {
    folderId: int;
  };
  export class DialogPeer extends VirtualClass<{
    peer: Api.TypePeer;
  }> {
    peer: Api.TypePeer;
  };
  export class DialogPeerFolder extends VirtualClass<{
    folderId: int;
  }> {
    folderId: int;
  };
  export class FileHash extends VirtualClass<{
    offset: int;
    limit: int;
    hash: bytes;
  }> {
    offset: int;
    limit: int;
    hash: bytes;
  };
  export class InputClientProxy extends VirtualClass<{
    address: string;
    port: int;
  }> {
    address: string;
    port: int;
  };
  export class InputSecureFileUploaded extends VirtualClass<{
    id: long;
    parts: int;
    md5Checksum: string;
    fileHash: bytes;
    secret: bytes;
  }> {
    id: long;
    parts: int;
    md5Checksum: string;
    fileHash: bytes;
    secret: bytes;
  };
  export class InputSecureFile extends VirtualClass<{
    id: long;
    accessHash: long;
  }> {
    id: long;
    accessHash: long;
  };
  export class SecureFileEmpty extends VirtualClass<void> {};
  export class SecureFile extends VirtualClass<{
    id: long;
    accessHash: long;
    size: int;
    dcId: int;
    date: int;
    fileHash: bytes;
    secret: bytes;
  }> {
    id: long;
    accessHash: long;
    size: int;
    dcId: int;
    date: int;
    fileHash: bytes;
    secret: bytes;
  };
  export class SecureData extends VirtualClass<{
    data: bytes;
    dataHash: bytes;
    secret: bytes;
  }> {
    data: bytes;
    dataHash: bytes;
    secret: bytes;
  };
  export class SecurePlainPhone extends VirtualClass<{
    phone: string;
  }> {
    phone: string;
  };
  export class SecurePlainEmail extends VirtualClass<{
    email: string;
  }> {
    email: string;
  };
  export class SecureValueTypePersonalDetails extends VirtualClass<void> {};
  export class SecureValueTypePassport extends VirtualClass<void> {};
  export class SecureValueTypeDriverLicense extends VirtualClass<void> {};
  export class SecureValueTypeIdentityCard extends VirtualClass<void> {};
  export class SecureValueTypeInternalPassport extends VirtualClass<void> {};
  export class SecureValueTypeAddress extends VirtualClass<void> {};
  export class SecureValueTypeUtilityBill extends VirtualClass<void> {};
  export class SecureValueTypeBankStatement extends VirtualClass<void> {};
  export class SecureValueTypeRentalAgreement extends VirtualClass<void> {};
  export class SecureValueTypePassportRegistration extends VirtualClass<void> {};
  export class SecureValueTypeTemporaryRegistration extends VirtualClass<void> {};
  export class SecureValueTypePhone extends VirtualClass<void> {};
  export class SecureValueTypeEmail extends VirtualClass<void> {};
  export class SecureValue extends VirtualClass<{
    // flags: undefined;
    type: Api.TypeSecureValueType;
    data?: Api.TypeSecureData;
    frontSide?: Api.TypeSecureFile;
    reverseSide?: Api.TypeSecureFile;
    selfie?: Api.TypeSecureFile;
    translation?: Api.TypeSecureFile[];
    files?: Api.TypeSecureFile[];
    plainData?: Api.TypeSecurePlainData;
    hash: bytes;
  }> {
    // flags: undefined;
    type: Api.TypeSecureValueType;
    data?: Api.TypeSecureData;
    frontSide?: Api.TypeSecureFile;
    reverseSide?: Api.TypeSecureFile;
    selfie?: Api.TypeSecureFile;
    translation?: Api.TypeSecureFile[];
    files?: Api.TypeSecureFile[];
    plainData?: Api.TypeSecurePlainData;
    hash: bytes;
  };
  export class InputSecureValue extends VirtualClass<{
    // flags: undefined;
    type: Api.TypeSecureValueType;
    data?: Api.TypeSecureData;
    frontSide?: Api.TypeInputSecureFile;
    reverseSide?: Api.TypeInputSecureFile;
    selfie?: Api.TypeInputSecureFile;
    translation?: Api.TypeInputSecureFile[];
    files?: Api.TypeInputSecureFile[];
    plainData?: Api.TypeSecurePlainData;
  }> {
    // flags: undefined;
    type: Api.TypeSecureValueType;
    data?: Api.TypeSecureData;
    frontSide?: Api.TypeInputSecureFile;
    reverseSide?: Api.TypeInputSecureFile;
    selfie?: Api.TypeInputSecureFile;
    translation?: Api.TypeInputSecureFile[];
    files?: Api.TypeInputSecureFile[];
    plainData?: Api.TypeSecurePlainData;
  };
  export class SecureValueHash extends VirtualClass<{
    type: Api.TypeSecureValueType;
    hash: bytes;
  }> {
    type: Api.TypeSecureValueType;
    hash: bytes;
  };
  export class SecureValueErrorData extends VirtualClass<{
    type: Api.TypeSecureValueType;
    dataHash: bytes;
    field: string;
    text: string;
  }> {
    type: Api.TypeSecureValueType;
    dataHash: bytes;
    field: string;
    text: string;
  };
  export class SecureValueErrorFrontSide extends VirtualClass<{
    type: Api.TypeSecureValueType;
    fileHash: bytes;
    text: string;
  }> {
    type: Api.TypeSecureValueType;
    fileHash: bytes;
    text: string;
  };
  export class SecureValueErrorReverseSide extends VirtualClass<{
    type: Api.TypeSecureValueType;
    fileHash: bytes;
    text: string;
  }> {
    type: Api.TypeSecureValueType;
    fileHash: bytes;
    text: string;
  };
  export class SecureValueErrorSelfie extends VirtualClass<{
    type: Api.TypeSecureValueType;
    fileHash: bytes;
    text: string;
  }> {
    type: Api.TypeSecureValueType;
    fileHash: bytes;
    text: string;
  };
  export class SecureValueErrorFile extends VirtualClass<{
    type: Api.TypeSecureValueType;
    fileHash: bytes;
    text: string;
  }> {
    type: Api.TypeSecureValueType;
    fileHash: bytes;
    text: string;
  };
  export class SecureValueErrorFiles extends VirtualClass<{
    type: Api.TypeSecureValueType;
    fileHash: bytes[];
    text: string;
  }> {
    type: Api.TypeSecureValueType;
    fileHash: bytes[];
    text: string;
  };
  export class SecureValueError extends VirtualClass<{
    type: Api.TypeSecureValueType;
    hash: bytes;
    text: string;
  }> {
    type: Api.TypeSecureValueType;
    hash: bytes;
    text: string;
  };
  export class SecureValueErrorTranslationFile extends VirtualClass<{
    type: Api.TypeSecureValueType;
    fileHash: bytes;
    text: string;
  }> {
    type: Api.TypeSecureValueType;
    fileHash: bytes;
    text: string;
  };
  export class SecureValueErrorTranslationFiles extends VirtualClass<{
    type: Api.TypeSecureValueType;
    fileHash: bytes[];
    text: string;
  }> {
    type: Api.TypeSecureValueType;
    fileHash: bytes[];
    text: string;
  };
  export class SecureCredentialsEncrypted extends VirtualClass<{
    data: bytes;
    hash: bytes;
    secret: bytes;
  }> {
    data: bytes;
    hash: bytes;
    secret: bytes;
  };
  export class SavedPhoneContact extends VirtualClass<{
    phone: string;
    firstName: string;
    lastName: string;
    date: int;
  }> {
    phone: string;
    firstName: string;
    lastName: string;
    date: int;
  };
  export class PasswordKdfAlgoUnknown extends VirtualClass<void> {};
  export class PasswordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow extends VirtualClass<{
    salt1: bytes;
    salt2: bytes;
    g: int;
    p: bytes;
  }> {
    salt1: bytes;
    salt2: bytes;
    g: int;
    p: bytes;
  };
  export class SecurePasswordKdfAlgoUnknown extends VirtualClass<void> {};
  export class SecurePasswordKdfAlgoPBKDF2HMACSHA512iter100000 extends VirtualClass<{
    salt: bytes;
  }> {
    salt: bytes;
  };
  export class SecurePasswordKdfAlgoSHA512 extends VirtualClass<{
    salt: bytes;
  }> {
    salt: bytes;
  };
  export class SecureSecretSettings extends VirtualClass<{
    secureAlgo: Api.TypeSecurePasswordKdfAlgo;
    secureSecret: bytes;
    secureSecretId: long;
  }> {
    secureAlgo: Api.TypeSecurePasswordKdfAlgo;
    secureSecret: bytes;
    secureSecretId: long;
  };
  export class InputCheckPasswordEmpty extends VirtualClass<void> {};
  export class InputCheckPasswordSRP extends VirtualClass<{
    srpId: long;
    A: bytes;
    M1: bytes;
  }> {
    srpId: long;
    A: bytes;
    M1: bytes;
  };
  export class SecureRequiredType extends VirtualClass<{
    // flags: undefined;
    nativeNames?: true;
    selfieRequired?: true;
    translationRequired?: true;
    type: Api.TypeSecureValueType;
  }> {
    // flags: undefined;
    nativeNames?: true;
    selfieRequired?: true;
    translationRequired?: true;
    type: Api.TypeSecureValueType;
  };
  export class SecureRequiredTypeOneOf extends VirtualClass<{
    types: Api.TypeSecureRequiredType[];
  }> {
    types: Api.TypeSecureRequiredType[];
  };
  export class InputAppEvent extends VirtualClass<{
    time: double;
    type: string;
    peer: long;
    data: Api.TypeJSONValue;
  }> {
    time: double;
    type: string;
    peer: long;
    data: Api.TypeJSONValue;
  };
  export class JsonObjectValue extends VirtualClass<{
    key: string;
    value: Api.TypeJSONValue;
  }> {
    key: string;
    value: Api.TypeJSONValue;
  };
  export class JsonNull extends VirtualClass<void> {};
  export class JsonBool extends VirtualClass<{
    value: Bool;
  }> {
    value: Bool;
  };
  export class JsonNumber extends VirtualClass<{
    value: double;
  }> {
    value: double;
  };
  export class JsonString extends VirtualClass<{
    value: string;
  }> {
    value: string;
  };
  export class JsonArray extends VirtualClass<{
    value: Api.TypeJSONValue[];
  }> {
    value: Api.TypeJSONValue[];
  };
  export class JsonObject extends VirtualClass<{
    value: Api.TypeJSONObjectValue[];
  }> {
    value: Api.TypeJSONObjectValue[];
  };
  export class PageTableCell extends VirtualClass<{
    // flags: undefined;
    header?: true;
    alignCenter?: true;
    alignRight?: true;
    valignMiddle?: true;
    valignBottom?: true;
    text?: Api.TypeRichText;
    colspan?: int;
    rowspan?: int;
  } | void> {
    // flags: undefined;
    header?: true;
    alignCenter?: true;
    alignRight?: true;
    valignMiddle?: true;
    valignBottom?: true;
    text?: Api.TypeRichText;
    colspan?: int;
    rowspan?: int;
  };
  export class PageTableRow extends VirtualClass<{
    cells: Api.TypePageTableCell[];
  }> {
    cells: Api.TypePageTableCell[];
  };
  export class PageCaption extends VirtualClass<{
    text: Api.TypeRichText;
    credit: Api.TypeRichText;
  }> {
    text: Api.TypeRichText;
    credit: Api.TypeRichText;
  };
  export class PageListItemText extends VirtualClass<{
    text: Api.TypeRichText;
  }> {
    text: Api.TypeRichText;
  };
  export class PageListItemBlocks extends VirtualClass<{
    blocks: Api.TypePageBlock[];
  }> {
    blocks: Api.TypePageBlock[];
  };
  export class PageListOrderedItemText extends VirtualClass<{
    num: string;
    text: Api.TypeRichText;
  }> {
    num: string;
    text: Api.TypeRichText;
  };
  export class PageListOrderedItemBlocks extends VirtualClass<{
    num: string;
    blocks: Api.TypePageBlock[];
  }> {
    num: string;
    blocks: Api.TypePageBlock[];
  };
  export class PageRelatedArticle extends VirtualClass<{
    // flags: undefined;
    url: string;
    webpageId: long;
    title?: string;
    description?: string;
    photoId?: long;
    author?: string;
    publishedDate?: int;
  }> {
    // flags: undefined;
    url: string;
    webpageId: long;
    title?: string;
    description?: string;
    photoId?: long;
    author?: string;
    publishedDate?: int;
  };
  export class Page extends VirtualClass<{
    // flags: undefined;
    part?: true;
    rtl?: true;
    v2?: true;
    url: string;
    blocks: Api.TypePageBlock[];
    photos: Api.TypePhoto[];
    documents: Api.TypeDocument[];
    views?: int;
  }> {
    // flags: undefined;
    part?: true;
    rtl?: true;
    v2?: true;
    url: string;
    blocks: Api.TypePageBlock[];
    photos: Api.TypePhoto[];
    documents: Api.TypeDocument[];
    views?: int;
  };
  export class PollAnswer extends VirtualClass<{
    text: string;
    option: bytes;
  }> {
    text: string;
    option: bytes;
  };
  export class Poll extends VirtualClass<{
    id: long;
    // flags: undefined;
    closed?: true;
    publicVoters?: true;
    multipleChoice?: true;
    quiz?: true;
    question: string;
    answers: Api.TypePollAnswer[];
    closePeriod?: int;
    closeDate?: int;
  }> {
    id: long;
    // flags: undefined;
    closed?: true;
    publicVoters?: true;
    multipleChoice?: true;
    quiz?: true;
    question: string;
    answers: Api.TypePollAnswer[];
    closePeriod?: int;
    closeDate?: int;
  };
  export class PollAnswerVoters extends VirtualClass<{
    // flags: undefined;
    chosen?: true;
    correct?: true;
    option: bytes;
    voters: int;
  }> {
    // flags: undefined;
    chosen?: true;
    correct?: true;
    option: bytes;
    voters: int;
  };
  export class PollResults extends VirtualClass<{
    // flags: undefined;
    min?: true;
    results?: Api.TypePollAnswerVoters[];
    totalVoters?: int;
    recentVoters?: int[];
    solution?: string;
    solutionEntities?: Api.TypeMessageEntity[];
  } | void> {
    // flags: undefined;
    min?: true;
    results?: Api.TypePollAnswerVoters[];
    totalVoters?: int;
    recentVoters?: int[];
    solution?: string;
    solutionEntities?: Api.TypeMessageEntity[];
  };
  export class ChatOnlines extends VirtualClass<{
    onlines: int;
  }> {
    onlines: int;
  };
  export class StatsURL extends VirtualClass<{
    url: string;
  }> {
    url: string;
  };
  export class ChatAdminRights extends VirtualClass<{
    // flags: undefined;
    changeInfo?: true;
    postMessages?: true;
    editMessages?: true;
    deleteMessages?: true;
    banUsers?: true;
    inviteUsers?: true;
    pinMessages?: true;
    addAdmins?: true;
    anonymous?: true;
    manageCall?: true;
    other?: true;
  } | void> {
    // flags: undefined;
    changeInfo?: true;
    postMessages?: true;
    editMessages?: true;
    deleteMessages?: true;
    banUsers?: true;
    inviteUsers?: true;
    pinMessages?: true;
    addAdmins?: true;
    anonymous?: true;
    manageCall?: true;
    other?: true;
  };
  export class ChatBannedRights extends VirtualClass<{
    // flags: undefined;
    viewMessages?: true;
    sendMessages?: true;
    sendMedia?: true;
    sendStickers?: true;
    sendGifs?: true;
    sendGames?: true;
    sendInline?: true;
    embedLinks?: true;
    sendPolls?: true;
    changeInfo?: true;
    inviteUsers?: true;
    pinMessages?: true;
    untilDate: int;
  }> {
    // flags: undefined;
    viewMessages?: true;
    sendMessages?: true;
    sendMedia?: true;
    sendStickers?: true;
    sendGifs?: true;
    sendGames?: true;
    sendInline?: true;
    embedLinks?: true;
    sendPolls?: true;
    changeInfo?: true;
    inviteUsers?: true;
    pinMessages?: true;
    untilDate: int;
  };
  export class InputWallPaper extends VirtualClass<{
    id: long;
    accessHash: long;
  }> {
    id: long;
    accessHash: long;
  };
  export class InputWallPaperSlug extends VirtualClass<{
    slug: string;
  }> {
    slug: string;
  };
  export class InputWallPaperNoFile extends VirtualClass<void> {};
  export class CodeSettings extends VirtualClass<{
    // flags: undefined;
    allowFlashcall?: true;
    currentNumber?: true;
    allowAppHash?: true;
  } | void> {
    // flags: undefined;
    allowFlashcall?: true;
    currentNumber?: true;
    allowAppHash?: true;
  };
  export class WallPaperSettings extends VirtualClass<{
    // flags: undefined;
    blur?: true;
    motion?: true;
    backgroundColor?: int;
    secondBackgroundColor?: int;
    intensity?: int;
    rotation?: int;
  } | void> {
    // flags: undefined;
    blur?: true;
    motion?: true;
    backgroundColor?: int;
    secondBackgroundColor?: int;
    intensity?: int;
    rotation?: int;
  };
  export class AutoDownloadSettings extends VirtualClass<{
    // flags: undefined;
    disabled?: true;
    videoPreloadLarge?: true;
    audioPreloadNext?: true;
    phonecallsLessData?: true;
    photoSizeMax: int;
    videoSizeMax: int;
    fileSizeMax: int;
    videoUploadMaxbitrate: int;
  }> {
    // flags: undefined;
    disabled?: true;
    videoPreloadLarge?: true;
    audioPreloadNext?: true;
    phonecallsLessData?: true;
    photoSizeMax: int;
    videoSizeMax: int;
    fileSizeMax: int;
    videoUploadMaxbitrate: int;
  };
  export class EmojiKeyword extends VirtualClass<{
    keyword: string;
    emoticons: string[];
  }> {
    keyword: string;
    emoticons: string[];
  };
  export class EmojiKeywordDeleted extends VirtualClass<{
    keyword: string;
    emoticons: string[];
  }> {
    keyword: string;
    emoticons: string[];
  };
  export class EmojiKeywordsDifference extends VirtualClass<{
    langCode: string;
    fromVersion: int;
    version: int;
    keywords: Api.TypeEmojiKeyword[];
  }> {
    langCode: string;
    fromVersion: int;
    version: int;
    keywords: Api.TypeEmojiKeyword[];
  };
  export class EmojiURL extends VirtualClass<{
    url: string;
  }> {
    url: string;
  };
  export class EmojiLanguage extends VirtualClass<{
    langCode: string;
  }> {
    langCode: string;
  };
  export class Folder extends VirtualClass<{
    // flags: undefined;
    autofillNewBroadcasts?: true;
    autofillPublicGroups?: true;
    autofillNewCorrespondents?: true;
    id: int;
    title: string;
    photo?: Api.TypeChatPhoto;
  }> {
    // flags: undefined;
    autofillNewBroadcasts?: true;
    autofillPublicGroups?: true;
    autofillNewCorrespondents?: true;
    id: int;
    title: string;
    photo?: Api.TypeChatPhoto;
  };
  export class InputFolderPeer extends VirtualClass<{
    peer: Api.TypeInputPeer;
    folderId: int;
  }> {
    peer: Api.TypeInputPeer;
    folderId: int;
  };
  export class FolderPeer extends VirtualClass<{
    peer: Api.TypePeer;
    folderId: int;
  }> {
    peer: Api.TypePeer;
    folderId: int;
  };
  export class UrlAuthResultRequest extends VirtualClass<{
    // flags: undefined;
    requestWriteAccess?: true;
    bot: Api.TypeUser;
    domain: string;
  }> {
    // flags: undefined;
    requestWriteAccess?: true;
    bot: Api.TypeUser;
    domain: string;
  };
  export class UrlAuthResultAccepted extends VirtualClass<{
    url: string;
  }> {
    url: string;
  };
  export class UrlAuthResultDefault extends VirtualClass<void> {};
  export class ChannelLocationEmpty extends VirtualClass<void> {};
  export class ChannelLocation extends VirtualClass<{
    geoPoint: Api.TypeGeoPoint;
    address: string;
  }> {
    geoPoint: Api.TypeGeoPoint;
    address: string;
  };
  export class PeerLocated extends VirtualClass<{
    peer: Api.TypePeer;
    expires: int;
    distance: int;
  }> {
    peer: Api.TypePeer;
    expires: int;
    distance: int;
  };
  export class PeerSelfLocated extends VirtualClass<{
    expires: int;
  }> {
    expires: int;
  };
  export class RestrictionReason extends VirtualClass<{
    platform: string;
    reason: string;
    text: string;
  }> {
    platform: string;
    reason: string;
    text: string;
  };
  export class InputTheme extends VirtualClass<{
    id: long;
    accessHash: long;
  }> {
    id: long;
    accessHash: long;
  };
  export class InputThemeSlug extends VirtualClass<{
    slug: string;
  }> {
    slug: string;
  };
  export class Theme extends VirtualClass<{
    // flags: undefined;
    creator?: true;
    default?: true;
    id: long;
    accessHash: long;
    slug: string;
    title: string;
    document?: Api.TypeDocument;
    settings?: Api.TypeThemeSettings;
    installsCount: int;
  }> {
    // flags: undefined;
    creator?: true;
    default?: true;
    id: long;
    accessHash: long;
    slug: string;
    title: string;
    document?: Api.TypeDocument;
    settings?: Api.TypeThemeSettings;
    installsCount: int;
  };
  export class BaseThemeClassic extends VirtualClass<void> {};
  export class BaseThemeDay extends VirtualClass<void> {};
  export class BaseThemeNight extends VirtualClass<void> {};
  export class BaseThemeTinted extends VirtualClass<void> {};
  export class BaseThemeArctic extends VirtualClass<void> {};
  export class InputThemeSettings extends VirtualClass<{
    // flags: undefined;
    baseTheme: Api.TypeBaseTheme;
    accentColor: int;
    messageTopColor?: int;
    messageBottomColor?: int;
    wallpaper?: Api.TypeInputWallPaper;
    wallpaperSettings?: Api.TypeWallPaperSettings;
  }> {
    // flags: undefined;
    baseTheme: Api.TypeBaseTheme;
    accentColor: int;
    messageTopColor?: int;
    messageBottomColor?: int;
    wallpaper?: Api.TypeInputWallPaper;
    wallpaperSettings?: Api.TypeWallPaperSettings;
  };
  export class ThemeSettings extends VirtualClass<{
    // flags: undefined;
    baseTheme: Api.TypeBaseTheme;
    accentColor: int;
    messageTopColor?: int;
    messageBottomColor?: int;
    wallpaper?: Api.TypeWallPaper;
  }> {
    // flags: undefined;
    baseTheme: Api.TypeBaseTheme;
    accentColor: int;
    messageTopColor?: int;
    messageBottomColor?: int;
    wallpaper?: Api.TypeWallPaper;
  };
  export class WebPageAttributeTheme extends VirtualClass<{
    // flags: undefined;
    documents?: Api.TypeDocument[];
    settings?: Api.TypeThemeSettings;
  } | void> {
    // flags: undefined;
    documents?: Api.TypeDocument[];
    settings?: Api.TypeThemeSettings;
  };
  export class MessageUserVote extends VirtualClass<{
    userId: int;
    option: bytes;
    date: int;
  }> {
    userId: int;
    option: bytes;
    date: int;
  };
  export class MessageUserVoteInputOption extends VirtualClass<{
    userId: int;
    date: int;
  }> {
    userId: int;
    date: int;
  };
  export class MessageUserVoteMultiple extends VirtualClass<{
    userId: int;
    options: bytes[];
    date: int;
  }> {
    userId: int;
    options: bytes[];
    date: int;
  };
  export class BankCardOpenUrl extends VirtualClass<{
    url: string;
    name: string;
  }> {
    url: string;
    name: string;
  };
  export class DialogFilter extends VirtualClass<{
    // flags: undefined;
    contacts?: true;
    nonContacts?: true;
    groups?: true;
    broadcasts?: true;
    bots?: true;
    excludeMuted?: true;
    excludeRead?: true;
    excludeArchived?: true;
    id: int;
    title: string;
    emoticon?: string;
    pinnedPeers: Api.TypeInputPeer[];
    includePeers: Api.TypeInputPeer[];
    excludePeers: Api.TypeInputPeer[];
  }> {
    // flags: undefined;
    contacts?: true;
    nonContacts?: true;
    groups?: true;
    broadcasts?: true;
    bots?: true;
    excludeMuted?: true;
    excludeRead?: true;
    excludeArchived?: true;
    id: int;
    title: string;
    emoticon?: string;
    pinnedPeers: Api.TypeInputPeer[];
    includePeers: Api.TypeInputPeer[];
    excludePeers: Api.TypeInputPeer[];
  };
  export class DialogFilterSuggested extends VirtualClass<{
    filter: Api.TypeDialogFilter;
    description: string;
  }> {
    filter: Api.TypeDialogFilter;
    description: string;
  };
  export class StatsDateRangeDays extends VirtualClass<{
    minDate: int;
    maxDate: int;
  }> {
    minDate: int;
    maxDate: int;
  };
  export class StatsAbsValueAndPrev extends VirtualClass<{
    current: double;
    previous: double;
  }> {
    current: double;
    previous: double;
  };
  export class StatsPercentValue extends VirtualClass<{
    part: double;
    total: double;
  }> {
    part: double;
    total: double;
  };
  export class StatsGraphAsync extends VirtualClass<{
    token: string;
  }> {
    token: string;
  };
  export class StatsGraphError extends VirtualClass<{
    error: string;
  }> {
    error: string;
  };
  export class StatsGraph extends VirtualClass<{
    // flags: undefined;
    json: Api.TypeDataJSON;
    zoomToken?: string;
  }> {
    // flags: undefined;
    json: Api.TypeDataJSON;
    zoomToken?: string;
  };
  export class MessageInteractionCounters extends VirtualClass<{
    msgId: int;
    views: int;
    forwards: int;
  }> {
    msgId: int;
    views: int;
    forwards: int;
  };
  export class VideoSize extends VirtualClass<{
    // flags: undefined;
    type: string;
    w: int;
    h: int;
    size: int;
    videoStartTs?: double;
  }> {
    // flags: undefined;
    type: string;
    w: int;
    h: int;
    size: int;
    videoStartTs?: double;
  };
  export class StatsGroupTopPoster extends VirtualClass<{
    userId: int;
    messages: int;
    avgChars: int;
  }> {
    userId: int;
    messages: int;
    avgChars: int;
  };
  export class StatsGroupTopAdmin extends VirtualClass<{
    userId: int;
    deleted: int;
    kicked: int;
    banned: int;
  }> {
    userId: int;
    deleted: int;
    kicked: int;
    banned: int;
  };
  export class StatsGroupTopInviter extends VirtualClass<{
    userId: int;
    invitations: int;
  }> {
    userId: int;
    invitations: int;
  };
  export class GlobalPrivacySettings extends VirtualClass<{
    // flags: undefined;
    archiveAndMuteNewNoncontactPeers?: Bool;
  } | void> {
    // flags: undefined;
    archiveAndMuteNewNoncontactPeers?: Bool;
  };
  export class MessageViews extends VirtualClass<{
    // flags: undefined;
    views?: int;
    forwards?: int;
    replies?: Api.TypeMessageReplies;
  } | void> {
    // flags: undefined;
    views?: int;
    forwards?: int;
    replies?: Api.TypeMessageReplies;
  };
  export class MessageReplyHeader extends VirtualClass<{
    // flags: undefined;
    replyToMsgId: int;
    replyToPeerId?: Api.TypePeer;
    replyToTopId?: int;
  }> {
    // flags: undefined;
    replyToMsgId: int;
    replyToPeerId?: Api.TypePeer;
    replyToTopId?: int;
  };
  export class MessageReplies extends VirtualClass<{
    // flags: undefined;
    comments?: true;
    replies: int;
    repliesPts: int;
    recentRepliers?: Api.TypePeer[];
    channelId?: int;
    maxId?: int;
    readMaxId?: int;
  }> {
    // flags: undefined;
    comments?: true;
    replies: int;
    repliesPts: int;
    recentRepliers?: Api.TypePeer[];
    channelId?: int;
    maxId?: int;
    readMaxId?: int;
  };
  export class PeerBlocked extends VirtualClass<{
    peerId: Api.TypePeer;
    date: int;
  }> {
    peerId: Api.TypePeer;
    date: int;
  };
  export class GroupCallDiscarded extends VirtualClass<{
    id: long;
    accessHash: long;
    duration: int;
  }> {
    id: long;
    accessHash: long;
    duration: int;
  };
  export class GroupCall extends VirtualClass<{
    // flags: undefined;
    joinMuted?: true;
    canChangeJoinMuted?: true;
    joinDateAsc?: true;
    scheduleStartSubscribed?: true;
    id: long;
    accessHash: long;
    participantsCount: int;
    params?: Api.TypeDataJSON;
    title?: string;
    streamDcId?: int;
    recordStartDate?: int;
    scheduleDate?: int;
    version: int;
  }> {
    // flags: undefined;
    joinMuted?: true;
    canChangeJoinMuted?: true;
    joinDateAsc?: true;
    scheduleStartSubscribed?: true;
    id: long;
    accessHash: long;
    participantsCount: int;
    params?: Api.TypeDataJSON;
    title?: string;
    streamDcId?: int;
    recordStartDate?: int;
    scheduleDate?: int;
    version: int;
  };
  export class InputGroupCall extends VirtualClass<{
    id: long;
    accessHash: long;
  }> {
    id: long;
    accessHash: long;
  };
  export class GroupCallParticipant extends VirtualClass<{
    // flags: undefined;
    muted?: true;
    left?: true;
    canSelfUnmute?: true;
    justJoined?: true;
    versioned?: true;
    min?: true;
    mutedByYou?: true;
    volumeByAdmin?: true;
    self?: true;
    peer: Api.TypePeer;
    date: int;
    activeDate?: int;
    source: int;
    volume?: int;
    about?: string;
    raiseHandRating?: long;
    params?: Api.TypeDataJSON;
  }> {
    // flags: undefined;
    muted?: true;
    left?: true;
    canSelfUnmute?: true;
    justJoined?: true;
    versioned?: true;
    min?: true;
    mutedByYou?: true;
    volumeByAdmin?: true;
    self?: true;
    peer: Api.TypePeer;
    date: int;
    activeDate?: int;
    source: int;
    volume?: int;
    about?: string;
    raiseHandRating?: long;
    params?: Api.TypeDataJSON;
  };
  export class InlineQueryPeerTypeSameBotPM extends VirtualClass<void> {};
  export class InlineQueryPeerTypePM extends VirtualClass<void> {};
  export class InlineQueryPeerTypeChat extends VirtualClass<void> {};
  export class InlineQueryPeerTypeMegagroup extends VirtualClass<void> {};
  export class InlineQueryPeerTypeBroadcast extends VirtualClass<void> {};
  export class ChatInviteImporter extends VirtualClass<{
    userId: int;
    date: int;
  }> {
    userId: int;
    date: int;
  };
  export class ChatAdminWithInvites extends VirtualClass<{
    adminId: int;
    invitesCount: int;
    revokedInvitesCount: int;
  }> {
    adminId: int;
    invitesCount: int;
    revokedInvitesCount: int;
  };
  export class ResPQ extends VirtualClass<{
    nonce: int128;
    serverNonce: int128;
    pq: bytes;
    serverPublicKeyFingerprints: long[];
  }> {
    nonce: int128;
    serverNonce: int128;
    pq: bytes;
    serverPublicKeyFingerprints: long[];
  };
  export class PQInnerData extends VirtualClass<{
    pq: bytes;
    p: bytes;
    q: bytes;
    nonce: int128;
    serverNonce: int128;
    newNonce: int256;
  }> {
    pq: bytes;
    p: bytes;
    q: bytes;
    nonce: int128;
    serverNonce: int128;
    newNonce: int256;
  };
  export class PQInnerDataDc extends VirtualClass<{
    pq: bytes;
    p: bytes;
    q: bytes;
    nonce: int128;
    serverNonce: int128;
    newNonce: int256;
    dc: int;
  }> {
    pq: bytes;
    p: bytes;
    q: bytes;
    nonce: int128;
    serverNonce: int128;
    newNonce: int256;
    dc: int;
  };
  export class PQInnerDataTemp extends VirtualClass<{
    pq: bytes;
    p: bytes;
    q: bytes;
    nonce: int128;
    serverNonce: int128;
    newNonce: int256;
    expiresIn: int;
  }> {
    pq: bytes;
    p: bytes;
    q: bytes;
    nonce: int128;
    serverNonce: int128;
    newNonce: int256;
    expiresIn: int;
  };
  export class PQInnerDataTempDc extends VirtualClass<{
    pq: bytes;
    p: bytes;
    q: bytes;
    nonce: int128;
    serverNonce: int128;
    newNonce: int256;
    dc: int;
    expiresIn: int;
  }> {
    pq: bytes;
    p: bytes;
    q: bytes;
    nonce: int128;
    serverNonce: int128;
    newNonce: int256;
    dc: int;
    expiresIn: int;
  };
  export class ServerDHParamsFail extends VirtualClass<{
    nonce: int128;
    serverNonce: int128;
    newNonceHash: int128;
  }> {
    nonce: int128;
    serverNonce: int128;
    newNonceHash: int128;
  };
  export class ServerDHParamsOk extends VirtualClass<{
    nonce: int128;
    serverNonce: int128;
    encryptedAnswer: bytes;
  }> {
    nonce: int128;
    serverNonce: int128;
    encryptedAnswer: bytes;
  };
  export class ServerDHInnerData extends VirtualClass<{
    nonce: int128;
    serverNonce: int128;
    g: int;
    dhPrime: bytes;
    gA: bytes;
    serverTime: int;
  }> {
    nonce: int128;
    serverNonce: int128;
    g: int;
    dhPrime: bytes;
    gA: bytes;
    serverTime: int;
  };
  export class ClientDHInnerData extends VirtualClass<{
    nonce: int128;
    serverNonce: int128;
    retryId: long;
    gB: bytes;
  }> {
    nonce: int128;
    serverNonce: int128;
    retryId: long;
    gB: bytes;
  };
  export class DhGenOk extends VirtualClass<{
    nonce: int128;
    serverNonce: int128;
    newNonceHash1: int128;
  }> {
    nonce: int128;
    serverNonce: int128;
    newNonceHash1: int128;
  };
  export class DhGenRetry extends VirtualClass<{
    nonce: int128;
    serverNonce: int128;
    newNonceHash2: int128;
  }> {
    nonce: int128;
    serverNonce: int128;
    newNonceHash2: int128;
  };
  export class DhGenFail extends VirtualClass<{
    nonce: int128;
    serverNonce: int128;
    newNonceHash3: int128;
  }> {
    nonce: int128;
    serverNonce: int128;
    newNonceHash3: int128;
  };
  export class DestroyAuthKeyOk extends VirtualClass<void> {};
  export class DestroyAuthKeyNone extends VirtualClass<void> {};
  export class DestroyAuthKeyFail extends VirtualClass<void> {};
  export class MsgsAck extends VirtualClass<{
    msgIds: long[];
  }> {
    msgIds: long[];
  };
  export class BadMsgNotification extends VirtualClass<{
    badMsgId: long;
    badMsgSeqno: int;
    errorCode: int;
  }> {
    badMsgId: long;
    badMsgSeqno: int;
    errorCode: int;
  };
  export class BadServerSalt extends VirtualClass<{
    badMsgId: long;
    badMsgSeqno: int;
    errorCode: int;
    newServerSalt: long;
  }> {
    badMsgId: long;
    badMsgSeqno: int;
    errorCode: int;
    newServerSalt: long;
  };
  export class MsgsStateReq extends VirtualClass<{
    msgIds: long[];
  }> {
    msgIds: long[];
  };
  export class MsgsStateInfo extends VirtualClass<{
    reqMsgId: long;
    info: string;
  }> {
    reqMsgId: long;
    info: string;
  };
  export class MsgsAllInfo extends VirtualClass<{
    msgIds: long[];
    info: string;
  }> {
    msgIds: long[];
    info: string;
  };
  export class MsgDetailedInfo extends VirtualClass<{
    msgId: long;
    answerMsgId: long;
    bytes: int;
    status: int;
  }> {
    msgId: long;
    answerMsgId: long;
    bytes: int;
    status: int;
  };
  export class MsgNewDetailedInfo extends VirtualClass<{
    answerMsgId: long;
    bytes: int;
    status: int;
  }> {
    answerMsgId: long;
    bytes: int;
    status: int;
  };
  export class MsgResendReq extends VirtualClass<{
    msgIds: long[];
  }> {
    msgIds: long[];
  };
  export class RpcError extends VirtualClass<{
    errorCode: int;
    errorMessage: string;
  }> {
    errorCode: int;
    errorMessage: string;
  };
  export class RpcAnswerUnknown extends VirtualClass<void> {};
  export class RpcAnswerDroppedRunning extends VirtualClass<void> {};
  export class RpcAnswerDropped extends VirtualClass<{
    msgId: long;
    seqNo: int;
    bytes: int;
  }> {
    msgId: long;
    seqNo: int;
    bytes: int;
  };
  export class FutureSalt extends VirtualClass<{
    validSince: int;
    validUntil: int;
    salt: long;
  }> {
    validSince: int;
    validUntil: int;
    salt: long;
  };
  export class FutureSalts extends VirtualClass<{
    reqMsgId: long;
    now: int;
    salts: future_salt[];
  }> {
    reqMsgId: long;
    now: int;
    salts: future_salt[];
  };
  export class Pong extends VirtualClass<{
    msgId: long;
    pingId: long;
  }> {
    msgId: long;
    pingId: long;
  };
  export class DestroySessionOk extends VirtualClass<{
    sessionId: long;
  }> {
    sessionId: long;
  };
  export class DestroySessionNone extends VirtualClass<{
    sessionId: long;
  }> {
    sessionId: long;
  };
  export class NewSessionCreated extends VirtualClass<{
    firstMsgId: long;
    uniqueId: long;
    serverSalt: long;
  }> {
    firstMsgId: long;
    uniqueId: long;
    serverSalt: long;
  };
  export class HttpWait extends VirtualClass<{
    maxDelay: int;
    waitAfter: int;
    maxWait: int;
  }> {
    maxDelay: int;
    waitAfter: int;
    maxWait: int;
  };
  export class IpPort extends VirtualClass<{
    ipv4: int;
    port: int;
  }> {
    ipv4: int;
    port: int;
  };
  export class IpPortSecret extends VirtualClass<{
    ipv4: int;
    port: int;
    secret: bytes;
  }> {
    ipv4: int;
    port: int;
    secret: bytes;
  };
  export class AccessPointRule extends VirtualClass<{
    phonePrefixRules: string;
    dcId: int;
    ips: Api.TypeIpPort[];
  }> {
    phonePrefixRules: string;
    dcId: int;
    ips: Api.TypeIpPort[];
  };
  export class TlsClientHello extends VirtualClass<{
    blocks: Api.TypeTlsBlock[];
  }> {
    blocks: Api.TypeTlsBlock[];
  };
  export class TlsBlockString extends VirtualClass<{
    data: string;
  }> {
    data: string;
  };
  export class TlsBlockRandom extends VirtualClass<{
    length: int;
  }> {
    length: int;
  };
  export class TlsBlockZero extends VirtualClass<{
    length: int;
  }> {
    length: int;
  };
  export class TlsBlockDomain extends VirtualClass<void> {};
  export class TlsBlockGrease extends VirtualClass<{
    seed: int;
  }> {
    seed: int;
  };
  export class TlsBlockScope extends VirtualClass<{
    entries: Api.TypeTlsBlock[];
  }> {
    entries: Api.TypeTlsBlock[];
  };
  

  export namespace storage {
    export class FileUnknown extends VirtualClass<void> {};
    export class FilePartial extends VirtualClass<void> {};
    export class FileJpeg extends VirtualClass<void> {};
    export class FileGif extends VirtualClass<void> {};
    export class FilePng extends VirtualClass<void> {};
    export class FilePdf extends VirtualClass<void> {};
    export class FileMp3 extends VirtualClass<void> {};
    export class FileMov extends VirtualClass<void> {};
    export class FileMp4 extends VirtualClass<void> {};
    export class FileWebp extends VirtualClass<void> {};
  }

  export namespace auth {
    export class SentCode extends VirtualClass<{
      // flags: undefined;
      type: auth.TypeSentCodeType;
      phoneCodeHash: string;
      nextType?: auth.TypeCodeType;
      timeout?: int;
    }> {
      // flags: undefined;
      type: auth.TypeSentCodeType;
      phoneCodeHash: string;
      nextType?: auth.TypeCodeType;
      timeout?: int;
    };
    export class Authorization extends VirtualClass<{
      // flags: undefined;
      tmpSessions?: int;
      user: Api.TypeUser;
    }> {
      // flags: undefined;
      tmpSessions?: int;
      user: Api.TypeUser;
    };
    export class AuthorizationSignUpRequired extends VirtualClass<{
      // flags: undefined;
      termsOfService?: help.TypeTermsOfService;
    } | void> {
      // flags: undefined;
      termsOfService?: help.TypeTermsOfService;
    };
    export class ExportedAuthorization extends VirtualClass<{
      id: int;
      bytes: bytes;
    }> {
      id: int;
      bytes: bytes;
    };
    export class PasswordRecovery extends VirtualClass<{
      emailPattern: string;
    }> {
      emailPattern: string;
    };
    export class CodeTypeSms extends VirtualClass<void> {};
    export class CodeTypeCall extends VirtualClass<void> {};
    export class CodeTypeFlashCall extends VirtualClass<void> {};
    export class SentCodeTypeApp extends VirtualClass<{
      length: int;
    }> {
      length: int;
    };
    export class SentCodeTypeSms extends VirtualClass<{
      length: int;
    }> {
      length: int;
    };
    export class SentCodeTypeCall extends VirtualClass<{
      length: int;
    }> {
      length: int;
    };
    export class SentCodeTypeFlashCall extends VirtualClass<{
      pattern: string;
    }> {
      pattern: string;
    };
    export class LoginToken extends VirtualClass<{
      expires: int;
      token: bytes;
    }> {
      expires: int;
      token: bytes;
    };
    export class LoginTokenMigrateTo extends VirtualClass<{
      dcId: int;
      token: bytes;
    }> {
      dcId: int;
      token: bytes;
    };
    export class LoginTokenSuccess extends VirtualClass<{
      authorization: auth.TypeAuthorization;
    }> {
      authorization: auth.TypeAuthorization;
    };
  }

  export namespace contacts {
    export class ContactsNotModified extends VirtualClass<void> {};
    export class Contacts extends VirtualClass<{
      contacts: Api.TypeContact[];
      savedCount: int;
      users: Api.TypeUser[];
    }> {
      contacts: Api.TypeContact[];
      savedCount: int;
      users: Api.TypeUser[];
    };
    export class ImportedContacts extends VirtualClass<{
      imported: Api.TypeImportedContact[];
      popularInvites: Api.TypePopularContact[];
      retryContacts: long[];
      users: Api.TypeUser[];
    }> {
      imported: Api.TypeImportedContact[];
      popularInvites: Api.TypePopularContact[];
      retryContacts: long[];
      users: Api.TypeUser[];
    };
    export class Blocked extends VirtualClass<{
      blocked: Api.TypePeerBlocked[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    }> {
      blocked: Api.TypePeerBlocked[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    };
    export class BlockedSlice extends VirtualClass<{
      count: int;
      blocked: Api.TypePeerBlocked[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    }> {
      count: int;
      blocked: Api.TypePeerBlocked[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    };
    export class Found extends VirtualClass<{
      myResults: Api.TypePeer[];
      results: Api.TypePeer[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    }> {
      myResults: Api.TypePeer[];
      results: Api.TypePeer[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    };
    export class ResolvedPeer extends VirtualClass<{
      peer: Api.TypePeer;
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    }> {
      peer: Api.TypePeer;
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    };
    export class TopPeersNotModified extends VirtualClass<void> {};
    export class TopPeers extends VirtualClass<{
      categories: Api.TypeTopPeerCategoryPeers[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    }> {
      categories: Api.TypeTopPeerCategoryPeers[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    };
    export class TopPeersDisabled extends VirtualClass<void> {};
  }

  export namespace messages {
    export class Dialogs extends VirtualClass<{
      dialogs: Api.TypeDialog[];
      messages: Api.TypeMessage[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    }> {
      dialogs: Api.TypeDialog[];
      messages: Api.TypeMessage[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    };
    export class DialogsSlice extends VirtualClass<{
      count: int;
      dialogs: Api.TypeDialog[];
      messages: Api.TypeMessage[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    }> {
      count: int;
      dialogs: Api.TypeDialog[];
      messages: Api.TypeMessage[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    };
    export class DialogsNotModified extends VirtualClass<{
      count: int;
    }> {
      count: int;
    };
    export class Messages extends VirtualClass<{
      messages: Api.TypeMessage[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    }> {
      messages: Api.TypeMessage[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    };
    export class MessagesSlice extends VirtualClass<{
      // flags: undefined;
      inexact?: true;
      count: int;
      nextRate?: int;
      offsetIdOffset?: int;
      messages: Api.TypeMessage[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    }> {
      // flags: undefined;
      inexact?: true;
      count: int;
      nextRate?: int;
      offsetIdOffset?: int;
      messages: Api.TypeMessage[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    };
    export class ChannelMessages extends VirtualClass<{
      // flags: undefined;
      inexact?: true;
      pts: int;
      count: int;
      offsetIdOffset?: int;
      messages: Api.TypeMessage[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    }> {
      // flags: undefined;
      inexact?: true;
      pts: int;
      count: int;
      offsetIdOffset?: int;
      messages: Api.TypeMessage[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    };
    export class MessagesNotModified extends VirtualClass<{
      count: int;
    }> {
      count: int;
    };
    export class Chats extends VirtualClass<{
      chats: Api.TypeChat[];
    }> {
      chats: Api.TypeChat[];
    };
    export class ChatsSlice extends VirtualClass<{
      count: int;
      chats: Api.TypeChat[];
    }> {
      count: int;
      chats: Api.TypeChat[];
    };
    export class ChatFull extends VirtualClass<{
      fullChat: Api.TypeChatFull;
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    }> {
      fullChat: Api.TypeChatFull;
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    };
    export class AffectedHistory extends VirtualClass<{
      pts: int;
      ptsCount: int;
      offset: int;
    }> {
      pts: int;
      ptsCount: int;
      offset: int;
    };
    export class DhConfigNotModified extends VirtualClass<{
      random: bytes;
    }> {
      random: bytes;
    };
    export class DhConfig extends VirtualClass<{
      g: int;
      p: bytes;
      version: int;
      random: bytes;
    }> {
      g: int;
      p: bytes;
      version: int;
      random: bytes;
    };
    export class SentEncryptedMessage extends VirtualClass<{
      date: int;
    }> {
      date: int;
    };
    export class SentEncryptedFile extends VirtualClass<{
      date: int;
      file: Api.TypeEncryptedFile;
    }> {
      date: int;
      file: Api.TypeEncryptedFile;
    };
    export class StickersNotModified extends VirtualClass<void> {};
    export class Stickers extends VirtualClass<{
      hash: int;
      stickers: Api.TypeDocument[];
    }> {
      hash: int;
      stickers: Api.TypeDocument[];
    };
    export class AllStickersNotModified extends VirtualClass<void> {};
    export class AllStickers extends VirtualClass<{
      hash: int;
      sets: Api.TypeStickerSet[];
    }> {
      hash: int;
      sets: Api.TypeStickerSet[];
    };
    export class AffectedMessages extends VirtualClass<{
      pts: int;
      ptsCount: int;
    }> {
      pts: int;
      ptsCount: int;
    };
    export class StickerSet extends VirtualClass<{
      set: Api.TypeStickerSet;
      packs: Api.TypeStickerPack[];
      documents: Api.TypeDocument[];
    }> {
      set: Api.TypeStickerSet;
      packs: Api.TypeStickerPack[];
      documents: Api.TypeDocument[];
    };
    export class SavedGifsNotModified extends VirtualClass<void> {};
    export class SavedGifs extends VirtualClass<{
      hash: int;
      gifs: Api.TypeDocument[];
    }> {
      hash: int;
      gifs: Api.TypeDocument[];
    };
    export class BotResults extends VirtualClass<{
      // flags: undefined;
      gallery?: true;
      queryId: long;
      nextOffset?: string;
      switchPm?: Api.TypeInlineBotSwitchPM;
      results: Api.TypeBotInlineResult[];
      cacheTime: int;
      users: Api.TypeUser[];
    }> {
      // flags: undefined;
      gallery?: true;
      queryId: long;
      nextOffset?: string;
      switchPm?: Api.TypeInlineBotSwitchPM;
      results: Api.TypeBotInlineResult[];
      cacheTime: int;
      users: Api.TypeUser[];
    };
    export class BotCallbackAnswer extends VirtualClass<{
      // flags: undefined;
      alert?: true;
      hasUrl?: true;
      nativeUi?: true;
      message?: string;
      url?: string;
      cacheTime: int;
    }> {
      // flags: undefined;
      alert?: true;
      hasUrl?: true;
      nativeUi?: true;
      message?: string;
      url?: string;
      cacheTime: int;
    };
    export class MessageEditData extends VirtualClass<{
      // flags: undefined;
      caption?: true;
    } | void> {
      // flags: undefined;
      caption?: true;
    };
    export class PeerDialogs extends VirtualClass<{
      dialogs: Api.TypeDialog[];
      messages: Api.TypeMessage[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
      state: updates.TypeState;
    }> {
      dialogs: Api.TypeDialog[];
      messages: Api.TypeMessage[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
      state: updates.TypeState;
    };
    export class FeaturedStickersNotModified extends VirtualClass<{
      count: int;
    }> {
      count: int;
    };
    export class FeaturedStickers extends VirtualClass<{
      hash: int;
      count: int;
      sets: Api.TypeStickerSetCovered[];
      unread: long[];
    }> {
      hash: int;
      count: int;
      sets: Api.TypeStickerSetCovered[];
      unread: long[];
    };
    export class RecentStickersNotModified extends VirtualClass<void> {};
    export class RecentStickers extends VirtualClass<{
      hash: int;
      packs: Api.TypeStickerPack[];
      stickers: Api.TypeDocument[];
      dates: int[];
    }> {
      hash: int;
      packs: Api.TypeStickerPack[];
      stickers: Api.TypeDocument[];
      dates: int[];
    };
    export class ArchivedStickers extends VirtualClass<{
      count: int;
      sets: Api.TypeStickerSetCovered[];
    }> {
      count: int;
      sets: Api.TypeStickerSetCovered[];
    };
    export class StickerSetInstallResultSuccess extends VirtualClass<void> {};
    export class StickerSetInstallResultArchive extends VirtualClass<{
      sets: Api.TypeStickerSetCovered[];
    }> {
      sets: Api.TypeStickerSetCovered[];
    };
    export class HighScores extends VirtualClass<{
      scores: Api.TypeHighScore[];
      users: Api.TypeUser[];
    }> {
      scores: Api.TypeHighScore[];
      users: Api.TypeUser[];
    };
    export class FavedStickersNotModified extends VirtualClass<void> {};
    export class FavedStickers extends VirtualClass<{
      hash: int;
      packs: Api.TypeStickerPack[];
      stickers: Api.TypeDocument[];
    }> {
      hash: int;
      packs: Api.TypeStickerPack[];
      stickers: Api.TypeDocument[];
    };
    export class FoundStickerSetsNotModified extends VirtualClass<void> {};
    export class FoundStickerSets extends VirtualClass<{
      hash: int;
      sets: Api.TypeStickerSetCovered[];
    }> {
      hash: int;
      sets: Api.TypeStickerSetCovered[];
    };
    export class SearchCounter extends VirtualClass<{
      // flags: undefined;
      inexact?: true;
      filter: Api.TypeMessagesFilter;
      count: int;
    }> {
      // flags: undefined;
      inexact?: true;
      filter: Api.TypeMessagesFilter;
      count: int;
    };
    export class InactiveChats extends VirtualClass<{
      dates: int[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    }> {
      dates: int[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    };
    export class VotesList extends VirtualClass<{
      // flags: undefined;
      count: int;
      votes: Api.TypeMessageUserVote[];
      users: Api.TypeUser[];
      nextOffset?: string;
    }> {
      // flags: undefined;
      count: int;
      votes: Api.TypeMessageUserVote[];
      users: Api.TypeUser[];
      nextOffset?: string;
    };
    export class MessageViews extends VirtualClass<{
      views: Api.TypeMessageViews[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    }> {
      views: Api.TypeMessageViews[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    };
    export class DiscussionMessage extends VirtualClass<{
      // flags: undefined;
      messages: Api.TypeMessage[];
      maxId?: int;
      readInboxMaxId?: int;
      readOutboxMaxId?: int;
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    }> {
      // flags: undefined;
      messages: Api.TypeMessage[];
      maxId?: int;
      readInboxMaxId?: int;
      readOutboxMaxId?: int;
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    };
    export class HistoryImport extends VirtualClass<{
      id: long;
    }> {
      id: long;
    };
    export class HistoryImportParsed extends VirtualClass<{
      // flags: undefined;
      pm?: true;
      group?: true;
      title?: string;
    } | void> {
      // flags: undefined;
      pm?: true;
      group?: true;
      title?: string;
    };
    export class AffectedFoundMessages extends VirtualClass<{
      pts: int;
      ptsCount: int;
      offset: int;
      messages: int[];
    }> {
      pts: int;
      ptsCount: int;
      offset: int;
      messages: int[];
    };
    export class ExportedChatInvites extends VirtualClass<{
      count: int;
      invites: Api.TypeExportedChatInvite[];
      users: Api.TypeUser[];
    }> {
      count: int;
      invites: Api.TypeExportedChatInvite[];
      users: Api.TypeUser[];
    };
    export class ExportedChatInvite extends VirtualClass<{
      invite: Api.TypeExportedChatInvite;
      users: Api.TypeUser[];
    }> {
      invite: Api.TypeExportedChatInvite;
      users: Api.TypeUser[];
    };
    export class ExportedChatInviteReplaced extends VirtualClass<{
      invite: Api.TypeExportedChatInvite;
      newInvite: Api.TypeExportedChatInvite;
      users: Api.TypeUser[];
    }> {
      invite: Api.TypeExportedChatInvite;
      newInvite: Api.TypeExportedChatInvite;
      users: Api.TypeUser[];
    };
    export class ChatInviteImporters extends VirtualClass<{
      count: int;
      importers: Api.TypeChatInviteImporter[];
      users: Api.TypeUser[];
    }> {
      count: int;
      importers: Api.TypeChatInviteImporter[];
      users: Api.TypeUser[];
    };
    export class ChatAdminsWithInvites extends VirtualClass<{
      admins: Api.TypeChatAdminWithInvites[];
      users: Api.TypeUser[];
    }> {
      admins: Api.TypeChatAdminWithInvites[];
      users: Api.TypeUser[];
    };
    export class CheckedHistoryImportPeer extends VirtualClass<{
      confirmText: string;
    }> {
      confirmText: string;
    };
  }

  export namespace updates {
    export class State extends VirtualClass<{
      pts: int;
      qts: int;
      date: int;
      seq: int;
      unreadCount: int;
    }> {
      pts: int;
      qts: int;
      date: int;
      seq: int;
      unreadCount: int;
    };
    export class DifferenceEmpty extends VirtualClass<{
      date: int;
      seq: int;
    }> {
      date: int;
      seq: int;
    };
    export class Difference extends VirtualClass<{
      newMessages: Api.TypeMessage[];
      newEncryptedMessages: Api.TypeEncryptedMessage[];
      otherUpdates: Api.TypeUpdate[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
      state: updates.TypeState;
    }> {
      newMessages: Api.TypeMessage[];
      newEncryptedMessages: Api.TypeEncryptedMessage[];
      otherUpdates: Api.TypeUpdate[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
      state: updates.TypeState;
    };
    export class DifferenceSlice extends VirtualClass<{
      newMessages: Api.TypeMessage[];
      newEncryptedMessages: Api.TypeEncryptedMessage[];
      otherUpdates: Api.TypeUpdate[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
      intermediateState: updates.TypeState;
    }> {
      newMessages: Api.TypeMessage[];
      newEncryptedMessages: Api.TypeEncryptedMessage[];
      otherUpdates: Api.TypeUpdate[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
      intermediateState: updates.TypeState;
    };
    export class DifferenceTooLong extends VirtualClass<{
      pts: int;
    }> {
      pts: int;
    };
    export class ChannelDifferenceEmpty extends VirtualClass<{
      // flags: undefined;
      final?: true;
      pts: int;
      timeout?: int;
    }> {
      // flags: undefined;
      final?: true;
      pts: int;
      timeout?: int;
    };
    export class ChannelDifferenceTooLong extends VirtualClass<{
      // flags: undefined;
      final?: true;
      timeout?: int;
      dialog: Api.TypeDialog;
      messages: Api.TypeMessage[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    }> {
      // flags: undefined;
      final?: true;
      timeout?: int;
      dialog: Api.TypeDialog;
      messages: Api.TypeMessage[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    };
    export class ChannelDifference extends VirtualClass<{
      // flags: undefined;
      final?: true;
      pts: int;
      timeout?: int;
      newMessages: Api.TypeMessage[];
      otherUpdates: Api.TypeUpdate[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    }> {
      // flags: undefined;
      final?: true;
      pts: int;
      timeout?: int;
      newMessages: Api.TypeMessage[];
      otherUpdates: Api.TypeUpdate[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    };
  }

  export namespace photos {
    export class Photos extends VirtualClass<{
      photos: Api.TypePhoto[];
      users: Api.TypeUser[];
    }> {
      photos: Api.TypePhoto[];
      users: Api.TypeUser[];
    };
    export class PhotosSlice extends VirtualClass<{
      count: int;
      photos: Api.TypePhoto[];
      users: Api.TypeUser[];
    }> {
      count: int;
      photos: Api.TypePhoto[];
      users: Api.TypeUser[];
    };
    export class Photo extends VirtualClass<{
      photo: Api.TypePhoto;
      users: Api.TypeUser[];
    }> {
      photo: Api.TypePhoto;
      users: Api.TypeUser[];
    };
  }

  export namespace upload {
    export class File extends VirtualClass<{
      type: storage.TypeFileType;
      mtime: int;
      bytes: bytes;
    }> {
      type: storage.TypeFileType;
      mtime: int;
      bytes: bytes;
    };
    export class FileCdnRedirect extends VirtualClass<{
      dcId: int;
      fileToken: bytes;
      encryptionKey: bytes;
      encryptionIv: bytes;
      fileHashes: Api.TypeFileHash[];
    }> {
      dcId: int;
      fileToken: bytes;
      encryptionKey: bytes;
      encryptionIv: bytes;
      fileHashes: Api.TypeFileHash[];
    };
    export class WebFile extends VirtualClass<{
      size: int;
      mimeType: string;
      fileType: storage.TypeFileType;
      mtime: int;
      bytes: bytes;
    }> {
      size: int;
      mimeType: string;
      fileType: storage.TypeFileType;
      mtime: int;
      bytes: bytes;
    };
    export class CdnFileReuploadNeeded extends VirtualClass<{
      requestToken: bytes;
    }> {
      requestToken: bytes;
    };
    export class CdnFile extends VirtualClass<{
      bytes: bytes;
    }> {
      bytes: bytes;
    };
  }

  export namespace help {
    export class AppUpdate extends VirtualClass<{
      // flags: undefined;
      canNotSkip?: true;
      id: int;
      version: string;
      text: string;
      entities: Api.TypeMessageEntity[];
      document?: Api.TypeDocument;
      url?: string;
    }> {
      // flags: undefined;
      canNotSkip?: true;
      id: int;
      version: string;
      text: string;
      entities: Api.TypeMessageEntity[];
      document?: Api.TypeDocument;
      url?: string;
    };
    export class NoAppUpdate extends VirtualClass<void> {};
    export class InviteText extends VirtualClass<{
      message: string;
    }> {
      message: string;
    };
    export class Support extends VirtualClass<{
      phoneNumber: string;
      user: Api.TypeUser;
    }> {
      phoneNumber: string;
      user: Api.TypeUser;
    };
    export class TermsOfService extends VirtualClass<{
      // flags: undefined;
      popup?: true;
      id: Api.TypeDataJSON;
      text: string;
      entities: Api.TypeMessageEntity[];
      minAgeConfirm?: int;
    }> {
      // flags: undefined;
      popup?: true;
      id: Api.TypeDataJSON;
      text: string;
      entities: Api.TypeMessageEntity[];
      minAgeConfirm?: int;
    };
    export class RecentMeUrls extends VirtualClass<{
      urls: Api.TypeRecentMeUrl[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    }> {
      urls: Api.TypeRecentMeUrl[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    };
    export class TermsOfServiceUpdateEmpty extends VirtualClass<{
      expires: int;
    }> {
      expires: int;
    };
    export class TermsOfServiceUpdate extends VirtualClass<{
      expires: int;
      termsOfService: help.TypeTermsOfService;
    }> {
      expires: int;
      termsOfService: help.TypeTermsOfService;
    };
    export class DeepLinkInfoEmpty extends VirtualClass<void> {};
    export class DeepLinkInfo extends VirtualClass<{
      // flags: undefined;
      updateApp?: true;
      message: string;
      entities?: Api.TypeMessageEntity[];
    }> {
      // flags: undefined;
      updateApp?: true;
      message: string;
      entities?: Api.TypeMessageEntity[];
    };
    export class PassportConfigNotModified extends VirtualClass<void> {};
    export class PassportConfig extends VirtualClass<{
      hash: int;
      countriesLangs: Api.TypeDataJSON;
    }> {
      hash: int;
      countriesLangs: Api.TypeDataJSON;
    };
    export class SupportName extends VirtualClass<{
      name: string;
    }> {
      name: string;
    };
    export class UserInfoEmpty extends VirtualClass<void> {};
    export class UserInfo extends VirtualClass<{
      message: string;
      entities: Api.TypeMessageEntity[];
      author: string;
      date: int;
    }> {
      message: string;
      entities: Api.TypeMessageEntity[];
      author: string;
      date: int;
    };
    export class PromoDataEmpty extends VirtualClass<{
      expires: int;
    }> {
      expires: int;
    };
    export class PromoData extends VirtualClass<{
      // flags: undefined;
      proxy?: true;
      expires: int;
      peer: Api.TypePeer;
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
      psaType?: string;
      psaMessage?: string;
    }> {
      // flags: undefined;
      proxy?: true;
      expires: int;
      peer: Api.TypePeer;
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
      psaType?: string;
      psaMessage?: string;
    };
    export class CountryCode extends VirtualClass<{
      // flags: undefined;
      countryCode: string;
      prefixes?: string[];
      patterns?: string[];
    }> {
      // flags: undefined;
      countryCode: string;
      prefixes?: string[];
      patterns?: string[];
    };
    export class Country extends VirtualClass<{
      // flags: undefined;
      hidden?: true;
      iso2: string;
      defaultName: string;
      name?: string;
      countryCodes: help.TypeCountryCode[];
    }> {
      // flags: undefined;
      hidden?: true;
      iso2: string;
      defaultName: string;
      name?: string;
      countryCodes: help.TypeCountryCode[];
    };
    export class CountriesListNotModified extends VirtualClass<void> {};
    export class CountriesList extends VirtualClass<{
      countries: help.TypeCountry[];
      hash: int;
    }> {
      countries: help.TypeCountry[];
      hash: int;
    };
    export class ConfigSimple extends VirtualClass<{
      date: int;
      expires: int;
      rules: Api.TypeAccessPointRule[];
    }> {
      date: int;
      expires: int;
      rules: Api.TypeAccessPointRule[];
    };
  }

  export namespace account {
    export class PrivacyRules extends VirtualClass<{
      rules: Api.TypePrivacyRule[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    }> {
      rules: Api.TypePrivacyRule[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    };
    export class Authorizations extends VirtualClass<{
      authorizations: Api.TypeAuthorization[];
    }> {
      authorizations: Api.TypeAuthorization[];
    };
    export class Password extends VirtualClass<{
      // flags: undefined;
      hasRecovery?: true;
      hasSecureValues?: true;
      hasPassword?: true;
      currentAlgo?: Api.TypePasswordKdfAlgo;
      srp_B?: bytes;
      srpId?: long;
      hint?: string;
      emailUnconfirmedPattern?: string;
      newAlgo: Api.TypePasswordKdfAlgo;
      newSecureAlgo: Api.TypeSecurePasswordKdfAlgo;
      secureRandom: bytes;
    }> {
      // flags: undefined;
      hasRecovery?: true;
      hasSecureValues?: true;
      hasPassword?: true;
      currentAlgo?: Api.TypePasswordKdfAlgo;
      srp_B?: bytes;
      srpId?: long;
      hint?: string;
      emailUnconfirmedPattern?: string;
      newAlgo: Api.TypePasswordKdfAlgo;
      newSecureAlgo: Api.TypeSecurePasswordKdfAlgo;
      secureRandom: bytes;
    };
    export class PasswordSettings extends VirtualClass<{
      // flags: undefined;
      email?: string;
      secureSettings?: Api.TypeSecureSecretSettings;
    } | void> {
      // flags: undefined;
      email?: string;
      secureSettings?: Api.TypeSecureSecretSettings;
    };
    export class PasswordInputSettings extends VirtualClass<{
      // flags: undefined;
      newAlgo?: Api.TypePasswordKdfAlgo;
      newPasswordHash?: bytes;
      hint?: string;
      email?: string;
      newSecureSettings?: Api.TypeSecureSecretSettings;
    } | void> {
      // flags: undefined;
      newAlgo?: Api.TypePasswordKdfAlgo;
      newPasswordHash?: bytes;
      hint?: string;
      email?: string;
      newSecureSettings?: Api.TypeSecureSecretSettings;
    };
    export class TmpPassword extends VirtualClass<{
      tmpPassword: bytes;
      validUntil: int;
    }> {
      tmpPassword: bytes;
      validUntil: int;
    };
    export class WebAuthorizations extends VirtualClass<{
      authorizations: Api.TypeWebAuthorization[];
      users: Api.TypeUser[];
    }> {
      authorizations: Api.TypeWebAuthorization[];
      users: Api.TypeUser[];
    };
    export class AuthorizationForm extends VirtualClass<{
      // flags: undefined;
      requiredTypes: Api.TypeSecureRequiredType[];
      values: Api.TypeSecureValue[];
      errors: Api.TypeSecureValueError[];
      users: Api.TypeUser[];
      privacyPolicyUrl?: string;
    }> {
      // flags: undefined;
      requiredTypes: Api.TypeSecureRequiredType[];
      values: Api.TypeSecureValue[];
      errors: Api.TypeSecureValueError[];
      users: Api.TypeUser[];
      privacyPolicyUrl?: string;
    };
    export class SentEmailCode extends VirtualClass<{
      emailPattern: string;
      length: int;
    }> {
      emailPattern: string;
      length: int;
    };
    export class Takeout extends VirtualClass<{
      id: long;
    }> {
      id: long;
    };
    export class WallPapersNotModified extends VirtualClass<void> {};
    export class WallPapers extends VirtualClass<{
      hash: int;
      wallpapers: Api.TypeWallPaper[];
    }> {
      hash: int;
      wallpapers: Api.TypeWallPaper[];
    };
    export class AutoDownloadSettings extends VirtualClass<{
      low: Api.TypeAutoDownloadSettings;
      medium: Api.TypeAutoDownloadSettings;
      high: Api.TypeAutoDownloadSettings;
    }> {
      low: Api.TypeAutoDownloadSettings;
      medium: Api.TypeAutoDownloadSettings;
      high: Api.TypeAutoDownloadSettings;
    };
    export class ThemesNotModified extends VirtualClass<void> {};
    export class Themes extends VirtualClass<{
      hash: int;
      themes: Api.TypeTheme[];
    }> {
      hash: int;
      themes: Api.TypeTheme[];
    };
    export class ContentSettings extends VirtualClass<{
      // flags: undefined;
      sensitiveEnabled?: true;
      sensitiveCanChange?: true;
    } | void> {
      // flags: undefined;
      sensitiveEnabled?: true;
      sensitiveCanChange?: true;
    };
  }

  export namespace channels {
    export class ChannelParticipants extends VirtualClass<{
      count: int;
      participants: Api.TypeChannelParticipant[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    }> {
      count: int;
      participants: Api.TypeChannelParticipant[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    };
    export class ChannelParticipantsNotModified extends VirtualClass<void> {};
    export class ChannelParticipant extends VirtualClass<{
      participant: Api.TypeChannelParticipant;
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    }> {
      participant: Api.TypeChannelParticipant;
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    };
    export class AdminLogResults extends VirtualClass<{
      events: Api.TypeChannelAdminLogEvent[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    }> {
      events: Api.TypeChannelAdminLogEvent[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    };
  }

  export namespace payments {
    export class PaymentForm extends VirtualClass<{
      // flags: undefined;
      canSaveCredentials?: true;
      passwordMissing?: true;
      formId: long;
      botId: int;
      invoice: Api.TypeInvoice;
      providerId: int;
      url: string;
      nativeProvider?: string;
      nativeParams?: Api.TypeDataJSON;
      savedInfo?: Api.TypePaymentRequestedInfo;
      savedCredentials?: Api.TypePaymentSavedCredentials;
      users: Api.TypeUser[];
    }> {
      // flags: undefined;
      canSaveCredentials?: true;
      passwordMissing?: true;
      formId: long;
      botId: int;
      invoice: Api.TypeInvoice;
      providerId: int;
      url: string;
      nativeProvider?: string;
      nativeParams?: Api.TypeDataJSON;
      savedInfo?: Api.TypePaymentRequestedInfo;
      savedCredentials?: Api.TypePaymentSavedCredentials;
      users: Api.TypeUser[];
    };
    export class ValidatedRequestedInfo extends VirtualClass<{
      // flags: undefined;
      id?: string;
      shippingOptions?: Api.TypeShippingOption[];
    } | void> {
      // flags: undefined;
      id?: string;
      shippingOptions?: Api.TypeShippingOption[];
    };
    export class PaymentResult extends VirtualClass<{
      updates: Api.TypeUpdates;
    }> {
      updates: Api.TypeUpdates;
    };
    export class PaymentVerificationNeeded extends VirtualClass<{
      url: string;
    }> {
      url: string;
    };
    export class PaymentReceipt extends VirtualClass<{
      // flags: undefined;
      date: int;
      botId: int;
      providerId: int;
      title: string;
      description: string;
      photo?: Api.TypeWebDocument;
      invoice: Api.TypeInvoice;
      info?: Api.TypePaymentRequestedInfo;
      shipping?: Api.TypeShippingOption;
      tipAmount?: long;
      currency: string;
      totalAmount: long;
      credentialsTitle: string;
      users: Api.TypeUser[];
    }> {
      // flags: undefined;
      date: int;
      botId: int;
      providerId: int;
      title: string;
      description: string;
      photo?: Api.TypeWebDocument;
      invoice: Api.TypeInvoice;
      info?: Api.TypePaymentRequestedInfo;
      shipping?: Api.TypeShippingOption;
      tipAmount?: long;
      currency: string;
      totalAmount: long;
      credentialsTitle: string;
      users: Api.TypeUser[];
    };
    export class SavedInfo extends VirtualClass<{
      // flags: undefined;
      hasSavedCredentials?: true;
      savedInfo?: Api.TypePaymentRequestedInfo;
    } | void> {
      // flags: undefined;
      hasSavedCredentials?: true;
      savedInfo?: Api.TypePaymentRequestedInfo;
    };
    export class BankCardData extends VirtualClass<{
      title: string;
      openUrls: Api.TypeBankCardOpenUrl[];
    }> {
      title: string;
      openUrls: Api.TypeBankCardOpenUrl[];
    };
  }

  export namespace phone {
    export class PhoneCall extends VirtualClass<{
      phoneCall: Api.TypePhoneCall;
      users: Api.TypeUser[];
    }> {
      phoneCall: Api.TypePhoneCall;
      users: Api.TypeUser[];
    };
    export class GroupCall extends VirtualClass<{
      call: Api.TypeGroupCall;
      participants: Api.TypeGroupCallParticipant[];
      participantsNextOffset: string;
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    }> {
      call: Api.TypeGroupCall;
      participants: Api.TypeGroupCallParticipant[];
      participantsNextOffset: string;
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    };
    export class GroupParticipants extends VirtualClass<{
      count: int;
      participants: Api.TypeGroupCallParticipant[];
      nextOffset: string;
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
      version: int;
    }> {
      count: int;
      participants: Api.TypeGroupCallParticipant[];
      nextOffset: string;
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
      version: int;
    };
    export class JoinAsPeers extends VirtualClass<{
      peers: Api.TypePeer[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    }> {
      peers: Api.TypePeer[];
      chats: Api.TypeChat[];
      users: Api.TypeUser[];
    };
    export class ExportedGroupCallInvite extends VirtualClass<{
      link: string;
    }> {
      link: string;
    };
  }

  export namespace stats {
    export class BroadcastStats extends VirtualClass<{
      period: Api.TypeStatsDateRangeDays;
      followers: Api.TypeStatsAbsValueAndPrev;
      viewsPerPost: Api.TypeStatsAbsValueAndPrev;
      sharesPerPost: Api.TypeStatsAbsValueAndPrev;
      enabledNotifications: Api.TypeStatsPercentValue;
      growthGraph: Api.TypeStatsGraph;
      followersGraph: Api.TypeStatsGraph;
      muteGraph: Api.TypeStatsGraph;
      topHoursGraph: Api.TypeStatsGraph;
      interactionsGraph: Api.TypeStatsGraph;
      ivInteractionsGraph: Api.TypeStatsGraph;
      viewsBySourceGraph: Api.TypeStatsGraph;
      newFollowersBySourceGraph: Api.TypeStatsGraph;
      languagesGraph: Api.TypeStatsGraph;
      recentMessageInteractions: Api.TypeMessageInteractionCounters[];
    }> {
      period: Api.TypeStatsDateRangeDays;
      followers: Api.TypeStatsAbsValueAndPrev;
      viewsPerPost: Api.TypeStatsAbsValueAndPrev;
      sharesPerPost: Api.TypeStatsAbsValueAndPrev;
      enabledNotifications: Api.TypeStatsPercentValue;
      growthGraph: Api.TypeStatsGraph;
      followersGraph: Api.TypeStatsGraph;
      muteGraph: Api.TypeStatsGraph;
      topHoursGraph: Api.TypeStatsGraph;
      interactionsGraph: Api.TypeStatsGraph;
      ivInteractionsGraph: Api.TypeStatsGraph;
      viewsBySourceGraph: Api.TypeStatsGraph;
      newFollowersBySourceGraph: Api.TypeStatsGraph;
      languagesGraph: Api.TypeStatsGraph;
      recentMessageInteractions: Api.TypeMessageInteractionCounters[];
    };
    export class MegagroupStats extends VirtualClass<{
      period: Api.TypeStatsDateRangeDays;
      members: Api.TypeStatsAbsValueAndPrev;
      messages: Api.TypeStatsAbsValueAndPrev;
      viewers: Api.TypeStatsAbsValueAndPrev;
      posters: Api.TypeStatsAbsValueAndPrev;
      growthGraph: Api.TypeStatsGraph;
      membersGraph: Api.TypeStatsGraph;
      newMembersBySourceGraph: Api.TypeStatsGraph;
      languagesGraph: Api.TypeStatsGraph;
      messagesGraph: Api.TypeStatsGraph;
      actionsGraph: Api.TypeStatsGraph;
      topHoursGraph: Api.TypeStatsGraph;
      weekdaysGraph: Api.TypeStatsGraph;
      topPosters: Api.TypeStatsGroupTopPoster[];
      topAdmins: Api.TypeStatsGroupTopAdmin[];
      topInviters: Api.TypeStatsGroupTopInviter[];
      users: Api.TypeUser[];
    }> {
      period: Api.TypeStatsDateRangeDays;
      members: Api.TypeStatsAbsValueAndPrev;
      messages: Api.TypeStatsAbsValueAndPrev;
      viewers: Api.TypeStatsAbsValueAndPrev;
      posters: Api.TypeStatsAbsValueAndPrev;
      growthGraph: Api.TypeStatsGraph;
      membersGraph: Api.TypeStatsGraph;
      newMembersBySourceGraph: Api.TypeStatsGraph;
      languagesGraph: Api.TypeStatsGraph;
      messagesGraph: Api.TypeStatsGraph;
      actionsGraph: Api.TypeStatsGraph;
      topHoursGraph: Api.TypeStatsGraph;
      weekdaysGraph: Api.TypeStatsGraph;
      topPosters: Api.TypeStatsGroupTopPoster[];
      topAdmins: Api.TypeStatsGroupTopAdmin[];
      topInviters: Api.TypeStatsGroupTopInviter[];
      users: Api.TypeUser[];
    };
    export class MessageStats extends VirtualClass<{
      viewsGraph: Api.TypeStatsGraph;
    }> {
      viewsGraph: Api.TypeStatsGraph;
    };
  }

  export class InvokeAfterMsg extends Request<Partial<{
    msgId: long;
    query: X;
  }>, X> {
    msgId: long;
    query: X;
  };
  export class InvokeAfterMsgs extends Request<Partial<{
    msgIds: long[];
    query: X;
  }>, X> {
    msgIds: long[];
    query: X;
  };
  export class InitConnection extends Request<Partial<{
    // flags: undefined;
    apiId: int;
    deviceModel: string;
    systemVersion: string;
    appVersion: string;
    systemLangCode: string;
    langPack: string;
    langCode: string;
    proxy?: Api.TypeInputClientProxy;
    params?: Api.TypeJSONValue;
    query: X;
  }>, X> {
    // flags: undefined;
    apiId: int;
    deviceModel: string;
    systemVersion: string;
    appVersion: string;
    systemLangCode: string;
    langPack: string;
    langCode: string;
    proxy?: Api.TypeInputClientProxy;
    params?: Api.TypeJSONValue;
    query: X;
  };
  export class InvokeWithLayer extends Request<Partial<{
    layer: int;
    query: X;
  }>, X> {
    layer: int;
    query: X;
  };
  export class InvokeWithoutUpdates extends Request<Partial<{
    query: X;
  }>, X> {
    query: X;
  };
  export class InvokeWithMessagesRange extends Request<Partial<{
    range: Api.TypeMessageRange;
    query: X;
  }>, X> {
    range: Api.TypeMessageRange;
    query: X;
  };
  export class InvokeWithTakeout extends Request<Partial<{
    takeoutId: long;
    query: X;
  }>, X> {
    takeoutId: long;
    query: X;
  };
  export class ReqPq extends Request<Partial<{
    nonce: int128;
  }>, Api.TypeResPQ> {
    nonce: int128;
  };
  export class ReqPqMulti extends Request<Partial<{
    nonce: int128;
  }>, Api.TypeResPQ> {
    nonce: int128;
  };
  export class ReqDHParams extends Request<Partial<{
    nonce: int128;
    serverNonce: int128;
    p: bytes;
    q: bytes;
    publicKeyFingerprint: long;
    encryptedData: bytes;
  }>, Api.TypeServer_DH_Params> {
    nonce: int128;
    serverNonce: int128;
    p: bytes;
    q: bytes;
    publicKeyFingerprint: long;
    encryptedData: bytes;
  };
  export class SetClientDHParams extends Request<Partial<{
    nonce: int128;
    serverNonce: int128;
    encryptedData: bytes;
  }>, Api.TypeSet_client_DH_params_answer> {
    nonce: int128;
    serverNonce: int128;
    encryptedData: bytes;
  };
  export class DestroyAuthKey extends Request<void, Api.TypeDestroyAuthKeyRes> {};
  export class RpcDropAnswer extends Request<Partial<{
    reqMsgId: long;
  }>, Api.TypeRpcDropAnswer> {
    reqMsgId: long;
  };
  export class GetFutureSalts extends Request<Partial<{
    num: int;
  }>, Api.TypeFutureSalts> {
    num: int;
  };
  export class Ping extends Request<Partial<{
    pingId: long;
  }>, Api.TypePong> {
    pingId: long;
  };
  export class PingDelayDisconnect extends Request<Partial<{
    pingId: long;
    disconnectDelay: int;
  }>, Api.TypePong> {
    pingId: long;
    disconnectDelay: int;
  };
  export class DestroySession extends Request<Partial<{
    sessionId: long;
  }>, Api.TypeDestroySessionRes> {
    sessionId: long;
  };
  

  export namespace auth {
    export class SendCode extends Request<Partial<{
      phoneNumber: string;
      apiId: int;
      apiHash: string;
      settings: Api.TypeCodeSettings;
    }>, auth.TypeSentCode> {
      phoneNumber: string;
      apiId: int;
      apiHash: string;
      settings: Api.TypeCodeSettings;
    };
    export class SignUp extends Request<Partial<{
      phoneNumber: string;
      phoneCodeHash: string;
      firstName: string;
      lastName: string;
    }>, auth.TypeAuthorization> {
      phoneNumber: string;
      phoneCodeHash: string;
      firstName: string;
      lastName: string;
    };
    export class SignIn extends Request<Partial<{
      phoneNumber: string;
      phoneCodeHash: string;
      phoneCode: string;
    }>, auth.TypeAuthorization> {
      phoneNumber: string;
      phoneCodeHash: string;
      phoneCode: string;
    };
    export class LogOut extends Request<void, Bool> {};
    export class ResetAuthorizations extends Request<void, Bool> {};
    export class ExportAuthorization extends Request<Partial<{
      dcId: int;
    }>, auth.TypeExportedAuthorization> {
      dcId: int;
    };
    export class ImportAuthorization extends Request<Partial<{
      id: int;
      bytes: bytes;
    }>, auth.TypeAuthorization> {
      id: int;
      bytes: bytes;
    };
    export class BindTempAuthKey extends Request<Partial<{
      permAuthKeyId: long;
      nonce: long;
      expiresAt: int;
      encryptedMessage: bytes;
    }>, Bool> {
      permAuthKeyId: long;
      nonce: long;
      expiresAt: int;
      encryptedMessage: bytes;
    };
    export class ImportBotAuthorization extends Request<Partial<{
      // flags: int;
      apiId: int;
      apiHash: string;
      botAuthToken: string;
    }>, auth.TypeAuthorization> {
      // flags: int;
      apiId: int;
      apiHash: string;
      botAuthToken: string;
    };
    export class CheckPassword extends Request<Partial<{
      password: Api.TypeInputCheckPasswordSRP;
    }>, auth.TypeAuthorization> {
      password: Api.TypeInputCheckPasswordSRP;
    };
    export class RequestPasswordRecovery extends Request<void, auth.TypePasswordRecovery> {};
    export class RecoverPassword extends Request<Partial<{
      code: string;
    }>, auth.TypeAuthorization> {
      code: string;
    };
    export class ResendCode extends Request<Partial<{
      phoneNumber: string;
      phoneCodeHash: string;
    }>, auth.TypeSentCode> {
      phoneNumber: string;
      phoneCodeHash: string;
    };
    export class CancelCode extends Request<Partial<{
      phoneNumber: string;
      phoneCodeHash: string;
    }>, Bool> {
      phoneNumber: string;
      phoneCodeHash: string;
    };
    export class DropTempAuthKeys extends Request<Partial<{
      exceptAuthKeys: long[];
    }>, Bool> {
      exceptAuthKeys: long[];
    };
    export class ExportLoginToken extends Request<Partial<{
      apiId: int;
      apiHash: string;
      exceptIds: int[];
    }>, auth.TypeLoginToken> {
      apiId: int;
      apiHash: string;
      exceptIds: int[];
    };
    export class ImportLoginToken extends Request<Partial<{
      token: bytes;
    }>, auth.TypeLoginToken> {
      token: bytes;
    };
    export class AcceptLoginToken extends Request<Partial<{
      token: bytes;
    }>, Api.TypeAuthorization> {
      token: bytes;
    };
  }

  export namespace account {
    export class RegisterDevice extends Request<Partial<{
      // flags: undefined;
      noMuted?: true;
      tokenType: int;
      token: string;
      appSandbox: Bool;
      secret: bytes;
      otherUids: int[];
    }>, Bool> {
      // flags: undefined;
      noMuted?: true;
      tokenType: int;
      token: string;
      appSandbox: Bool;
      secret: bytes;
      otherUids: int[];
    };
    export class UnregisterDevice extends Request<Partial<{
      tokenType: int;
      token: string;
      otherUids: int[];
    }>, Bool> {
      tokenType: int;
      token: string;
      otherUids: int[];
    };
    export class UpdateNotifySettings extends Request<Partial<{
      peer: Api.TypeInputNotifyPeer;
      settings: Api.TypeInputPeerNotifySettings;
    }>, Bool> {
      peer: Api.TypeInputNotifyPeer;
      settings: Api.TypeInputPeerNotifySettings;
    };
    export class GetNotifySettings extends Request<Partial<{
      peer: Api.TypeInputNotifyPeer;
    }>, Api.TypePeerNotifySettings> {
      peer: Api.TypeInputNotifyPeer;
    };
    export class ResetNotifySettings extends Request<void, Bool> {};
    export class UpdateProfile extends Request<Partial<{
      // flags: undefined;
      firstName?: string;
      lastName?: string;
      about?: string;
    } | void>, Api.TypeUser> {
      // flags: undefined;
      firstName?: string;
      lastName?: string;
      about?: string;
    };
    export class UpdateStatus extends Request<Partial<{
      offline: Bool;
    }>, Bool> {
      offline: Bool;
    };
    export class GetWallPapers extends Request<Partial<{
      hash: int;
    }>, account.TypeWallPapers> {
      hash: int;
    };
    export class ReportPeer extends Request<Partial<{
      peer: Api.TypeInputPeer;
      reason: Api.TypeReportReason;
      message: string;
    }>, Bool> {
      peer: Api.TypeInputPeer;
      reason: Api.TypeReportReason;
      message: string;
    };
    export class CheckUsername extends Request<Partial<{
      username: string;
    }>, Bool> {
      username: string;
    };
    export class UpdateUsername extends Request<Partial<{
      username: string;
    }>, Api.TypeUser> {
      username: string;
    };
    export class GetPrivacy extends Request<Partial<{
      key: Api.TypeInputPrivacyKey;
    }>, account.TypePrivacyRules> {
      key: Api.TypeInputPrivacyKey;
    };
    export class SetPrivacy extends Request<Partial<{
      key: Api.TypeInputPrivacyKey;
      rules: Api.TypeInputPrivacyRule[];
    }>, account.TypePrivacyRules> {
      key: Api.TypeInputPrivacyKey;
      rules: Api.TypeInputPrivacyRule[];
    };
    export class DeleteAccount extends Request<Partial<{
      reason: string;
    }>, Bool> {
      reason: string;
    };
    export class GetAccountTTL extends Request<void, Api.TypeAccountDaysTTL> {};
    export class SetAccountTTL extends Request<Partial<{
      ttl: Api.TypeAccountDaysTTL;
    }>, Bool> {
      ttl: Api.TypeAccountDaysTTL;
    };
    export class SendChangePhoneCode extends Request<Partial<{
      phoneNumber: string;
      settings: Api.TypeCodeSettings;
    }>, auth.TypeSentCode> {
      phoneNumber: string;
      settings: Api.TypeCodeSettings;
    };
    export class ChangePhone extends Request<Partial<{
      phoneNumber: string;
      phoneCodeHash: string;
      phoneCode: string;
    }>, Api.TypeUser> {
      phoneNumber: string;
      phoneCodeHash: string;
      phoneCode: string;
    };
    export class UpdateDeviceLocked extends Request<Partial<{
      period: int;
    }>, Bool> {
      period: int;
    };
    export class GetAuthorizations extends Request<void, account.TypeAuthorizations> {};
    export class ResetAuthorization extends Request<Partial<{
      hash: long;
    }>, Bool> {
      hash: long;
    };
    export class GetPassword extends Request<void, account.TypePassword> {};
    export class GetPasswordSettings extends Request<Partial<{
      password: Api.TypeInputCheckPasswordSRP;
    }>, account.TypePasswordSettings> {
      password: Api.TypeInputCheckPasswordSRP;
    };
    export class UpdatePasswordSettings extends Request<Partial<{
      password: Api.TypeInputCheckPasswordSRP;
      newSettings: account.TypePasswordInputSettings;
    }>, Bool> {
      password: Api.TypeInputCheckPasswordSRP;
      newSettings: account.TypePasswordInputSettings;
    };
    export class SendConfirmPhoneCode extends Request<Partial<{
      hash: string;
      settings: Api.TypeCodeSettings;
    }>, auth.TypeSentCode> {
      hash: string;
      settings: Api.TypeCodeSettings;
    };
    export class ConfirmPhone extends Request<Partial<{
      phoneCodeHash: string;
      phoneCode: string;
    }>, Bool> {
      phoneCodeHash: string;
      phoneCode: string;
    };
    export class GetTmpPassword extends Request<Partial<{
      password: Api.TypeInputCheckPasswordSRP;
      period: int;
    }>, account.TypeTmpPassword> {
      password: Api.TypeInputCheckPasswordSRP;
      period: int;
    };
    export class GetWebAuthorizations extends Request<void, account.TypeWebAuthorizations> {};
    export class ResetWebAuthorization extends Request<Partial<{
      hash: long;
    }>, Bool> {
      hash: long;
    };
    export class ResetWebAuthorizations extends Request<void, Bool> {};
    export class GetAllSecureValues extends Request<void, Api.TypeSecureValue[]> {};
    export class GetSecureValue extends Request<Partial<{
      types: Api.TypeSecureValueType[];
    }>, Api.TypeSecureValue[]> {
      types: Api.TypeSecureValueType[];
    };
    export class SaveSecureValue extends Request<Partial<{
      value: Api.TypeInputSecureValue;
      secureSecretId: long;
    }>, Api.TypeSecureValue> {
      value: Api.TypeInputSecureValue;
      secureSecretId: long;
    };
    export class DeleteSecureValue extends Request<Partial<{
      types: Api.TypeSecureValueType[];
    }>, Bool> {
      types: Api.TypeSecureValueType[];
    };
    export class GetAuthorizationForm extends Request<Partial<{
      botId: int;
      scope: string;
      publicKey: string;
    }>, account.TypeAuthorizationForm> {
      botId: int;
      scope: string;
      publicKey: string;
    };
    export class AcceptAuthorization extends Request<Partial<{
      botId: int;
      scope: string;
      publicKey: string;
      valueHashes: Api.TypeSecureValueHash[];
      credentials: Api.TypeSecureCredentialsEncrypted;
    }>, Bool> {
      botId: int;
      scope: string;
      publicKey: string;
      valueHashes: Api.TypeSecureValueHash[];
      credentials: Api.TypeSecureCredentialsEncrypted;
    };
    export class SendVerifyPhoneCode extends Request<Partial<{
      phoneNumber: string;
      settings: Api.TypeCodeSettings;
    }>, auth.TypeSentCode> {
      phoneNumber: string;
      settings: Api.TypeCodeSettings;
    };
    export class VerifyPhone extends Request<Partial<{
      phoneNumber: string;
      phoneCodeHash: string;
      phoneCode: string;
    }>, Bool> {
      phoneNumber: string;
      phoneCodeHash: string;
      phoneCode: string;
    };
    export class SendVerifyEmailCode extends Request<Partial<{
      email: string;
    }>, account.TypeSentEmailCode> {
      email: string;
    };
    export class VerifyEmail extends Request<Partial<{
      email: string;
      code: string;
    }>, Bool> {
      email: string;
      code: string;
    };
    export class InitTakeoutSession extends Request<Partial<{
      // flags: undefined;
      contacts?: true;
      messageUsers?: true;
      messageChats?: true;
      messageMegagroups?: true;
      messageChannels?: true;
      files?: true;
      fileMaxSize?: int;
    } | void>, account.TypeTakeout> {
      // flags: undefined;
      contacts?: true;
      messageUsers?: true;
      messageChats?: true;
      messageMegagroups?: true;
      messageChannels?: true;
      files?: true;
      fileMaxSize?: int;
    };
    export class FinishTakeoutSession extends Request<Partial<{
      // flags: undefined;
      success?: true;
    } | void>, Bool> {
      // flags: undefined;
      success?: true;
    };
    export class ConfirmPasswordEmail extends Request<Partial<{
      code: string;
    }>, Bool> {
      code: string;
    };
    export class ResendPasswordEmail extends Request<void, Bool> {};
    export class CancelPasswordEmail extends Request<void, Bool> {};
    export class GetContactSignUpNotification extends Request<void, Bool> {};
    export class SetContactSignUpNotification extends Request<Partial<{
      silent: Bool;
    }>, Bool> {
      silent: Bool;
    };
    export class GetNotifyExceptions extends Request<Partial<{
      // flags: undefined;
      compareSound?: true;
      peer?: Api.TypeInputNotifyPeer;
    } | void>, Api.TypeUpdates> {
      // flags: undefined;
      compareSound?: true;
      peer?: Api.TypeInputNotifyPeer;
    };
    export class GetWallPaper extends Request<Partial<{
      wallpaper: Api.TypeInputWallPaper;
    }>, Api.TypeWallPaper> {
      wallpaper: Api.TypeInputWallPaper;
    };
    export class UploadWallPaper extends Request<Partial<{
      file: Api.TypeInputFile;
      mimeType: string;
      settings: Api.TypeWallPaperSettings;
    }>, Api.TypeWallPaper> {
      file: Api.TypeInputFile;
      mimeType: string;
      settings: Api.TypeWallPaperSettings;
    };
    export class SaveWallPaper extends Request<Partial<{
      wallpaper: Api.TypeInputWallPaper;
      unsave: Bool;
      settings: Api.TypeWallPaperSettings;
    }>, Bool> {
      wallpaper: Api.TypeInputWallPaper;
      unsave: Bool;
      settings: Api.TypeWallPaperSettings;
    };
    export class InstallWallPaper extends Request<Partial<{
      wallpaper: Api.TypeInputWallPaper;
      settings: Api.TypeWallPaperSettings;
    }>, Bool> {
      wallpaper: Api.TypeInputWallPaper;
      settings: Api.TypeWallPaperSettings;
    };
    export class ResetWallPapers extends Request<void, Bool> {};
    export class GetAutoDownloadSettings extends Request<void, account.TypeAutoDownloadSettings> {};
    export class SaveAutoDownloadSettings extends Request<Partial<{
      // flags: undefined;
      low?: true;
      high?: true;
      settings: Api.TypeAutoDownloadSettings;
    }>, Bool> {
      // flags: undefined;
      low?: true;
      high?: true;
      settings: Api.TypeAutoDownloadSettings;
    };
    export class UploadTheme extends Request<Partial<{
      // flags: undefined;
      file: Api.TypeInputFile;
      thumb?: Api.TypeInputFile;
      fileName: string;
      mimeType: string;
    }>, Api.TypeDocument> {
      // flags: undefined;
      file: Api.TypeInputFile;
      thumb?: Api.TypeInputFile;
      fileName: string;
      mimeType: string;
    };
    export class CreateTheme extends Request<Partial<{
      // flags: undefined;
      slug: string;
      title: string;
      document?: Api.TypeInputDocument;
      settings?: Api.TypeInputThemeSettings;
    }>, Api.TypeTheme> {
      // flags: undefined;
      slug: string;
      title: string;
      document?: Api.TypeInputDocument;
      settings?: Api.TypeInputThemeSettings;
    };
    export class UpdateTheme extends Request<Partial<{
      // flags: undefined;
      format: string;
      theme: Api.TypeInputTheme;
      slug?: string;
      title?: string;
      document?: Api.TypeInputDocument;
      settings?: Api.TypeInputThemeSettings;
    }>, Api.TypeTheme> {
      // flags: undefined;
      format: string;
      theme: Api.TypeInputTheme;
      slug?: string;
      title?: string;
      document?: Api.TypeInputDocument;
      settings?: Api.TypeInputThemeSettings;
    };
    export class SaveTheme extends Request<Partial<{
      theme: Api.TypeInputTheme;
      unsave: Bool;
    }>, Bool> {
      theme: Api.TypeInputTheme;
      unsave: Bool;
    };
    export class InstallTheme extends Request<Partial<{
      // flags: undefined;
      dark?: true;
      format?: string;
      theme?: Api.TypeInputTheme;
    } | void>, Bool> {
      // flags: undefined;
      dark?: true;
      format?: string;
      theme?: Api.TypeInputTheme;
    };
    export class GetTheme extends Request<Partial<{
      format: string;
      theme: Api.TypeInputTheme;
      documentId: long;
    }>, Api.TypeTheme> {
      format: string;
      theme: Api.TypeInputTheme;
      documentId: long;
    };
    export class GetThemes extends Request<Partial<{
      format: string;
      hash: int;
    }>, account.TypeThemes> {
      format: string;
      hash: int;
    };
    export class SetContentSettings extends Request<Partial<{
      // flags: undefined;
      sensitiveEnabled?: true;
    } | void>, Bool> {
      // flags: undefined;
      sensitiveEnabled?: true;
    };
    export class GetContentSettings extends Request<void, account.TypeContentSettings> {};
    export class GetMultiWallPapers extends Request<Partial<{
      wallpapers: Api.TypeInputWallPaper[];
    }>, Api.TypeWallPaper[]> {
      wallpapers: Api.TypeInputWallPaper[];
    };
    export class GetGlobalPrivacySettings extends Request<void, Api.TypeGlobalPrivacySettings> {};
    export class SetGlobalPrivacySettings extends Request<Partial<{
      settings: Api.TypeGlobalPrivacySettings;
    }>, Api.TypeGlobalPrivacySettings> {
      settings: Api.TypeGlobalPrivacySettings;
    };
    export class ReportProfilePhoto extends Request<Partial<{
      peer: Api.TypeInputPeer;
      photoId: Api.TypeInputPhoto;
      reason: Api.TypeReportReason;
      message: string;
    }>, Bool> {
      peer: Api.TypeInputPeer;
      photoId: Api.TypeInputPhoto;
      reason: Api.TypeReportReason;
      message: string;
    };
  }

  export namespace users {
    export class GetUsers extends Request<Partial<{
      id: Api.TypeInputUser[];
    }>, Api.TypeUser[]> {
      id: Api.TypeInputUser[];
    };
    export class GetFullUser extends Request<Partial<{
      id: Api.TypeInputUser;
    }>, Api.TypeUserFull> {
      id: Api.TypeInputUser;
    };
    export class SetSecureValueErrors extends Request<Partial<{
      id: Api.TypeInputUser;
      errors: Api.TypeSecureValueError[];
    }>, Bool> {
      id: Api.TypeInputUser;
      errors: Api.TypeSecureValueError[];
    };
  }

  export namespace contacts {
    export class GetContactIDs extends Request<Partial<{
      hash: int;
    }>, int[]> {
      hash: int;
    };
    export class GetStatuses extends Request<void, Api.TypeContactStatus[]> {};
    export class GetContacts extends Request<Partial<{
      hash: int;
    }>, contacts.TypeContacts> {
      hash: int;
    };
    export class ImportContacts extends Request<Partial<{
      contacts: Api.TypeInputContact[];
    }>, contacts.TypeImportedContacts> {
      contacts: Api.TypeInputContact[];
    };
    export class DeleteContacts extends Request<Partial<{
      id: Api.TypeInputUser[];
    }>, Api.TypeUpdates> {
      id: Api.TypeInputUser[];
    };
    export class DeleteByPhones extends Request<Partial<{
      phones: string[];
    }>, Bool> {
      phones: string[];
    };
    export class Block extends Request<Partial<{
      id: Api.TypeInputPeer;
    }>, Bool> {
      id: Api.TypeInputPeer;
    };
    export class Unblock extends Request<Partial<{
      id: Api.TypeInputPeer;
    }>, Bool> {
      id: Api.TypeInputPeer;
    };
    export class GetBlocked extends Request<Partial<{
      offset: int;
      limit: int;
    }>, contacts.TypeBlocked> {
      offset: int;
      limit: int;
    };
    export class Search extends Request<Partial<{
      q: string;
      limit: int;
    }>, contacts.TypeFound> {
      q: string;
      limit: int;
    };
    export class ResolveUsername extends Request<Partial<{
      username: string;
    }>, contacts.TypeResolvedPeer> {
      username: string;
    };
    export class GetTopPeers extends Request<Partial<{
      // flags: undefined;
      correspondents?: true;
      botsPm?: true;
      botsInline?: true;
      phoneCalls?: true;
      forwardUsers?: true;
      forwardChats?: true;
      groups?: true;
      channels?: true;
      offset: int;
      limit: int;
      hash: int;
    }>, contacts.TypeTopPeers> {
      // flags: undefined;
      correspondents?: true;
      botsPm?: true;
      botsInline?: true;
      phoneCalls?: true;
      forwardUsers?: true;
      forwardChats?: true;
      groups?: true;
      channels?: true;
      offset: int;
      limit: int;
      hash: int;
    };
    export class ResetTopPeerRating extends Request<Partial<{
      category: Api.TypeTopPeerCategory;
      peer: Api.TypeInputPeer;
    }>, Bool> {
      category: Api.TypeTopPeerCategory;
      peer: Api.TypeInputPeer;
    };
    export class ResetSaved extends Request<void, Bool> {};
    export class GetSaved extends Request<void, Api.TypeSavedContact[]> {};
    export class ToggleTopPeers extends Request<Partial<{
      enabled: Bool;
    }>, Bool> {
      enabled: Bool;
    };
    export class AddContact extends Request<Partial<{
      // flags: undefined;
      addPhonePrivacyException?: true;
      id: Api.TypeInputUser;
      firstName: string;
      lastName: string;
      phone: string;
    }>, Api.TypeUpdates> {
      // flags: undefined;
      addPhonePrivacyException?: true;
      id: Api.TypeInputUser;
      firstName: string;
      lastName: string;
      phone: string;
    };
    export class AcceptContact extends Request<Partial<{
      id: Api.TypeInputUser;
    }>, Api.TypeUpdates> {
      id: Api.TypeInputUser;
    };
    export class GetLocated extends Request<Partial<{
      // flags: undefined;
      background?: true;
      geoPoint: Api.TypeInputGeoPoint;
      selfExpires?: int;
    }>, Api.TypeUpdates> {
      // flags: undefined;
      background?: true;
      geoPoint: Api.TypeInputGeoPoint;
      selfExpires?: int;
    };
    export class BlockFromReplies extends Request<Partial<{
      // flags: undefined;
      deleteMessage?: true;
      deleteHistory?: true;
      reportSpam?: true;
      msgId: int;
    }>, Api.TypeUpdates> {
      // flags: undefined;
      deleteMessage?: true;
      deleteHistory?: true;
      reportSpam?: true;
      msgId: int;
    };
  }

  export namespace messages {
    export class GetMessages extends Request<Partial<{
      id: Api.TypeInputMessage[];
    }>, messages.TypeMessages> {
      id: Api.TypeInputMessage[];
    };
    export class GetDialogs extends Request<Partial<{
      // flags: undefined;
      excludePinned?: true;
      folderId?: int;
      offsetDate: int;
      offsetId: int;
      offsetPeer: Api.TypeInputPeer;
      limit: int;
      hash: int;
    }>, messages.TypeDialogs> {
      // flags: undefined;
      excludePinned?: true;
      folderId?: int;
      offsetDate: int;
      offsetId: int;
      offsetPeer: Api.TypeInputPeer;
      limit: int;
      hash: int;
    };
    export class GetHistory extends Request<Partial<{
      peer: Api.TypeInputPeer;
      offsetId: int;
      offsetDate: int;
      addOffset: int;
      limit: int;
      maxId: int;
      minId: int;
      hash: int;
    }>, messages.TypeMessages> {
      peer: Api.TypeInputPeer;
      offsetId: int;
      offsetDate: int;
      addOffset: int;
      limit: int;
      maxId: int;
      minId: int;
      hash: int;
    };
    export class Search extends Request<Partial<{
      // flags: undefined;
      peer: Api.TypeInputPeer;
      q: string;
      fromId?: Api.TypeInputPeer;
      topMsgId?: int;
      filter: Api.TypeMessagesFilter;
      minDate: int;
      maxDate: int;
      offsetId: int;
      addOffset: int;
      limit: int;
      maxId: int;
      minId: int;
      hash: int;
    }>, messages.TypeMessages> {
      // flags: undefined;
      peer: Api.TypeInputPeer;
      q: string;
      fromId?: Api.TypeInputPeer;
      topMsgId?: int;
      filter: Api.TypeMessagesFilter;
      minDate: int;
      maxDate: int;
      offsetId: int;
      addOffset: int;
      limit: int;
      maxId: int;
      minId: int;
      hash: int;
    };
    export class ReadHistory extends Request<Partial<{
      peer: Api.TypeInputPeer;
      maxId: int;
    }>, messages.TypeAffectedMessages> {
      peer: Api.TypeInputPeer;
      maxId: int;
    };
    export class DeleteHistory extends Request<Partial<{
      // flags: undefined;
      justClear?: true;
      revoke?: true;
      peer: Api.TypeInputPeer;
      maxId: int;
    }>, messages.TypeAffectedHistory> {
      // flags: undefined;
      justClear?: true;
      revoke?: true;
      peer: Api.TypeInputPeer;
      maxId: int;
    };
    export class DeleteMessages extends Request<Partial<{
      // flags: undefined;
      revoke?: true;
      id: int[];
    }>, messages.TypeAffectedMessages> {
      // flags: undefined;
      revoke?: true;
      id: int[];
    };
    export class ReceivedMessages extends Request<Partial<{
      maxId: int;
    }>, Api.TypeReceivedNotifyMessage[]> {
      maxId: int;
    };
    export class SetTyping extends Request<Partial<{
      // flags: undefined;
      peer: Api.TypeInputPeer;
      topMsgId?: int;
      action: Api.TypeSendMessageAction;
    }>, Bool> {
      // flags: undefined;
      peer: Api.TypeInputPeer;
      topMsgId?: int;
      action: Api.TypeSendMessageAction;
    };
    export class SendMessage extends Request<Partial<{
      // flags: undefined;
      noWebpage?: true;
      silent?: true;
      background?: true;
      clearDraft?: true;
      peer: Api.TypeInputPeer;
      replyToMsgId?: int;
      message: string;
      randomId: long;
      replyMarkup?: Api.TypeReplyMarkup;
      entities?: Api.TypeMessageEntity[];
      scheduleDate?: int;
    }>, Api.TypeUpdates> {
      // flags: undefined;
      noWebpage?: true;
      silent?: true;
      background?: true;
      clearDraft?: true;
      peer: Api.TypeInputPeer;
      replyToMsgId?: int;
      message: string;
      randomId: long;
      replyMarkup?: Api.TypeReplyMarkup;
      entities?: Api.TypeMessageEntity[];
      scheduleDate?: int;
    };
    export class SendMedia extends Request<Partial<{
      // flags: undefined;
      silent?: true;
      background?: true;
      clearDraft?: true;
      peer: Api.TypeInputPeer;
      replyToMsgId?: int;
      media: Api.TypeInputMedia;
      message: string;
      randomId: long;
      replyMarkup?: Api.TypeReplyMarkup;
      entities?: Api.TypeMessageEntity[];
      scheduleDate?: int;
    }>, Api.TypeUpdates> {
      // flags: undefined;
      silent?: true;
      background?: true;
      clearDraft?: true;
      peer: Api.TypeInputPeer;
      replyToMsgId?: int;
      media: Api.TypeInputMedia;
      message: string;
      randomId: long;
      replyMarkup?: Api.TypeReplyMarkup;
      entities?: Api.TypeMessageEntity[];
      scheduleDate?: int;
    };
    export class ForwardMessages extends Request<Partial<{
      // flags: undefined;
      silent?: true;
      background?: true;
      withMyScore?: true;
      fromPeer: Api.TypeInputPeer;
      id: int[];
      randomId: long[];
      toPeer: Api.TypeInputPeer;
      scheduleDate?: int;
    }>, Api.TypeUpdates> {
      // flags: undefined;
      silent?: true;
      background?: true;
      withMyScore?: true;
      fromPeer: Api.TypeInputPeer;
      id: int[];
      randomId: long[];
      toPeer: Api.TypeInputPeer;
      scheduleDate?: int;
    };
    export class ReportSpam extends Request<Partial<{
      peer: Api.TypeInputPeer;
    }>, Bool> {
      peer: Api.TypeInputPeer;
    };
    export class GetPeerSettings extends Request<Partial<{
      peer: Api.TypeInputPeer;
    }>, Api.TypePeerSettings> {
      peer: Api.TypeInputPeer;
    };
    export class Report extends Request<Partial<{
      peer: Api.TypeInputPeer;
      id: int[];
      reason: Api.TypeReportReason;
      message: string;
    }>, Bool> {
      peer: Api.TypeInputPeer;
      id: int[];
      reason: Api.TypeReportReason;
      message: string;
    };
    export class GetChats extends Request<Partial<{
      id: int[];
    }>, messages.TypeChats> {
      id: int[];
    };
    export class GetFullChat extends Request<Partial<{
      chatId: int;
    }>, messages.TypeChatFull> {
      chatId: int;
    };
    export class EditChatTitle extends Request<Partial<{
      chatId: int;
      title: string;
    }>, Api.TypeUpdates> {
      chatId: int;
      title: string;
    };
    export class EditChatPhoto extends Request<Partial<{
      chatId: int;
      photo: Api.TypeInputChatPhoto;
    }>, Api.TypeUpdates> {
      chatId: int;
      photo: Api.TypeInputChatPhoto;
    };
    export class AddChatUser extends Request<Partial<{
      chatId: int;
      userId: Api.TypeInputUser;
      fwdLimit: int;
    }>, Api.TypeUpdates> {
      chatId: int;
      userId: Api.TypeInputUser;
      fwdLimit: int;
    };
    export class DeleteChatUser extends Request<Partial<{
      // flags: undefined;
      revokeHistory?: true;
      chatId: int;
      userId: Api.TypeInputUser;
    }>, Api.TypeUpdates> {
      // flags: undefined;
      revokeHistory?: true;
      chatId: int;
      userId: Api.TypeInputUser;
    };
    export class CreateChat extends Request<Partial<{
      users: Api.TypeInputUser[];
      title: string;
    }>, Api.TypeUpdates> {
      users: Api.TypeInputUser[];
      title: string;
    };
    export class GetDhConfig extends Request<Partial<{
      version: int;
      randomLength: int;
    }>, messages.TypeDhConfig> {
      version: int;
      randomLength: int;
    };
    export class RequestEncryption extends Request<Partial<{
      userId: Api.TypeInputUser;
      randomId: int;
      gA: bytes;
    }>, Api.TypeEncryptedChat> {
      userId: Api.TypeInputUser;
      randomId: int;
      gA: bytes;
    };
    export class AcceptEncryption extends Request<Partial<{
      peer: Api.TypeInputEncryptedChat;
      gB: bytes;
      keyFingerprint: long;
    }>, Api.TypeEncryptedChat> {
      peer: Api.TypeInputEncryptedChat;
      gB: bytes;
      keyFingerprint: long;
    };
    export class DiscardEncryption extends Request<Partial<{
      // flags: undefined;
      deleteHistory?: true;
      chatId: int;
    }>, Bool> {
      // flags: undefined;
      deleteHistory?: true;
      chatId: int;
    };
    export class SetEncryptedTyping extends Request<Partial<{
      peer: Api.TypeInputEncryptedChat;
      typing: Bool;
    }>, Bool> {
      peer: Api.TypeInputEncryptedChat;
      typing: Bool;
    };
    export class ReadEncryptedHistory extends Request<Partial<{
      peer: Api.TypeInputEncryptedChat;
      maxDate: int;
    }>, Bool> {
      peer: Api.TypeInputEncryptedChat;
      maxDate: int;
    };
    export class SendEncrypted extends Request<Partial<{
      // flags: undefined;
      silent?: true;
      peer: Api.TypeInputEncryptedChat;
      randomId: long;
      data: bytes;
    }>, messages.TypeSentEncryptedMessage> {
      // flags: undefined;
      silent?: true;
      peer: Api.TypeInputEncryptedChat;
      randomId: long;
      data: bytes;
    };
    export class SendEncryptedFile extends Request<Partial<{
      // flags: undefined;
      silent?: true;
      peer: Api.TypeInputEncryptedChat;
      randomId: long;
      data: bytes;
      file: Api.TypeInputEncryptedFile;
    }>, messages.TypeSentEncryptedMessage> {
      // flags: undefined;
      silent?: true;
      peer: Api.TypeInputEncryptedChat;
      randomId: long;
      data: bytes;
      file: Api.TypeInputEncryptedFile;
    };
    export class SendEncryptedService extends Request<Partial<{
      peer: Api.TypeInputEncryptedChat;
      randomId: long;
      data: bytes;
    }>, messages.TypeSentEncryptedMessage> {
      peer: Api.TypeInputEncryptedChat;
      randomId: long;
      data: bytes;
    };
    export class ReceivedQueue extends Request<Partial<{
      maxQts: int;
    }>, long[]> {
      maxQts: int;
    };
    export class ReportEncryptedSpam extends Request<Partial<{
      peer: Api.TypeInputEncryptedChat;
    }>, Bool> {
      peer: Api.TypeInputEncryptedChat;
    };
    export class ReadMessageContents extends Request<Partial<{
      id: int[];
    }>, messages.TypeAffectedMessages> {
      id: int[];
    };
    export class GetStickers extends Request<Partial<{
      emoticon: string;
      hash: int;
    }>, messages.TypeStickers> {
      emoticon: string;
      hash: int;
    };
    export class GetAllStickers extends Request<Partial<{
      hash: int;
    }>, messages.TypeAllStickers> {
      hash: int;
    };
    export class GetWebPagePreview extends Request<Partial<{
      // flags: undefined;
      message: string;
      entities?: Api.TypeMessageEntity[];
    }>, Api.TypeMessageMedia> {
      // flags: undefined;
      message: string;
      entities?: Api.TypeMessageEntity[];
    };
    export class ExportChatInvite extends Request<Partial<{
      // flags: undefined;
      legacyRevokePermanent?: true;
      peer: Api.TypeInputPeer;
      expireDate?: int;
      usageLimit?: int;
    }>, Api.TypeExportedChatInvite> {
      // flags: undefined;
      legacyRevokePermanent?: true;
      peer: Api.TypeInputPeer;
      expireDate?: int;
      usageLimit?: int;
    };
    export class CheckChatInvite extends Request<Partial<{
      hash: string;
    }>, Api.TypeChatInvite> {
      hash: string;
    };
    export class ImportChatInvite extends Request<Partial<{
      hash: string;
    }>, Api.TypeUpdates> {
      hash: string;
    };
    export class GetStickerSet extends Request<Partial<{
      stickerset: Api.TypeInputStickerSet;
    }>, messages.TypeStickerSet> {
      stickerset: Api.TypeInputStickerSet;
    };
    export class InstallStickerSet extends Request<Partial<{
      stickerset: Api.TypeInputStickerSet;
      archived: Bool;
    }>, messages.TypeStickerSetInstallResult> {
      stickerset: Api.TypeInputStickerSet;
      archived: Bool;
    };
    export class UninstallStickerSet extends Request<Partial<{
      stickerset: Api.TypeInputStickerSet;
    }>, Bool> {
      stickerset: Api.TypeInputStickerSet;
    };
    export class StartBot extends Request<Partial<{
      bot: Api.TypeInputUser;
      peer: Api.TypeInputPeer;
      randomId: long;
      startParam: string;
    }>, Api.TypeUpdates> {
      bot: Api.TypeInputUser;
      peer: Api.TypeInputPeer;
      randomId: long;
      startParam: string;
    };
    export class GetMessagesViews extends Request<Partial<{
      peer: Api.TypeInputPeer;
      id: int[];
      increment: Bool;
    }>, messages.TypeMessageViews> {
      peer: Api.TypeInputPeer;
      id: int[];
      increment: Bool;
    };
    export class EditChatAdmin extends Request<Partial<{
      chatId: int;
      userId: Api.TypeInputUser;
      isAdmin: Bool;
    }>, Bool> {
      chatId: int;
      userId: Api.TypeInputUser;
      isAdmin: Bool;
    };
    export class MigrateChat extends Request<Partial<{
      chatId: int;
    }>, Api.TypeUpdates> {
      chatId: int;
    };
    export class SearchGlobal extends Request<Partial<{
      // flags: undefined;
      folderId?: int;
      q: string;
      filter: Api.TypeMessagesFilter;
      minDate: int;
      maxDate: int;
      offsetRate: int;
      offsetPeer: Api.TypeInputPeer;
      offsetId: int;
      limit: int;
    }>, messages.TypeMessages> {
      // flags: undefined;
      folderId?: int;
      q: string;
      filter: Api.TypeMessagesFilter;
      minDate: int;
      maxDate: int;
      offsetRate: int;
      offsetPeer: Api.TypeInputPeer;
      offsetId: int;
      limit: int;
    };
    export class ReorderStickerSets extends Request<Partial<{
      // flags: undefined;
      masks?: true;
      order: long[];
    }>, Bool> {
      // flags: undefined;
      masks?: true;
      order: long[];
    };
    export class GetDocumentByHash extends Request<Partial<{
      sha256: bytes;
      size: int;
      mimeType: string;
    }>, Api.TypeDocument> {
      sha256: bytes;
      size: int;
      mimeType: string;
    };
    export class GetSavedGifs extends Request<Partial<{
      hash: int;
    }>, messages.TypeSavedGifs> {
      hash: int;
    };
    export class SaveGif extends Request<Partial<{
      id: Api.TypeInputDocument;
      unsave: Bool;
    }>, Bool> {
      id: Api.TypeInputDocument;
      unsave: Bool;
    };
    export class GetInlineBotResults extends Request<Partial<{
      // flags: undefined;
      bot: Api.TypeInputUser;
      peer: Api.TypeInputPeer;
      geoPoint?: Api.TypeInputGeoPoint;
      query: string;
      offset: string;
    }>, messages.TypeBotResults> {
      // flags: undefined;
      bot: Api.TypeInputUser;
      peer: Api.TypeInputPeer;
      geoPoint?: Api.TypeInputGeoPoint;
      query: string;
      offset: string;
    };
    export class SetInlineBotResults extends Request<Partial<{
      // flags: undefined;
      gallery?: true;
      private?: true;
      queryId: long;
      results: Api.TypeInputBotInlineResult[];
      cacheTime: int;
      nextOffset?: string;
      switchPm?: Api.TypeInlineBotSwitchPM;
    }>, Bool> {
      // flags: undefined;
      gallery?: true;
      private?: true;
      queryId: long;
      results: Api.TypeInputBotInlineResult[];
      cacheTime: int;
      nextOffset?: string;
      switchPm?: Api.TypeInlineBotSwitchPM;
    };
    export class SendInlineBotResult extends Request<Partial<{
      // flags: undefined;
      silent?: true;
      background?: true;
      clearDraft?: true;
      hideVia?: true;
      peer: Api.TypeInputPeer;
      replyToMsgId?: int;
      randomId: long;
      queryId: long;
      id: string;
      scheduleDate?: int;
    }>, Api.TypeUpdates> {
      // flags: undefined;
      silent?: true;
      background?: true;
      clearDraft?: true;
      hideVia?: true;
      peer: Api.TypeInputPeer;
      replyToMsgId?: int;
      randomId: long;
      queryId: long;
      id: string;
      scheduleDate?: int;
    };
    export class GetMessageEditData extends Request<Partial<{
      peer: Api.TypeInputPeer;
      id: int;
    }>, messages.TypeMessageEditData> {
      peer: Api.TypeInputPeer;
      id: int;
    };
    export class EditMessage extends Request<Partial<{
      // flags: undefined;
      noWebpage?: true;
      peer: Api.TypeInputPeer;
      id: int;
      message?: string;
      media?: Api.TypeInputMedia;
      replyMarkup?: Api.TypeReplyMarkup;
      entities?: Api.TypeMessageEntity[];
      scheduleDate?: int;
    }>, Api.TypeUpdates> {
      // flags: undefined;
      noWebpage?: true;
      peer: Api.TypeInputPeer;
      id: int;
      message?: string;
      media?: Api.TypeInputMedia;
      replyMarkup?: Api.TypeReplyMarkup;
      entities?: Api.TypeMessageEntity[];
      scheduleDate?: int;
    };
    export class EditInlineBotMessage extends Request<Partial<{
      // flags: undefined;
      noWebpage?: true;
      id: Api.TypeInputBotInlineMessageID;
      message?: string;
      media?: Api.TypeInputMedia;
      replyMarkup?: Api.TypeReplyMarkup;
      entities?: Api.TypeMessageEntity[];
    }>, Bool> {
      // flags: undefined;
      noWebpage?: true;
      id: Api.TypeInputBotInlineMessageID;
      message?: string;
      media?: Api.TypeInputMedia;
      replyMarkup?: Api.TypeReplyMarkup;
      entities?: Api.TypeMessageEntity[];
    };
    export class GetBotCallbackAnswer extends Request<Partial<{
      // flags: undefined;
      game?: true;
      peer: Api.TypeInputPeer;
      msgId: int;
      data?: bytes;
      password?: Api.TypeInputCheckPasswordSRP;
    }>, messages.TypeBotCallbackAnswer> {
      // flags: undefined;
      game?: true;
      peer: Api.TypeInputPeer;
      msgId: int;
      data?: bytes;
      password?: Api.TypeInputCheckPasswordSRP;
    };
    export class SetBotCallbackAnswer extends Request<Partial<{
      // flags: undefined;
      alert?: true;
      queryId: long;
      message?: string;
      url?: string;
      cacheTime: int;
    }>, Bool> {
      // flags: undefined;
      alert?: true;
      queryId: long;
      message?: string;
      url?: string;
      cacheTime: int;
    };
    export class GetPeerDialogs extends Request<Partial<{
      peers: Api.TypeInputDialogPeer[];
    }>, messages.TypePeerDialogs> {
      peers: Api.TypeInputDialogPeer[];
    };
    export class SaveDraft extends Request<Partial<{
      // flags: undefined;
      noWebpage?: true;
      replyToMsgId?: int;
      peer: Api.TypeInputPeer;
      message: string;
      entities?: Api.TypeMessageEntity[];
    }>, Bool> {
      // flags: undefined;
      noWebpage?: true;
      replyToMsgId?: int;
      peer: Api.TypeInputPeer;
      message: string;
      entities?: Api.TypeMessageEntity[];
    };
    export class GetAllDrafts extends Request<void, Api.TypeUpdates> {};
    export class GetFeaturedStickers extends Request<Partial<{
      hash: int;
    }>, messages.TypeFeaturedStickers> {
      hash: int;
    };
    export class ReadFeaturedStickers extends Request<Partial<{
      id: long[];
    }>, Bool> {
      id: long[];
    };
    export class GetRecentStickers extends Request<Partial<{
      // flags: undefined;
      attached?: true;
      hash: int;
    }>, messages.TypeRecentStickers> {
      // flags: undefined;
      attached?: true;
      hash: int;
    };
    export class SaveRecentSticker extends Request<Partial<{
      // flags: undefined;
      attached?: true;
      id: Api.TypeInputDocument;
      unsave: Bool;
    }>, Bool> {
      // flags: undefined;
      attached?: true;
      id: Api.TypeInputDocument;
      unsave: Bool;
    };
    export class ClearRecentStickers extends Request<Partial<{
      // flags: undefined;
      attached?: true;
    } | void>, Bool> {
      // flags: undefined;
      attached?: true;
    };
    export class GetArchivedStickers extends Request<Partial<{
      // flags: undefined;
      masks?: true;
      offsetId: long;
      limit: int;
    }>, messages.TypeArchivedStickers> {
      // flags: undefined;
      masks?: true;
      offsetId: long;
      limit: int;
    };
    export class GetMaskStickers extends Request<Partial<{
      hash: int;
    }>, messages.TypeAllStickers> {
      hash: int;
    };
    export class GetAttachedStickers extends Request<Partial<{
      media: Api.TypeInputStickeredMedia;
    }>, Api.TypeStickerSetCovered[]> {
      media: Api.TypeInputStickeredMedia;
    };
    export class SetGameScore extends Request<Partial<{
      // flags: undefined;
      editMessage?: true;
      force?: true;
      peer: Api.TypeInputPeer;
      id: int;
      userId: Api.TypeInputUser;
      score: int;
    }>, Api.TypeUpdates> {
      // flags: undefined;
      editMessage?: true;
      force?: true;
      peer: Api.TypeInputPeer;
      id: int;
      userId: Api.TypeInputUser;
      score: int;
    };
    export class SetInlineGameScore extends Request<Partial<{
      // flags: undefined;
      editMessage?: true;
      force?: true;
      id: Api.TypeInputBotInlineMessageID;
      userId: Api.TypeInputUser;
      score: int;
    }>, Bool> {
      // flags: undefined;
      editMessage?: true;
      force?: true;
      id: Api.TypeInputBotInlineMessageID;
      userId: Api.TypeInputUser;
      score: int;
    };
    export class GetGameHighScores extends Request<Partial<{
      peer: Api.TypeInputPeer;
      id: int;
      userId: Api.TypeInputUser;
    }>, messages.TypeHighScores> {
      peer: Api.TypeInputPeer;
      id: int;
      userId: Api.TypeInputUser;
    };
    export class GetInlineGameHighScores extends Request<Partial<{
      id: Api.TypeInputBotInlineMessageID;
      userId: Api.TypeInputUser;
    }>, messages.TypeHighScores> {
      id: Api.TypeInputBotInlineMessageID;
      userId: Api.TypeInputUser;
    };
    export class GetCommonChats extends Request<Partial<{
      userId: Api.TypeInputUser;
      maxId: int;
      limit: int;
    }>, messages.TypeChats> {
      userId: Api.TypeInputUser;
      maxId: int;
      limit: int;
    };
    export class GetAllChats extends Request<Partial<{
      exceptIds: int[];
    }>, messages.TypeChats> {
      exceptIds: int[];
    };
    export class GetWebPage extends Request<Partial<{
      url: string;
      hash: int;
    }>, Api.TypeWebPage> {
      url: string;
      hash: int;
    };
    export class ToggleDialogPin extends Request<Partial<{
      // flags: undefined;
      pinned?: true;
      peer: Api.TypeInputDialogPeer;
    }>, Bool> {
      // flags: undefined;
      pinned?: true;
      peer: Api.TypeInputDialogPeer;
    };
    export class ReorderPinnedDialogs extends Request<Partial<{
      // flags: undefined;
      force?: true;
      folderId: int;
      order: Api.TypeInputDialogPeer[];
    }>, Bool> {
      // flags: undefined;
      force?: true;
      folderId: int;
      order: Api.TypeInputDialogPeer[];
    };
    export class GetPinnedDialogs extends Request<Partial<{
      folderId: int;
    }>, messages.TypePeerDialogs> {
      folderId: int;
    };
    export class SetBotShippingResults extends Request<Partial<{
      // flags: undefined;
      queryId: long;
      error?: string;
      shippingOptions?: Api.TypeShippingOption[];
    }>, Bool> {
      // flags: undefined;
      queryId: long;
      error?: string;
      shippingOptions?: Api.TypeShippingOption[];
    };
    export class SetBotPrecheckoutResults extends Request<Partial<{
      // flags: undefined;
      success?: true;
      queryId: long;
      error?: string;
    }>, Bool> {
      // flags: undefined;
      success?: true;
      queryId: long;
      error?: string;
    };
    export class UploadMedia extends Request<Partial<{
      peer: Api.TypeInputPeer;
      media: Api.TypeInputMedia;
    }>, Api.TypeMessageMedia> {
      peer: Api.TypeInputPeer;
      media: Api.TypeInputMedia;
    };
    export class SendScreenshotNotification extends Request<Partial<{
      peer: Api.TypeInputPeer;
      replyToMsgId: int;
      randomId: long;
    }>, Api.TypeUpdates> {
      peer: Api.TypeInputPeer;
      replyToMsgId: int;
      randomId: long;
    };
    export class GetFavedStickers extends Request<Partial<{
      hash: int;
    }>, messages.TypeFavedStickers> {
      hash: int;
    };
    export class FaveSticker extends Request<Partial<{
      id: Api.TypeInputDocument;
      unfave: Bool;
    }>, Bool> {
      id: Api.TypeInputDocument;
      unfave: Bool;
    };
    export class GetUnreadMentions extends Request<Partial<{
      peer: Api.TypeInputPeer;
      offsetId: int;
      addOffset: int;
      limit: int;
      maxId: int;
      minId: int;
    }>, messages.TypeMessages> {
      peer: Api.TypeInputPeer;
      offsetId: int;
      addOffset: int;
      limit: int;
      maxId: int;
      minId: int;
    };
    export class ReadMentions extends Request<Partial<{
      peer: Api.TypeInputPeer;
    }>, messages.TypeAffectedHistory> {
      peer: Api.TypeInputPeer;
    };
    export class GetRecentLocations extends Request<Partial<{
      peer: Api.TypeInputPeer;
      limit: int;
      hash: int;
    }>, messages.TypeMessages> {
      peer: Api.TypeInputPeer;
      limit: int;
      hash: int;
    };
    export class SendMultiMedia extends Request<Partial<{
      // flags: undefined;
      silent?: true;
      background?: true;
      clearDraft?: true;
      peer: Api.TypeInputPeer;
      replyToMsgId?: int;
      multiMedia: Api.TypeInputSingleMedia[];
      scheduleDate?: int;
    }>, Api.TypeUpdates> {
      // flags: undefined;
      silent?: true;
      background?: true;
      clearDraft?: true;
      peer: Api.TypeInputPeer;
      replyToMsgId?: int;
      multiMedia: Api.TypeInputSingleMedia[];
      scheduleDate?: int;
    };
    export class UploadEncryptedFile extends Request<Partial<{
      peer: Api.TypeInputEncryptedChat;
      file: Api.TypeInputEncryptedFile;
    }>, Api.TypeEncryptedFile> {
      peer: Api.TypeInputEncryptedChat;
      file: Api.TypeInputEncryptedFile;
    };
    export class SearchStickerSets extends Request<Partial<{
      // flags: undefined;
      excludeFeatured?: true;
      q: string;
      hash: int;
    }>, messages.TypeFoundStickerSets> {
      // flags: undefined;
      excludeFeatured?: true;
      q: string;
      hash: int;
    };
    export class GetSplitRanges extends Request<void, Api.TypeMessageRange[]> {};
    export class MarkDialogUnread extends Request<Partial<{
      // flags: undefined;
      unread?: true;
      peer: Api.TypeInputDialogPeer;
    }>, Bool> {
      // flags: undefined;
      unread?: true;
      peer: Api.TypeInputDialogPeer;
    };
    export class GetDialogUnreadMarks extends Request<void, Api.TypeDialogPeer[]> {};
    export class ClearAllDrafts extends Request<void, Bool> {};
    export class UpdatePinnedMessage extends Request<Partial<{
      // flags: undefined;
      silent?: true;
      unpin?: true;
      pmOneside?: true;
      peer: Api.TypeInputPeer;
      id: int;
    }>, Api.TypeUpdates> {
      // flags: undefined;
      silent?: true;
      unpin?: true;
      pmOneside?: true;
      peer: Api.TypeInputPeer;
      id: int;
    };
    export class SendVote extends Request<Partial<{
      peer: Api.TypeInputPeer;
      msgId: int;
      options: bytes[];
    }>, Api.TypeUpdates> {
      peer: Api.TypeInputPeer;
      msgId: int;
      options: bytes[];
    };
    export class GetPollResults extends Request<Partial<{
      peer: Api.TypeInputPeer;
      msgId: int;
    }>, Api.TypeUpdates> {
      peer: Api.TypeInputPeer;
      msgId: int;
    };
    export class GetOnlines extends Request<Partial<{
      peer: Api.TypeInputPeer;
    }>, Api.TypeChatOnlines> {
      peer: Api.TypeInputPeer;
    };
    export class GetStatsURL extends Request<Partial<{
      // flags: undefined;
      dark?: true;
      peer: Api.TypeInputPeer;
      params: string;
    }>, Api.TypeStatsURL> {
      // flags: undefined;
      dark?: true;
      peer: Api.TypeInputPeer;
      params: string;
    };
    export class EditChatAbout extends Request<Partial<{
      peer: Api.TypeInputPeer;
      about: string;
    }>, Bool> {
      peer: Api.TypeInputPeer;
      about: string;
    };
    export class EditChatDefaultBannedRights extends Request<Partial<{
      peer: Api.TypeInputPeer;
      bannedRights: Api.TypeChatBannedRights;
    }>, Api.TypeUpdates> {
      peer: Api.TypeInputPeer;
      bannedRights: Api.TypeChatBannedRights;
    };
    export class GetEmojiKeywords extends Request<Partial<{
      langCode: string;
    }>, Api.TypeEmojiKeywordsDifference> {
      langCode: string;
    };
    export class GetEmojiKeywordsDifference extends Request<Partial<{
      langCode: string;
      fromVersion: int;
    }>, Api.TypeEmojiKeywordsDifference> {
      langCode: string;
      fromVersion: int;
    };
    export class GetEmojiKeywordsLanguages extends Request<Partial<{
      langCodes: string[];
    }>, Api.TypeEmojiLanguage[]> {
      langCodes: string[];
    };
    export class GetEmojiURL extends Request<Partial<{
      langCode: string;
    }>, Api.TypeEmojiURL> {
      langCode: string;
    };
    export class GetSearchCounters extends Request<Partial<{
      peer: Api.TypeInputPeer;
      filters: Api.TypeMessagesFilter[];
    }>, messages.TypeSearchCounter[]> {
      peer: Api.TypeInputPeer;
      filters: Api.TypeMessagesFilter[];
    };
    export class RequestUrlAuth extends Request<Partial<{
      // flags: undefined;
      peer?: Api.TypeInputPeer;
      msgId?: int;
      buttonId?: int;
      url?: string;
    } | void>, Api.TypeUrlAuthResult> {
      // flags: undefined;
      peer?: Api.TypeInputPeer;
      msgId?: int;
      buttonId?: int;
      url?: string;
    };
    export class AcceptUrlAuth extends Request<Partial<{
      // flags: undefined;
      writeAllowed?: true;
      peer?: Api.TypeInputPeer;
      msgId?: int;
      buttonId?: int;
      url?: string;
    } | void>, Api.TypeUrlAuthResult> {
      // flags: undefined;
      writeAllowed?: true;
      peer?: Api.TypeInputPeer;
      msgId?: int;
      buttonId?: int;
      url?: string;
    };
    export class HidePeerSettingsBar extends Request<Partial<{
      peer: Api.TypeInputPeer;
    }>, Bool> {
      peer: Api.TypeInputPeer;
    };
    export class GetScheduledHistory extends Request<Partial<{
      peer: Api.TypeInputPeer;
      hash: int;
    }>, messages.TypeMessages> {
      peer: Api.TypeInputPeer;
      hash: int;
    };
    export class GetScheduledMessages extends Request<Partial<{
      peer: Api.TypeInputPeer;
      id: int[];
    }>, messages.TypeMessages> {
      peer: Api.TypeInputPeer;
      id: int[];
    };
    export class SendScheduledMessages extends Request<Partial<{
      peer: Api.TypeInputPeer;
      id: int[];
    }>, Api.TypeUpdates> {
      peer: Api.TypeInputPeer;
      id: int[];
    };
    export class DeleteScheduledMessages extends Request<Partial<{
      peer: Api.TypeInputPeer;
      id: int[];
    }>, Api.TypeUpdates> {
      peer: Api.TypeInputPeer;
      id: int[];
    };
    export class GetPollVotes extends Request<Partial<{
      // flags: undefined;
      peer: Api.TypeInputPeer;
      id: int;
      option?: bytes;
      offset?: string;
      limit: int;
    }>, messages.TypeVotesList> {
      // flags: undefined;
      peer: Api.TypeInputPeer;
      id: int;
      option?: bytes;
      offset?: string;
      limit: int;
    };
    export class ToggleStickerSets extends Request<Partial<{
      // flags: undefined;
      uninstall?: true;
      archive?: true;
      unarchive?: true;
      stickersets: Api.TypeInputStickerSet[];
    }>, Bool> {
      // flags: undefined;
      uninstall?: true;
      archive?: true;
      unarchive?: true;
      stickersets: Api.TypeInputStickerSet[];
    };
    export class GetDialogFilters extends Request<void, Api.TypeDialogFilter[]> {};
    export class GetSuggestedDialogFilters extends Request<void, Api.TypeDialogFilterSuggested[]> {};
    export class UpdateDialogFilter extends Request<Partial<{
      // flags: undefined;
      id: int;
      filter?: Api.TypeDialogFilter;
    }>, Bool> {
      // flags: undefined;
      id: int;
      filter?: Api.TypeDialogFilter;
    };
    export class UpdateDialogFiltersOrder extends Request<Partial<{
      order: int[];
    }>, Bool> {
      order: int[];
    };
    export class GetOldFeaturedStickers extends Request<Partial<{
      offset: int;
      limit: int;
      hash: int;
    }>, messages.TypeFeaturedStickers> {
      offset: int;
      limit: int;
      hash: int;
    };
    export class GetReplies extends Request<Partial<{
      peer: Api.TypeInputPeer;
      msgId: int;
      offsetId: int;
      offsetDate: int;
      addOffset: int;
      limit: int;
      maxId: int;
      minId: int;
      hash: int;
    }>, messages.TypeMessages> {
      peer: Api.TypeInputPeer;
      msgId: int;
      offsetId: int;
      offsetDate: int;
      addOffset: int;
      limit: int;
      maxId: int;
      minId: int;
      hash: int;
    };
    export class GetDiscussionMessage extends Request<Partial<{
      peer: Api.TypeInputPeer;
      msgId: int;
    }>, messages.TypeDiscussionMessage> {
      peer: Api.TypeInputPeer;
      msgId: int;
    };
    export class ReadDiscussion extends Request<Partial<{
      peer: Api.TypeInputPeer;
      msgId: int;
      readMaxId: int;
    }>, Bool> {
      peer: Api.TypeInputPeer;
      msgId: int;
      readMaxId: int;
    };
    export class UnpinAllMessages extends Request<Partial<{
      peer: Api.TypeInputPeer;
    }>, messages.TypeAffectedHistory> {
      peer: Api.TypeInputPeer;
    };
    export class DeleteChat extends Request<Partial<{
      chatId: int;
    }>, Bool> {
      chatId: int;
    };
    export class DeletePhoneCallHistory extends Request<Partial<{
      // flags: undefined;
      revoke?: true;
    } | void>, messages.TypeAffectedFoundMessages> {
      // flags: undefined;
      revoke?: true;
    };
    export class CheckHistoryImport extends Request<Partial<{
      importHead: string;
    }>, messages.TypeHistoryImportParsed> {
      importHead: string;
    };
    export class InitHistoryImport extends Request<Partial<{
      peer: Api.TypeInputPeer;
      file: Api.TypeInputFile;
      mediaCount: int;
    }>, messages.TypeHistoryImport> {
      peer: Api.TypeInputPeer;
      file: Api.TypeInputFile;
      mediaCount: int;
    };
    export class UploadImportedMedia extends Request<Partial<{
      peer: Api.TypeInputPeer;
      importId: long;
      fileName: string;
      media: Api.TypeInputMedia;
    }>, Api.TypeMessageMedia> {
      peer: Api.TypeInputPeer;
      importId: long;
      fileName: string;
      media: Api.TypeInputMedia;
    };
    export class StartHistoryImport extends Request<Partial<{
      peer: Api.TypeInputPeer;
      importId: long;
    }>, Bool> {
      peer: Api.TypeInputPeer;
      importId: long;
    };
    export class GetExportedChatInvites extends Request<Partial<{
      // flags: undefined;
      revoked?: true;
      peer: Api.TypeInputPeer;
      adminId: Api.TypeInputUser;
      offsetDate?: int;
      offsetLink?: string;
      limit: int;
    }>, messages.TypeExportedChatInvites> {
      // flags: undefined;
      revoked?: true;
      peer: Api.TypeInputPeer;
      adminId: Api.TypeInputUser;
      offsetDate?: int;
      offsetLink?: string;
      limit: int;
    };
    export class GetExportedChatInvite extends Request<Partial<{
      peer: Api.TypeInputPeer;
      link: string;
    }>, messages.TypeExportedChatInvite> {
      peer: Api.TypeInputPeer;
      link: string;
    };
    export class EditExportedChatInvite extends Request<Partial<{
      // flags: undefined;
      revoked?: true;
      peer: Api.TypeInputPeer;
      link: string;
      expireDate?: int;
      usageLimit?: int;
    }>, messages.TypeExportedChatInvite> {
      // flags: undefined;
      revoked?: true;
      peer: Api.TypeInputPeer;
      link: string;
      expireDate?: int;
      usageLimit?: int;
    };
    export class DeleteRevokedExportedChatInvites extends Request<Partial<{
      peer: Api.TypeInputPeer;
      adminId: Api.TypeInputUser;
    }>, Bool> {
      peer: Api.TypeInputPeer;
      adminId: Api.TypeInputUser;
    };
    export class DeleteExportedChatInvite extends Request<Partial<{
      peer: Api.TypeInputPeer;
      link: string;
    }>, Bool> {
      peer: Api.TypeInputPeer;
      link: string;
    };
    export class GetAdminsWithInvites extends Request<Partial<{
      peer: Api.TypeInputPeer;
    }>, messages.TypeChatAdminsWithInvites> {
      peer: Api.TypeInputPeer;
    };
    export class GetChatInviteImporters extends Request<Partial<{
      peer: Api.TypeInputPeer;
      link: string;
      offsetDate: int;
      offsetUser: Api.TypeInputUser;
      limit: int;
    }>, messages.TypeChatInviteImporters> {
      peer: Api.TypeInputPeer;
      link: string;
      offsetDate: int;
      offsetUser: Api.TypeInputUser;
      limit: int;
    };
    export class SetHistoryTTL extends Request<Partial<{
      peer: Api.TypeInputPeer;
      period: int;
    }>, Api.TypeUpdates> {
      peer: Api.TypeInputPeer;
      period: int;
    };
    export class CheckHistoryImportPeer extends Request<Partial<{
      peer: Api.TypeInputPeer;
    }>, messages.TypeCheckedHistoryImportPeer> {
      peer: Api.TypeInputPeer;
    };
  }

  export namespace updates {
    export class GetState extends Request<void, updates.TypeState> {};
    export class GetDifference extends Request<Partial<{
      // flags: undefined;
      pts: int;
      ptsTotalLimit?: int;
      date: int;
      qts: int;
    }>, updates.TypeDifference> {
      // flags: undefined;
      pts: int;
      ptsTotalLimit?: int;
      date: int;
      qts: int;
    };
    export class GetChannelDifference extends Request<Partial<{
      // flags: undefined;
      force?: true;
      channel: Api.TypeInputChannel;
      filter: Api.TypeChannelMessagesFilter;
      pts: int;
      limit: int;
    }>, updates.TypeChannelDifference> {
      // flags: undefined;
      force?: true;
      channel: Api.TypeInputChannel;
      filter: Api.TypeChannelMessagesFilter;
      pts: int;
      limit: int;
    };
  }

  export namespace photos {
    export class UpdateProfilePhoto extends Request<Partial<{
      id: Api.TypeInputPhoto;
    }>, photos.TypePhoto> {
      id: Api.TypeInputPhoto;
    };
    export class UploadProfilePhoto extends Request<Partial<{
      // flags: undefined;
      file?: Api.TypeInputFile;
      video?: Api.TypeInputFile;
      videoStartTs?: double;
    } | void>, photos.TypePhoto> {
      // flags: undefined;
      file?: Api.TypeInputFile;
      video?: Api.TypeInputFile;
      videoStartTs?: double;
    };
    export class DeletePhotos extends Request<Partial<{
      id: Api.TypeInputPhoto[];
    }>, long[]> {
      id: Api.TypeInputPhoto[];
    };
    export class GetUserPhotos extends Request<Partial<{
      userId: Api.TypeInputUser;
      offset: int;
      maxId: long;
      limit: int;
    }>, photos.TypePhotos> {
      userId: Api.TypeInputUser;
      offset: int;
      maxId: long;
      limit: int;
    };
  }

  export namespace upload {
    export class SaveFilePart extends Request<Partial<{
      fileId: long;
      filePart: int;
      bytes: bytes;
    }>, Bool> {
      fileId: long;
      filePart: int;
      bytes: bytes;
    };
    export class GetFile extends Request<Partial<{
      // flags: undefined;
      precise?: true;
      cdnSupported?: true;
      location: Api.TypeInputFileLocation;
      offset: int;
      limit: int;
    }>, upload.TypeFile> {
      // flags: undefined;
      precise?: true;
      cdnSupported?: true;
      location: Api.TypeInputFileLocation;
      offset: int;
      limit: int;
    };
    export class SaveBigFilePart extends Request<Partial<{
      fileId: long;
      filePart: int;
      fileTotalParts: int;
      bytes: bytes;
    }>, Bool> {
      fileId: long;
      filePart: int;
      fileTotalParts: int;
      bytes: bytes;
    };
    export class GetWebFile extends Request<Partial<{
      location: Api.TypeInputWebFileLocation;
      offset: int;
      limit: int;
    }>, upload.TypeWebFile> {
      location: Api.TypeInputWebFileLocation;
      offset: int;
      limit: int;
    };
    export class GetCdnFile extends Request<Partial<{
      fileToken: bytes;
      offset: int;
      limit: int;
    }>, upload.TypeCdnFile> {
      fileToken: bytes;
      offset: int;
      limit: int;
    };
    export class ReuploadCdnFile extends Request<Partial<{
      fileToken: bytes;
      requestToken: bytes;
    }>, Api.TypeFileHash[]> {
      fileToken: bytes;
      requestToken: bytes;
    };
    export class GetCdnFileHashes extends Request<Partial<{
      fileToken: bytes;
      offset: int;
    }>, Api.TypeFileHash[]> {
      fileToken: bytes;
      offset: int;
    };
    export class GetFileHashes extends Request<Partial<{
      location: Api.TypeInputFileLocation;
      offset: int;
    }>, Api.TypeFileHash[]> {
      location: Api.TypeInputFileLocation;
      offset: int;
    };
  }

  export namespace help {
    export class GetConfig extends Request<void, Api.TypeConfig> {};
    export class GetNearestDc extends Request<void, Api.TypeNearestDc> {};
    export class GetAppUpdate extends Request<Partial<{
      source: string;
    }>, help.TypeAppUpdate> {
      source: string;
    };
    export class GetInviteText extends Request<void, help.TypeInviteText> {};
    export class GetSupport extends Request<void, help.TypeSupport> {};
    export class GetAppChangelog extends Request<Partial<{
      prevAppVersion: string;
    }>, Api.TypeUpdates> {
      prevAppVersion: string;
    };
    export class SetBotUpdatesStatus extends Request<Partial<{
      pendingUpdatesCount: int;
      message: string;
    }>, Bool> {
      pendingUpdatesCount: int;
      message: string;
    };
    export class GetCdnConfig extends Request<void, Api.TypeCdnConfig> {};
    export class GetRecentMeUrls extends Request<Partial<{
      referer: string;
    }>, help.TypeRecentMeUrls> {
      referer: string;
    };
    export class GetTermsOfServiceUpdate extends Request<void, help.TypeTermsOfServiceUpdate> {};
    export class AcceptTermsOfService extends Request<Partial<{
      id: Api.TypeDataJSON;
    }>, Bool> {
      id: Api.TypeDataJSON;
    };
    export class GetDeepLinkInfo extends Request<Partial<{
      path: string;
    }>, help.TypeDeepLinkInfo> {
      path: string;
    };
    export class GetAppConfig extends Request<void, Api.TypeJSONValue> {};
    export class SaveAppLog extends Request<Partial<{
      events: Api.TypeInputAppEvent[];
    }>, Bool> {
      events: Api.TypeInputAppEvent[];
    };
    export class GetPassportConfig extends Request<Partial<{
      hash: int;
    }>, help.TypePassportConfig> {
      hash: int;
    };
    export class GetSupportName extends Request<void, help.TypeSupportName> {};
    export class GetUserInfo extends Request<Partial<{
      userId: Api.TypeInputUser;
    }>, help.TypeUserInfo> {
      userId: Api.TypeInputUser;
    };
    export class EditUserInfo extends Request<Partial<{
      userId: Api.TypeInputUser;
      message: string;
      entities: Api.TypeMessageEntity[];
    }>, help.TypeUserInfo> {
      userId: Api.TypeInputUser;
      message: string;
      entities: Api.TypeMessageEntity[];
    };
    export class GetPromoData extends Request<void, help.TypePromoData> {};
    export class HidePromoData extends Request<Partial<{
      peer: Api.TypeInputPeer;
    }>, Bool> {
      peer: Api.TypeInputPeer;
    };
    export class DismissSuggestion extends Request<Partial<{
      peer: Api.TypeInputPeer;
      suggestion: string;
    }>, Bool> {
      peer: Api.TypeInputPeer;
      suggestion: string;
    };
    export class GetCountriesList extends Request<Partial<{
      langCode: string;
      hash: int;
    }>, help.TypeCountriesList> {
      langCode: string;
      hash: int;
    };
  }

  export namespace channels {
    export class ReadHistory extends Request<Partial<{
      channel: Api.TypeInputChannel;
      maxId: int;
    }>, Bool> {
      channel: Api.TypeInputChannel;
      maxId: int;
    };
    export class DeleteMessages extends Request<Partial<{
      channel: Api.TypeInputChannel;
      id: int[];
    }>, messages.TypeAffectedMessages> {
      channel: Api.TypeInputChannel;
      id: int[];
    };
    export class DeleteUserHistory extends Request<Partial<{
      channel: Api.TypeInputChannel;
      userId: Api.TypeInputUser;
    }>, messages.TypeAffectedHistory> {
      channel: Api.TypeInputChannel;
      userId: Api.TypeInputUser;
    };
    export class ReportSpam extends Request<Partial<{
      channel: Api.TypeInputChannel;
      userId: Api.TypeInputUser;
      id: int[];
    }>, Bool> {
      channel: Api.TypeInputChannel;
      userId: Api.TypeInputUser;
      id: int[];
    };
    export class GetMessages extends Request<Partial<{
      channel: Api.TypeInputChannel;
      id: Api.TypeInputMessage[];
    }>, messages.TypeMessages> {
      channel: Api.TypeInputChannel;
      id: Api.TypeInputMessage[];
    };
    export class GetParticipants extends Request<Partial<{
      channel: Api.TypeInputChannel;
      filter: Api.TypeChannelParticipantsFilter;
      offset: int;
      limit: int;
      hash: int;
    }>, channels.TypeChannelParticipants> {
      channel: Api.TypeInputChannel;
      filter: Api.TypeChannelParticipantsFilter;
      offset: int;
      limit: int;
      hash: int;
    };
    export class GetParticipant extends Request<Partial<{
      channel: Api.TypeInputChannel;
      participant: Api.TypeInputPeer;
    }>, channels.TypeChannelParticipant> {
      channel: Api.TypeInputChannel;
      participant: Api.TypeInputPeer;
    };
    export class GetChannels extends Request<Partial<{
      id: Api.TypeInputChannel[];
    }>, messages.TypeChats> {
      id: Api.TypeInputChannel[];
    };
    export class GetFullChannel extends Request<Partial<{
      channel: Api.TypeInputChannel;
    }>, messages.TypeChatFull> {
      channel: Api.TypeInputChannel;
    };
    export class CreateChannel extends Request<Partial<{
      // flags: undefined;
      broadcast?: true;
      megagroup?: true;
      forImport?: true;
      title: string;
      about: string;
      geoPoint?: Api.TypeInputGeoPoint;
      address?: string;
    }>, Api.TypeUpdates> {
      // flags: undefined;
      broadcast?: true;
      megagroup?: true;
      forImport?: true;
      title: string;
      about: string;
      geoPoint?: Api.TypeInputGeoPoint;
      address?: string;
    };
    export class EditAdmin extends Request<Partial<{
      channel: Api.TypeInputChannel;
      userId: Api.TypeInputUser;
      adminRights: Api.TypeChatAdminRights;
      rank: string;
    }>, Api.TypeUpdates> {
      channel: Api.TypeInputChannel;
      userId: Api.TypeInputUser;
      adminRights: Api.TypeChatAdminRights;
      rank: string;
    };
    export class EditTitle extends Request<Partial<{
      channel: Api.TypeInputChannel;
      title: string;
    }>, Api.TypeUpdates> {
      channel: Api.TypeInputChannel;
      title: string;
    };
    export class EditPhoto extends Request<Partial<{
      channel: Api.TypeInputChannel;
      photo: Api.TypeInputChatPhoto;
    }>, Api.TypeUpdates> {
      channel: Api.TypeInputChannel;
      photo: Api.TypeInputChatPhoto;
    };
    export class CheckUsername extends Request<Partial<{
      channel: Api.TypeInputChannel;
      username: string;
    }>, Bool> {
      channel: Api.TypeInputChannel;
      username: string;
    };
    export class UpdateUsername extends Request<Partial<{
      channel: Api.TypeInputChannel;
      username: string;
    }>, Bool> {
      channel: Api.TypeInputChannel;
      username: string;
    };
    export class JoinChannel extends Request<Partial<{
      channel: Api.TypeInputChannel;
    }>, Api.TypeUpdates> {
      channel: Api.TypeInputChannel;
    };
    export class LeaveChannel extends Request<Partial<{
      channel: Api.TypeInputChannel;
    }>, Api.TypeUpdates> {
      channel: Api.TypeInputChannel;
    };
    export class InviteToChannel extends Request<Partial<{
      channel: Api.TypeInputChannel;
      users: Api.TypeInputUser[];
    }>, Api.TypeUpdates> {
      channel: Api.TypeInputChannel;
      users: Api.TypeInputUser[];
    };
    export class DeleteChannel extends Request<Partial<{
      channel: Api.TypeInputChannel;
    }>, Api.TypeUpdates> {
      channel: Api.TypeInputChannel;
    };
    export class ExportMessageLink extends Request<Partial<{
      // flags: undefined;
      grouped?: true;
      thread?: true;
      channel: Api.TypeInputChannel;
      id: int;
    }>, Api.TypeExportedMessageLink> {
      // flags: undefined;
      grouped?: true;
      thread?: true;
      channel: Api.TypeInputChannel;
      id: int;
    };
    export class ToggleSignatures extends Request<Partial<{
      channel: Api.TypeInputChannel;
      enabled: Bool;
    }>, Api.TypeUpdates> {
      channel: Api.TypeInputChannel;
      enabled: Bool;
    };
    export class GetAdminedPublicChannels extends Request<Partial<{
      // flags: undefined;
      byLocation?: true;
      checkLimit?: true;
    } | void>, messages.TypeChats> {
      // flags: undefined;
      byLocation?: true;
      checkLimit?: true;
    };
    export class EditBanned extends Request<Partial<{
      channel: Api.TypeInputChannel;
      participant: Api.TypeInputPeer;
      bannedRights: Api.TypeChatBannedRights;
    }>, Api.TypeUpdates> {
      channel: Api.TypeInputChannel;
      participant: Api.TypeInputPeer;
      bannedRights: Api.TypeChatBannedRights;
    };
    export class GetAdminLog extends Request<Partial<{
      // flags: undefined;
      channel: Api.TypeInputChannel;
      q: string;
      eventsFilter?: Api.TypeChannelAdminLogEventsFilter;
      admins?: Api.TypeInputUser[];
      maxId: long;
      minId: long;
      limit: int;
    }>, channels.TypeAdminLogResults> {
      // flags: undefined;
      channel: Api.TypeInputChannel;
      q: string;
      eventsFilter?: Api.TypeChannelAdminLogEventsFilter;
      admins?: Api.TypeInputUser[];
      maxId: long;
      minId: long;
      limit: int;
    };
    export class SetStickers extends Request<Partial<{
      channel: Api.TypeInputChannel;
      stickerset: Api.TypeInputStickerSet;
    }>, Bool> {
      channel: Api.TypeInputChannel;
      stickerset: Api.TypeInputStickerSet;
    };
    export class ReadMessageContents extends Request<Partial<{
      channel: Api.TypeInputChannel;
      id: int[];
    }>, Bool> {
      channel: Api.TypeInputChannel;
      id: int[];
    };
    export class DeleteHistory extends Request<Partial<{
      channel: Api.TypeInputChannel;
      maxId: int;
    }>, Bool> {
      channel: Api.TypeInputChannel;
      maxId: int;
    };
    export class TogglePreHistoryHidden extends Request<Partial<{
      channel: Api.TypeInputChannel;
      enabled: Bool;
    }>, Api.TypeUpdates> {
      channel: Api.TypeInputChannel;
      enabled: Bool;
    };
    export class GetLeftChannels extends Request<Partial<{
      offset: int;
    }>, messages.TypeChats> {
      offset: int;
    };
    export class GetGroupsForDiscussion extends Request<void, messages.TypeChats> {};
    export class SetDiscussionGroup extends Request<Partial<{
      broadcast: Api.TypeInputChannel;
      group: Api.TypeInputChannel;
    }>, Bool> {
      broadcast: Api.TypeInputChannel;
      group: Api.TypeInputChannel;
    };
    export class EditCreator extends Request<Partial<{
      channel: Api.TypeInputChannel;
      userId: Api.TypeInputUser;
      password: Api.TypeInputCheckPasswordSRP;
    }>, Api.TypeUpdates> {
      channel: Api.TypeInputChannel;
      userId: Api.TypeInputUser;
      password: Api.TypeInputCheckPasswordSRP;
    };
    export class EditLocation extends Request<Partial<{
      channel: Api.TypeInputChannel;
      geoPoint: Api.TypeInputGeoPoint;
      address: string;
    }>, Bool> {
      channel: Api.TypeInputChannel;
      geoPoint: Api.TypeInputGeoPoint;
      address: string;
    };
    export class ToggleSlowMode extends Request<Partial<{
      channel: Api.TypeInputChannel;
      seconds: int;
    }>, Api.TypeUpdates> {
      channel: Api.TypeInputChannel;
      seconds: int;
    };
    export class GetInactiveChannels extends Request<void, messages.TypeInactiveChats> {};
    export class ConvertToGigagroup extends Request<Partial<{
      channel: Api.TypeInputChannel;
    }>, Api.TypeUpdates> {
      channel: Api.TypeInputChannel;
    };
  }

  export namespace bots {
    export class SendCustomRequest extends Request<Partial<{
      customMethod: string;
      params: Api.TypeDataJSON;
    }>, Api.TypeDataJSON> {
      customMethod: string;
      params: Api.TypeDataJSON;
    };
    export class AnswerWebhookJSONQuery extends Request<Partial<{
      queryId: long;
      data: Api.TypeDataJSON;
    }>, Bool> {
      queryId: long;
      data: Api.TypeDataJSON;
    };
    export class SetBotCommands extends Request<Partial<{
      commands: Api.TypeBotCommand[];
    }>, Bool> {
      commands: Api.TypeBotCommand[];
    };
  }

  export namespace payments {
    export class GetPaymentForm extends Request<Partial<{
      // flags: undefined;
      peer: Api.TypeInputPeer;
      msgId: int;
      themeParams?: Api.TypeDataJSON;
    }>, payments.TypePaymentForm> {
      // flags: undefined;
      peer: Api.TypeInputPeer;
      msgId: int;
      themeParams?: Api.TypeDataJSON;
    };
    export class GetPaymentReceipt extends Request<Partial<{
      peer: Api.TypeInputPeer;
      msgId: int;
    }>, payments.TypePaymentReceipt> {
      peer: Api.TypeInputPeer;
      msgId: int;
    };
    export class ValidateRequestedInfo extends Request<Partial<{
      // flags: undefined;
      save?: true;
      peer: Api.TypeInputPeer;
      msgId: int;
      info: Api.TypePaymentRequestedInfo;
    }>, payments.TypeValidatedRequestedInfo> {
      // flags: undefined;
      save?: true;
      peer: Api.TypeInputPeer;
      msgId: int;
      info: Api.TypePaymentRequestedInfo;
    };
    export class SendPaymentForm extends Request<Partial<{
      // flags: undefined;
      formId: long;
      peer: Api.TypeInputPeer;
      msgId: int;
      requestedInfoId?: string;
      shippingOptionId?: string;
      credentials: Api.TypeInputPaymentCredentials;
      tipAmount?: long;
    }>, payments.TypePaymentResult> {
      // flags: undefined;
      formId: long;
      peer: Api.TypeInputPeer;
      msgId: int;
      requestedInfoId?: string;
      shippingOptionId?: string;
      credentials: Api.TypeInputPaymentCredentials;
      tipAmount?: long;
    };
    export class GetSavedInfo extends Request<void, payments.TypeSavedInfo> {};
    export class ClearSavedInfo extends Request<Partial<{
      // flags: undefined;
      credentials?: true;
      info?: true;
    } | void>, Bool> {
      // flags: undefined;
      credentials?: true;
      info?: true;
    };
    export class GetBankCardData extends Request<Partial<{
      number: string;
    }>, payments.TypeBankCardData> {
      number: string;
    };
  }

  export namespace stickers {
    export class CreateStickerSet extends Request<Partial<{
      // flags: undefined;
      masks?: true;
      animated?: true;
      userId: Api.TypeInputUser;
      title: string;
      shortName: string;
      thumb?: Api.TypeInputDocument;
      stickers: Api.TypeInputStickerSetItem[];
    }>, messages.TypeStickerSet> {
      // flags: undefined;
      masks?: true;
      animated?: true;
      userId: Api.TypeInputUser;
      title: string;
      shortName: string;
      thumb?: Api.TypeInputDocument;
      stickers: Api.TypeInputStickerSetItem[];
    };
    export class RemoveStickerFromSet extends Request<Partial<{
      sticker: Api.TypeInputDocument;
    }>, messages.TypeStickerSet> {
      sticker: Api.TypeInputDocument;
    };
    export class ChangeStickerPosition extends Request<Partial<{
      sticker: Api.TypeInputDocument;
      position: int;
    }>, messages.TypeStickerSet> {
      sticker: Api.TypeInputDocument;
      position: int;
    };
    export class AddStickerToSet extends Request<Partial<{
      stickerset: Api.TypeInputStickerSet;
      sticker: Api.TypeInputStickerSetItem;
    }>, messages.TypeStickerSet> {
      stickerset: Api.TypeInputStickerSet;
      sticker: Api.TypeInputStickerSetItem;
    };
    export class SetStickerSetThumb extends Request<Partial<{
      stickerset: Api.TypeInputStickerSet;
      thumb: Api.TypeInputDocument;
    }>, messages.TypeStickerSet> {
      stickerset: Api.TypeInputStickerSet;
      thumb: Api.TypeInputDocument;
    };
  }

  export namespace phone {
    export class GetCallConfig extends Request<void, Api.TypeDataJSON> {};
    export class RequestCall extends Request<Partial<{
      // flags: undefined;
      video?: true;
      userId: Api.TypeInputUser;
      randomId: int;
      gAHash: bytes;
      protocol: Api.TypePhoneCallProtocol;
    }>, phone.TypePhoneCall> {
      // flags: undefined;
      video?: true;
      userId: Api.TypeInputUser;
      randomId: int;
      gAHash: bytes;
      protocol: Api.TypePhoneCallProtocol;
    };
    export class AcceptCall extends Request<Partial<{
      peer: Api.TypeInputPhoneCall;
      gB: bytes;
      protocol: Api.TypePhoneCallProtocol;
    }>, phone.TypePhoneCall> {
      peer: Api.TypeInputPhoneCall;
      gB: bytes;
      protocol: Api.TypePhoneCallProtocol;
    };
    export class ConfirmCall extends Request<Partial<{
      peer: Api.TypeInputPhoneCall;
      gA: bytes;
      keyFingerprint: long;
      protocol: Api.TypePhoneCallProtocol;
    }>, phone.TypePhoneCall> {
      peer: Api.TypeInputPhoneCall;
      gA: bytes;
      keyFingerprint: long;
      protocol: Api.TypePhoneCallProtocol;
    };
    export class ReceivedCall extends Request<Partial<{
      peer: Api.TypeInputPhoneCall;
    }>, Bool> {
      peer: Api.TypeInputPhoneCall;
    };
    export class DiscardCall extends Request<Partial<{
      // flags: undefined;
      video?: true;
      peer: Api.TypeInputPhoneCall;
      duration: int;
      reason: Api.TypePhoneCallDiscardReason;
      connectionId: long;
    }>, Api.TypeUpdates> {
      // flags: undefined;
      video?: true;
      peer: Api.TypeInputPhoneCall;
      duration: int;
      reason: Api.TypePhoneCallDiscardReason;
      connectionId: long;
    };
    export class SetCallRating extends Request<Partial<{
      // flags: undefined;
      userInitiative?: true;
      peer: Api.TypeInputPhoneCall;
      rating: int;
      comment: string;
    }>, Api.TypeUpdates> {
      // flags: undefined;
      userInitiative?: true;
      peer: Api.TypeInputPhoneCall;
      rating: int;
      comment: string;
    };
    export class SaveCallDebug extends Request<Partial<{
      peer: Api.TypeInputPhoneCall;
      debug: Api.TypeDataJSON;
    }>, Bool> {
      peer: Api.TypeInputPhoneCall;
      debug: Api.TypeDataJSON;
    };
    export class SendSignalingData extends Request<Partial<{
      peer: Api.TypeInputPhoneCall;
      data: bytes;
    }>, Bool> {
      peer: Api.TypeInputPhoneCall;
      data: bytes;
    };
    export class CreateGroupCall extends Request<Partial<{
      // flags: undefined;
      peer: Api.TypeInputPeer;
      randomId: int;
      title?: string;
      scheduleDate?: int;
    }>, Api.TypeUpdates> {
      // flags: undefined;
      peer: Api.TypeInputPeer;
      randomId: int;
      title?: string;
      scheduleDate?: int;
    };
    export class JoinGroupCall extends Request<Partial<{
      // flags: undefined;
      muted?: true;
      call: Api.TypeInputGroupCall;
      joinAs: Api.TypeInputPeer;
      inviteHash?: string;
      params: Api.TypeDataJSON;
    }>, Api.TypeUpdates> {
      // flags: undefined;
      muted?: true;
      call: Api.TypeInputGroupCall;
      joinAs: Api.TypeInputPeer;
      inviteHash?: string;
      params: Api.TypeDataJSON;
    };
    export class LeaveGroupCall extends Request<Partial<{
      call: Api.TypeInputGroupCall;
      source: int;
    }>, Api.TypeUpdates> {
      call: Api.TypeInputGroupCall;
      source: int;
    };
    export class InviteToGroupCall extends Request<Partial<{
      call: Api.TypeInputGroupCall;
      users: Api.TypeInputUser[];
    }>, Api.TypeUpdates> {
      call: Api.TypeInputGroupCall;
      users: Api.TypeInputUser[];
    };
    export class DiscardGroupCall extends Request<Partial<{
      call: Api.TypeInputGroupCall;
    }>, Api.TypeUpdates> {
      call: Api.TypeInputGroupCall;
    };
    export class ToggleGroupCallSettings extends Request<Partial<{
      // flags: undefined;
      resetInviteHash?: true;
      call: Api.TypeInputGroupCall;
      joinMuted?: Bool;
    }>, Api.TypeUpdates> {
      // flags: undefined;
      resetInviteHash?: true;
      call: Api.TypeInputGroupCall;
      joinMuted?: Bool;
    };
    export class GetGroupCall extends Request<Partial<{
      call: Api.TypeInputGroupCall;
    }>, phone.TypeGroupCall> {
      call: Api.TypeInputGroupCall;
    };
    export class GetGroupParticipants extends Request<Partial<{
      call: Api.TypeInputGroupCall;
      ids: Api.TypeInputPeer[];
      sources: int[];
      offset: string;
      limit: int;
    }>, phone.TypeGroupParticipants> {
      call: Api.TypeInputGroupCall;
      ids: Api.TypeInputPeer[];
      sources: int[];
      offset: string;
      limit: int;
    };
    export class CheckGroupCall extends Request<Partial<{
      call: Api.TypeInputGroupCall;
      source: int;
    }>, Bool> {
      call: Api.TypeInputGroupCall;
      source: int;
    };
    export class ToggleGroupCallRecord extends Request<Partial<{
      // flags: undefined;
      start?: true;
      call: Api.TypeInputGroupCall;
      title?: string;
    }>, Api.TypeUpdates> {
      // flags: undefined;
      start?: true;
      call: Api.TypeInputGroupCall;
      title?: string;
    };
    export class EditGroupCallParticipant extends Request<Partial<{
      // flags: undefined;
      muted?: true;
      call: Api.TypeInputGroupCall;
      participant: Api.TypeInputPeer;
      volume?: int;
      raiseHand?: Bool;
    }>, Api.TypeUpdates> {
      // flags: undefined;
      muted?: true;
      call: Api.TypeInputGroupCall;
      participant: Api.TypeInputPeer;
      volume?: int;
      raiseHand?: Bool;
    };
    export class EditGroupCallTitle extends Request<Partial<{
      call: Api.TypeInputGroupCall;
      title: string;
    }>, Api.TypeUpdates> {
      call: Api.TypeInputGroupCall;
      title: string;
    };
    export class GetGroupCallJoinAs extends Request<Partial<{
      peer: Api.TypeInputPeer;
    }>, phone.TypeJoinAsPeers> {
      peer: Api.TypeInputPeer;
    };
    export class ExportGroupCallInvite extends Request<Partial<{
      // flags: undefined;
      canSelfUnmute?: true;
      call: Api.TypeInputGroupCall;
    }>, phone.TypeExportedGroupCallInvite> {
      // flags: undefined;
      canSelfUnmute?: true;
      call: Api.TypeInputGroupCall;
    };
    export class ToggleGroupCallStartSubscription extends Request<Partial<{
      call: Api.TypeInputGroupCall;
      subscribed: Bool;
    }>, Api.TypeUpdates> {
      call: Api.TypeInputGroupCall;
      subscribed: Bool;
    };
    export class StartScheduledGroupCall extends Request<Partial<{
      call: Api.TypeInputGroupCall;
    }>, Api.TypeUpdates> {
      call: Api.TypeInputGroupCall;
    };
    export class SaveDefaultGroupCallJoinAs extends Request<Partial<{
      peer: Api.TypeInputPeer;
      joinAs: Api.TypeInputPeer;
    }>, Bool> {
      peer: Api.TypeInputPeer;
      joinAs: Api.TypeInputPeer;
    };
  }

  export namespace langpack {
    export class GetLangPack extends Request<Partial<{
      langPack: string;
      langCode: string;
    }>, Api.TypeLangPackDifference> {
      langPack: string;
      langCode: string;
    };
    export class GetStrings extends Request<Partial<{
      langPack: string;
      langCode: string;
      keys: string[];
    }>, Api.TypeLangPackString[]> {
      langPack: string;
      langCode: string;
      keys: string[];
    };
    export class GetDifference extends Request<Partial<{
      langPack: string;
      langCode: string;
      fromVersion: int;
    }>, Api.TypeLangPackDifference> {
      langPack: string;
      langCode: string;
      fromVersion: int;
    };
    export class GetLanguages extends Request<Partial<{
      langPack: string;
    }>, Api.TypeLangPackLanguage[]> {
      langPack: string;
    };
    export class GetLanguage extends Request<Partial<{
      langPack: string;
      langCode: string;
    }>, Api.TypeLangPackLanguage> {
      langPack: string;
      langCode: string;
    };
  }

  export namespace folders {
    export class EditPeerFolders extends Request<Partial<{
      folderPeers: Api.TypeInputFolderPeer[];
    }>, Api.TypeUpdates> {
      folderPeers: Api.TypeInputFolderPeer[];
    };
    export class DeleteFolder extends Request<Partial<{
      folderId: int;
    }>, Api.TypeUpdates> {
      folderId: int;
    };
  }

  export namespace stats {
    export class GetBroadcastStats extends Request<Partial<{
      // flags: undefined;
      dark?: true;
      channel: Api.TypeInputChannel;
    }>, stats.TypeBroadcastStats> {
      // flags: undefined;
      dark?: true;
      channel: Api.TypeInputChannel;
    };
    export class LoadAsyncGraph extends Request<Partial<{
      // flags: undefined;
      token: string;
      x?: long;
    }>, Api.TypeStatsGraph> {
      // flags: undefined;
      token: string;
      x?: long;
    };
    export class GetMegagroupStats extends Request<Partial<{
      // flags: undefined;
      dark?: true;
      channel: Api.TypeInputChannel;
    }>, stats.TypeMegagroupStats> {
      // flags: undefined;
      dark?: true;
      channel: Api.TypeInputChannel;
    };
    export class GetMessagePublicForwards extends Request<Partial<{
      channel: Api.TypeInputChannel;
      msgId: int;
      offsetRate: int;
      offsetPeer: Api.TypeInputPeer;
      offsetId: int;
      limit: int;
    }>, messages.TypeMessages> {
      channel: Api.TypeInputChannel;
      msgId: int;
      offsetRate: int;
      offsetPeer: Api.TypeInputPeer;
      offsetId: int;
      limit: int;
    };
    export class GetMessageStats extends Request<Partial<{
      // flags: undefined;
      dark?: true;
      channel: Api.TypeInputChannel;
      msgId: int;
    }>, stats.TypeMessageStats> {
      // flags: undefined;
      dark?: true;
      channel: Api.TypeInputChannel;
      msgId: int;
    };
  }

  export type AnyRequest = InvokeAfterMsg | InvokeAfterMsgs | InitConnection | InvokeWithLayer | InvokeWithoutUpdates | InvokeWithMessagesRange | InvokeWithTakeout | ReqPq | ReqPqMulti | ReqDHParams | SetClientDHParams | DestroyAuthKey | RpcDropAnswer | GetFutureSalts | Ping | PingDelayDisconnect | DestroySession
    | auth.SendCode | auth.SignUp | auth.SignIn | auth.LogOut | auth.ResetAuthorizations | auth.ExportAuthorization | auth.ImportAuthorization | auth.BindTempAuthKey | auth.ImportBotAuthorization | auth.CheckPassword | auth.RequestPasswordRecovery | auth.RecoverPassword | auth.ResendCode | auth.CancelCode | auth.DropTempAuthKeys | auth.ExportLoginToken | auth.ImportLoginToken | auth.AcceptLoginToken
    | account.RegisterDevice | account.UnregisterDevice | account.UpdateNotifySettings | account.GetNotifySettings | account.ResetNotifySettings | account.UpdateProfile | account.UpdateStatus | account.GetWallPapers | account.ReportPeer | account.CheckUsername | account.UpdateUsername | account.GetPrivacy | account.SetPrivacy | account.DeleteAccount | account.GetAccountTTL | account.SetAccountTTL | account.SendChangePhoneCode | account.ChangePhone | account.UpdateDeviceLocked | account.GetAuthorizations | account.ResetAuthorization | account.GetPassword | account.GetPasswordSettings | account.UpdatePasswordSettings | account.SendConfirmPhoneCode | account.ConfirmPhone | account.GetTmpPassword | account.GetWebAuthorizations | account.ResetWebAuthorization | account.ResetWebAuthorizations | account.GetAllSecureValues | account.GetSecureValue | account.SaveSecureValue | account.DeleteSecureValue | account.GetAuthorizationForm | account.AcceptAuthorization | account.SendVerifyPhoneCode | account.VerifyPhone | account.SendVerifyEmailCode | account.VerifyEmail | account.InitTakeoutSession | account.FinishTakeoutSession | account.ConfirmPasswordEmail | account.ResendPasswordEmail | account.CancelPasswordEmail | account.GetContactSignUpNotification | account.SetContactSignUpNotification | account.GetNotifyExceptions | account.GetWallPaper | account.UploadWallPaper | account.SaveWallPaper | account.InstallWallPaper | account.ResetWallPapers | account.GetAutoDownloadSettings | account.SaveAutoDownloadSettings | account.UploadTheme | account.CreateTheme | account.UpdateTheme | account.SaveTheme | account.InstallTheme | account.GetTheme | account.GetThemes | account.SetContentSettings | account.GetContentSettings | account.GetMultiWallPapers | account.GetGlobalPrivacySettings | account.SetGlobalPrivacySettings | account.ReportProfilePhoto
    | users.GetUsers | users.GetFullUser | users.SetSecureValueErrors
    | contacts.GetContactIDs | contacts.GetStatuses | contacts.GetContacts | contacts.ImportContacts | contacts.DeleteContacts | contacts.DeleteByPhones | contacts.Block | contacts.Unblock | contacts.GetBlocked | contacts.Search | contacts.ResolveUsername | contacts.GetTopPeers | contacts.ResetTopPeerRating | contacts.ResetSaved | contacts.GetSaved | contacts.ToggleTopPeers | contacts.AddContact | contacts.AcceptContact | contacts.GetLocated | contacts.BlockFromReplies
    | messages.GetMessages | messages.GetDialogs | messages.GetHistory | messages.Search | messages.ReadHistory | messages.DeleteHistory | messages.DeleteMessages | messages.ReceivedMessages | messages.SetTyping | messages.SendMessage | messages.SendMedia | messages.ForwardMessages | messages.ReportSpam | messages.GetPeerSettings | messages.Report | messages.GetChats | messages.GetFullChat | messages.EditChatTitle | messages.EditChatPhoto | messages.AddChatUser | messages.DeleteChatUser | messages.CreateChat | messages.GetDhConfig | messages.RequestEncryption | messages.AcceptEncryption | messages.DiscardEncryption | messages.SetEncryptedTyping | messages.ReadEncryptedHistory | messages.SendEncrypted | messages.SendEncryptedFile | messages.SendEncryptedService | messages.ReceivedQueue | messages.ReportEncryptedSpam | messages.ReadMessageContents | messages.GetStickers | messages.GetAllStickers | messages.GetWebPagePreview | messages.ExportChatInvite | messages.CheckChatInvite | messages.ImportChatInvite | messages.GetStickerSet | messages.InstallStickerSet | messages.UninstallStickerSet | messages.StartBot | messages.GetMessagesViews | messages.EditChatAdmin | messages.MigrateChat | messages.SearchGlobal | messages.ReorderStickerSets | messages.GetDocumentByHash | messages.GetSavedGifs | messages.SaveGif | messages.GetInlineBotResults | messages.SetInlineBotResults | messages.SendInlineBotResult | messages.GetMessageEditData | messages.EditMessage | messages.EditInlineBotMessage | messages.GetBotCallbackAnswer | messages.SetBotCallbackAnswer | messages.GetPeerDialogs | messages.SaveDraft | messages.GetAllDrafts | messages.GetFeaturedStickers | messages.ReadFeaturedStickers | messages.GetRecentStickers | messages.SaveRecentSticker | messages.ClearRecentStickers | messages.GetArchivedStickers | messages.GetMaskStickers | messages.GetAttachedStickers | messages.SetGameScore | messages.SetInlineGameScore | messages.GetGameHighScores | messages.GetInlineGameHighScores | messages.GetCommonChats | messages.GetAllChats | messages.GetWebPage | messages.ToggleDialogPin | messages.ReorderPinnedDialogs | messages.GetPinnedDialogs | messages.SetBotShippingResults | messages.SetBotPrecheckoutResults | messages.UploadMedia | messages.SendScreenshotNotification | messages.GetFavedStickers | messages.FaveSticker | messages.GetUnreadMentions | messages.ReadMentions | messages.GetRecentLocations | messages.SendMultiMedia | messages.UploadEncryptedFile | messages.SearchStickerSets | messages.GetSplitRanges | messages.MarkDialogUnread | messages.GetDialogUnreadMarks | messages.ClearAllDrafts | messages.UpdatePinnedMessage | messages.SendVote | messages.GetPollResults | messages.GetOnlines | messages.GetStatsURL | messages.EditChatAbout | messages.EditChatDefaultBannedRights | messages.GetEmojiKeywords | messages.GetEmojiKeywordsDifference | messages.GetEmojiKeywordsLanguages | messages.GetEmojiURL | messages.GetSearchCounters | messages.RequestUrlAuth | messages.AcceptUrlAuth | messages.HidePeerSettingsBar | messages.GetScheduledHistory | messages.GetScheduledMessages | messages.SendScheduledMessages | messages.DeleteScheduledMessages | messages.GetPollVotes | messages.ToggleStickerSets | messages.GetDialogFilters | messages.GetSuggestedDialogFilters | messages.UpdateDialogFilter | messages.UpdateDialogFiltersOrder | messages.GetOldFeaturedStickers | messages.GetReplies | messages.GetDiscussionMessage | messages.ReadDiscussion | messages.UnpinAllMessages | messages.DeleteChat | messages.DeletePhoneCallHistory | messages.CheckHistoryImport | messages.InitHistoryImport | messages.UploadImportedMedia | messages.StartHistoryImport | messages.GetExportedChatInvites | messages.GetExportedChatInvite | messages.EditExportedChatInvite | messages.DeleteRevokedExportedChatInvites | messages.DeleteExportedChatInvite | messages.GetAdminsWithInvites | messages.GetChatInviteImporters | messages.SetHistoryTTL | messages.CheckHistoryImportPeer
    | updates.GetState | updates.GetDifference | updates.GetChannelDifference
    | photos.UpdateProfilePhoto | photos.UploadProfilePhoto | photos.DeletePhotos | photos.GetUserPhotos
    | upload.SaveFilePart | upload.GetFile | upload.SaveBigFilePart | upload.GetWebFile | upload.GetCdnFile | upload.ReuploadCdnFile | upload.GetCdnFileHashes | upload.GetFileHashes
    | help.GetConfig | help.GetNearestDc | help.GetAppUpdate | help.GetInviteText | help.GetSupport | help.GetAppChangelog | help.SetBotUpdatesStatus | help.GetCdnConfig | help.GetRecentMeUrls | help.GetTermsOfServiceUpdate | help.AcceptTermsOfService | help.GetDeepLinkInfo | help.GetAppConfig | help.SaveAppLog | help.GetPassportConfig | help.GetSupportName | help.GetUserInfo | help.EditUserInfo | help.GetPromoData | help.HidePromoData | help.DismissSuggestion | help.GetCountriesList
    | channels.ReadHistory | channels.DeleteMessages | channels.DeleteUserHistory | channels.ReportSpam | channels.GetMessages | channels.GetParticipants | channels.GetParticipant | channels.GetChannels | channels.GetFullChannel | channels.CreateChannel | channels.EditAdmin | channels.EditTitle | channels.EditPhoto | channels.CheckUsername | channels.UpdateUsername | channels.JoinChannel | channels.LeaveChannel | channels.InviteToChannel | channels.DeleteChannel | channels.ExportMessageLink | channels.ToggleSignatures | channels.GetAdminedPublicChannels | channels.EditBanned | channels.GetAdminLog | channels.SetStickers | channels.ReadMessageContents | channels.DeleteHistory | channels.TogglePreHistoryHidden | channels.GetLeftChannels | channels.GetGroupsForDiscussion | channels.SetDiscussionGroup | channels.EditCreator | channels.EditLocation | channels.ToggleSlowMode | channels.GetInactiveChannels | channels.ConvertToGigagroup
    | bots.SendCustomRequest | bots.AnswerWebhookJSONQuery | bots.SetBotCommands
    | payments.GetPaymentForm | payments.GetPaymentReceipt | payments.ValidateRequestedInfo | payments.SendPaymentForm | payments.GetSavedInfo | payments.ClearSavedInfo | payments.GetBankCardData
    | stickers.CreateStickerSet | stickers.RemoveStickerFromSet | stickers.ChangeStickerPosition | stickers.AddStickerToSet | stickers.SetStickerSetThumb
    | phone.GetCallConfig | phone.RequestCall | phone.AcceptCall | phone.ConfirmCall | phone.ReceivedCall | phone.DiscardCall | phone.SetCallRating | phone.SaveCallDebug | phone.SendSignalingData | phone.CreateGroupCall | phone.JoinGroupCall | phone.LeaveGroupCall | phone.InviteToGroupCall | phone.DiscardGroupCall | phone.ToggleGroupCallSettings | phone.GetGroupCall | phone.GetGroupParticipants | phone.CheckGroupCall | phone.ToggleGroupCallRecord | phone.EditGroupCallParticipant | phone.EditGroupCallTitle | phone.GetGroupCallJoinAs | phone.ExportGroupCallInvite | phone.ToggleGroupCallStartSubscription | phone.StartScheduledGroupCall | phone.SaveDefaultGroupCallJoinAs
    | langpack.GetLangPack | langpack.GetStrings | langpack.GetDifference | langpack.GetLanguages | langpack.GetLanguage
    | folders.EditPeerFolders | folders.DeleteFolder
    | stats.GetBroadcastStats | stats.LoadAsyncGraph | stats.GetMegagroupStats | stats.GetMessagePublicForwards | stats.GetMessageStats;

}
