// Code generated by TLParser; DO NOT EDIT. (c) @amarnathcjd

package telegram

import tl "github.com/amarnathcjd/gogram/internal/encoding/tl"

type AttachMenuBots interface {
	tl.Object
	ImplementsAttachMenuBots()
}

// Represents a list of bot mini apps that can be launched from the attachment menu »
type AttachMenuBotsObj struct {
	Hash  int64            // Hash used for caching, for more info click here
	Bots  []*AttachMenuBot // List of bot mini apps that can be launched from the attachment menu
	Users []User           // Info about related users/bots
}

func (*AttachMenuBotsObj) CRC() uint32 {
	return 0x3c4301c0
}

func (*AttachMenuBotsObj) ImplementsAttachMenuBots() {}

// The list of bot mini apps hasn't changed
type AttachMenuBotsNotModified struct{}

func (*AttachMenuBotsNotModified) CRC() uint32 {
	return 0xf1d88a5c
}

func (*AttachMenuBotsNotModified) ImplementsAttachMenuBots() {}

type BotApp interface {
	tl.Object
	ImplementsBotApp()
}

// Contains information about a direct link Mini App.
type BotAppObj struct {
	ID          int64    // bot mini app ID
	AccessHash  int64    // bot mini app access hash
	ShortName   string   // bot mini app short name, used to generate Direct Mini App deep links.
	Title       string   // bot mini app title.
	Description string   // bot mini app description.
	Photo       Photo    // bot mini app photo.
	Document    Document `tl:"flag:0"` // bot mini app animation.
	Hash        int64    // Hash to pass to messages.getBotApp, to avoid refetching bot app info if it hasn't changed.
}

func (*BotAppObj) CRC() uint32 {
	return 0x95fcd1d6
}

func (*BotAppObj) FlagIndex() int {
	return 0
}

func (*BotAppObj) ImplementsBotApp() {}

// Bot app info hasn't changed.
type BotAppNotModified struct{}

func (*BotAppNotModified) CRC() uint32 {
	return 0x5da674b7
}

func (*BotAppNotModified) ImplementsBotApp() {}

type BotCommandScope interface {
	tl.Object
	ImplementsBotCommandScope()
}

// The specified bot commands will be valid only for chat administrators, in all groups and supergroups.
type BotCommandScopeChatAdmins struct{}

func (*BotCommandScopeChatAdmins) CRC() uint32 {
	return 0xb9aa606a
}

func (*BotCommandScopeChatAdmins) ImplementsBotCommandScope() {}

// The specified bot commands will be valid in all groups and supergroups.
type BotCommandScopeChats struct{}

func (*BotCommandScopeChats) CRC() uint32 {
	return 0x6fe1a881
}

func (*BotCommandScopeChats) ImplementsBotCommandScope() {}

// The commands will be valid in all dialogs
type BotCommandScopeDefault struct{}

func (*BotCommandScopeDefault) CRC() uint32 {
	return 0x2f6cb2ab
}

func (*BotCommandScopeDefault) ImplementsBotCommandScope() {}

// The specified bot commands will be valid only in a specific dialog.
type BotCommandScopePeer struct {
	Peer InputPeer // The dialog
}

func (*BotCommandScopePeer) CRC() uint32 {
	return 0xdb9d897d
}

func (*BotCommandScopePeer) ImplementsBotCommandScope() {}

// The specified bot commands will be valid for all admins of the specified group or supergroup.
type BotCommandScopePeerAdmins struct {
	Peer InputPeer // The chat
}

func (*BotCommandScopePeerAdmins) CRC() uint32 {
	return 0x3fd863d1
}

func (*BotCommandScopePeerAdmins) ImplementsBotCommandScope() {}

// The specified bot commands will be valid only for a specific user in the specified group or supergroup.
type BotCommandScopePeerUser struct {
	Peer   InputPeer // The chat
	UserID InputUser // The user
}

func (*BotCommandScopePeerUser) CRC() uint32 {
	return 0xa1321f3
}

func (*BotCommandScopePeerUser) ImplementsBotCommandScope() {}

// The specified bot commands will only be valid in all private chats with users.
type BotCommandScopeUsers struct{}

func (*BotCommandScopeUsers) CRC() uint32 {
	return 0x3c4f04d8
}

func (*BotCommandScopeUsers) ImplementsBotCommandScope() {}

type BotInlineMessage interface {
	tl.Object
	ImplementsBotInlineMessage()
}

// Send whatever media is attached to the botInlineMediaResult
type BotInlineMessageMediaAuto struct {
	InvertMedia bool            `tl:"flag:3,encoded_in_bitflags"` // If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.
	Message     string          // Caption
	Entities    []MessageEntity `tl:"flag:1"` // Message entities for styled text
	ReplyMarkup ReplyMarkup     `tl:"flag:2"` // Inline keyboard
}

func (*BotInlineMessageMediaAuto) CRC() uint32 {
	return 0x764cf810
}

func (*BotInlineMessageMediaAuto) FlagIndex() int {
	return 0
}

func (*BotInlineMessageMediaAuto) ImplementsBotInlineMessage() {}

// Send a contact
type BotInlineMessageMediaContact struct {
	PhoneNumber string      // Phone number
	FirstName   string      // First name
	LastName    string      // Last name
	Vcard       string      // VCard info
	ReplyMarkup ReplyMarkup `tl:"flag:2"` // Inline keyboard
}

func (*BotInlineMessageMediaContact) CRC() uint32 {
	return 0x18d1cdc2
}

func (*BotInlineMessageMediaContact) FlagIndex() int {
	return 0
}

func (*BotInlineMessageMediaContact) ImplementsBotInlineMessage() {}

// Send a geolocation
type BotInlineMessageMediaGeo struct {
	Geo                         GeoPoint    // Geolocation
	Heading                     int32       `tl:"flag:0"` // For live locations, a direction in which the location moves, in degrees; 1-360.
	Period                      int32       `tl:"flag:1"` // Validity period
	ProximityNotificationRadius int32       `tl:"flag:3"` // For live locations, a maximum distance to another chat member for proximity alerts, in meters (0-100000).
	ReplyMarkup                 ReplyMarkup `tl:"flag:2"` // Inline keyboard
}

func (*BotInlineMessageMediaGeo) CRC() uint32 {
	return 0x51846fd
}

func (*BotInlineMessageMediaGeo) FlagIndex() int {
	return 0
}

func (*BotInlineMessageMediaGeo) ImplementsBotInlineMessage() {}

// Send an invoice
type BotInlineMessageMediaInvoice struct {
	ShippingAddressRequested bool        `tl:"flag:1,encoded_in_bitflags"` // Set this flag if you require the user's shipping address to complete the order
	Test                     bool        `tl:"flag:3,encoded_in_bitflags"` // Test invoice
	Title                    string      // Product name, 1-32 characters
	Description              string      // Product description, 1-255 characters
	Photo                    WebDocument `tl:"flag:0"` // Product photo
	Currency                 string      // Three-letter ISO 4217 currency code, or XTR for Telegram Stars.
	TotalAmount              int64       // Total price in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
	ReplyMarkup              ReplyMarkup `tl:"flag:2"` // Inline keyboard
}

func (*BotInlineMessageMediaInvoice) CRC() uint32 {
	return 0x354a9b09
}

func (*BotInlineMessageMediaInvoice) FlagIndex() int {
	return 0
}

func (*BotInlineMessageMediaInvoice) ImplementsBotInlineMessage() {}

// Send a venue
type BotInlineMessageMediaVenue struct {
	Geo         GeoPoint    // Geolocation of venue
	Title       string      // Venue name
	Address     string      // Address
	Provider    string      // Venue provider: currently only "foursquare" and "gplaces" (Google Places) need to be supported
	VenueID     string      // Venue ID in the provider's database
	VenueType   string      // Venue type in the provider's database
	ReplyMarkup ReplyMarkup `tl:"flag:2"` // Inline keyboard
}

func (*BotInlineMessageMediaVenue) CRC() uint32 {
	return 0x8a86659c
}

func (*BotInlineMessageMediaVenue) FlagIndex() int {
	return 0
}

func (*BotInlineMessageMediaVenue) ImplementsBotInlineMessage() {}

// Specifies options that must be used to generate the link preview for the message, or even a standalone link preview without an attached message.
type BotInlineMessageMediaWebPage struct {
	InvertMedia     bool            `tl:"flag:3,encoded_in_bitflags"` // If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.
	ForceLargeMedia bool            `tl:"flag:4,encoded_in_bitflags"` // If set, specifies that a large media preview should be used.
	ForceSmallMedia bool            `tl:"flag:5,encoded_in_bitflags"` // If set, specifies that a small media preview should be used.
	Manual          bool            `tl:"flag:7,encoded_in_bitflags"` // If set, indicates that the URL used for the webpage preview was specified manually using inputMediaWebPage, and may not be related to any of the URLs specified in the message.
	Safe            bool            `tl:"flag:8,encoded_in_bitflags"` // If set, the link can be opened directly without user confirmation.
	Message         string          // The message, can be empty.
	Entities        []MessageEntity `tl:"flag:1"` // Message entities for styled text
	URL             string          // The URL to use for the link preview.
	ReplyMarkup     ReplyMarkup     `tl:"flag:2"` // Reply markup for sending bot buttons
}

func (*BotInlineMessageMediaWebPage) CRC() uint32 {
	return 0x809ad9a6
}

func (*BotInlineMessageMediaWebPage) FlagIndex() int {
	return 0
}

func (*BotInlineMessageMediaWebPage) ImplementsBotInlineMessage() {}

// Send a simple text message
type BotInlineMessageText struct {
	NoWebpage   bool            `tl:"flag:0,encoded_in_bitflags"` // Disable webpage preview
	InvertMedia bool            `tl:"flag:3,encoded_in_bitflags"` // If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.
	Message     string          // The message
	Entities    []MessageEntity `tl:"flag:1"` // Message entities for styled text
	ReplyMarkup ReplyMarkup     `tl:"flag:2"` // Inline keyboard
}

func (*BotInlineMessageText) CRC() uint32 {
	return 0x8c7f65e2
}

func (*BotInlineMessageText) FlagIndex() int {
	return 0
}

func (*BotInlineMessageText) ImplementsBotInlineMessage() {}

type BotInlineResult interface {
	tl.Object
	ImplementsBotInlineResult()
}

// Media result
type BotInlineMediaResult struct {
	ID          string           // Result ID
	Type        string           // Result type (see bot API docs)
	Photo       Photo            `tl:"flag:0"` // If type is photo, the photo to send
	Document    Document         `tl:"flag:1"` // If type is document, the document to send
	Title       string           `tl:"flag:2"` // Result title
	Description string           `tl:"flag:3"` // Description
	SendMessage BotInlineMessage // Depending on the type and on the constructor, contains the caption of the media or the content of the message to be sent instead of the media
}

func (*BotInlineMediaResult) CRC() uint32 {
	return 0x17db940b
}

func (*BotInlineMediaResult) FlagIndex() int {
	return 0
}

func (*BotInlineMediaResult) ImplementsBotInlineResult() {}

// Generic result
type BotInlineResultObj struct {
	ID          string           // Result ID
	Type        string           // Result type (see bot API docs)
	Title       string           `tl:"flag:1"` // Result title
	Description string           `tl:"flag:2"` // Result description
	URL         string           `tl:"flag:3"` // URL of article or webpage
	Thumb       WebDocument      `tl:"flag:4"` // Thumbnail for the result
	Content     WebDocument      `tl:"flag:5"` // Content of the result
	SendMessage BotInlineMessage // Message to send
}

func (*BotInlineResultObj) CRC() uint32 {
	return 0x11965f3a
}

func (*BotInlineResultObj) FlagIndex() int {
	return 0
}

func (*BotInlineResultObj) ImplementsBotInlineResult() {}

type BotMenuButton interface {
	tl.Object
	ImplementsBotMenuButton()
}

// Bot menu button that opens a web app when clicked.
type BotMenuButtonObj struct {
	Text string // Title to be displayed on the menu button instead of 'Menu'
	URL  string // URL of a web app to open when the user clicks on the button
}

func (*BotMenuButtonObj) CRC() uint32 {
	return 0xc7b57ce6
}

func (*BotMenuButtonObj) ImplementsBotMenuButton() {}

// Bot menu button that opens the bot command list when clicked.
type BotMenuButtonCommands struct{}

func (*BotMenuButtonCommands) CRC() uint32 {
	return 0x4258c205
}

func (*BotMenuButtonCommands) ImplementsBotMenuButton() {}

// Placeholder bot menu button never returned to users: see the docs for more info.
type BotMenuButtonDefault struct{}

func (*BotMenuButtonDefault) CRC() uint32 {
	return 0x7533a588
}

func (*BotMenuButtonDefault) ImplementsBotMenuButton() {}

type BusinessAwayMessageSchedule interface {
	tl.Object
	ImplementsBusinessAwayMessageSchedule()
}

// Always send Telegram Business away messages to users writing to us in private.
type BusinessAwayMessageScheduleAlways struct{}

func (*BusinessAwayMessageScheduleAlways) CRC() uint32 {
	return 0xc9b9e2b9
}

func (*BusinessAwayMessageScheduleAlways) ImplementsBusinessAwayMessageSchedule() {}

// Send Telegram Business away messages to users writing to us in private in the specified time span.
type BusinessAwayMessageScheduleCustom struct {
	StartDate int32 // Start date (UNIX timestamp).
	EndDate   int32 // End date (UNIX timestamp).
}

func (*BusinessAwayMessageScheduleCustom) CRC() uint32 {
	return 0xcc4d9ecc
}

func (*BusinessAwayMessageScheduleCustom) ImplementsBusinessAwayMessageSchedule() {}

// Send Telegram Business away messages to users writing to us in private outside of the configured Telegram Business working hours.
type BusinessAwayMessageScheduleOutsideWorkHours struct{}

func (*BusinessAwayMessageScheduleOutsideWorkHours) CRC() uint32 {
	return 0xc3f2f501
}

func (*BusinessAwayMessageScheduleOutsideWorkHours) ImplementsBusinessAwayMessageSchedule() {}

type ChannelAdminLogEventAction interface {
	tl.Object
	ImplementsChannelAdminLogEventAction()
}

// The description was changed
type ChannelAdminLogEventActionChangeAbout struct {
	PrevValue string // Previous description
	NewValue  string // New description
}

func (*ChannelAdminLogEventActionChangeAbout) CRC() uint32 {
	return 0x55188a2e
}

func (*ChannelAdminLogEventActionChangeAbout) ImplementsChannelAdminLogEventAction() {}

// The set of allowed message reactions » for this channel has changed
type ChannelAdminLogEventActionChangeAvailableReactions struct {
	PrevValue ChatReactions // Previously allowed reaction emojis
	NewValue  ChatReactions // New allowed reaction emojis
}

func (*ChannelAdminLogEventActionChangeAvailableReactions) CRC() uint32 {
	return 0xbe4e0ef8
}

func (*ChannelAdminLogEventActionChangeAvailableReactions) ImplementsChannelAdminLogEventAction() {}

// The emoji status was changed
type ChannelAdminLogEventActionChangeEmojiStatus struct {
	PrevValue EmojiStatus // Previous emoji status
	NewValue  EmojiStatus // New emoji status
}

func (*ChannelAdminLogEventActionChangeEmojiStatus) CRC() uint32 {
	return 0x3ea9feb1
}

func (*ChannelAdminLogEventActionChangeEmojiStatus) ImplementsChannelAdminLogEventAction() {}

// The supergroup's custom emoji stickerset was changed.
type ChannelAdminLogEventActionChangeEmojiStickerSet struct {
	PrevStickerset InputStickerSet // Old value
	NewStickerset  InputStickerSet // New value
}

func (*ChannelAdminLogEventActionChangeEmojiStickerSet) CRC() uint32 {
	return 0x46d840ab
}

func (*ChannelAdminLogEventActionChangeEmojiStickerSet) ImplementsChannelAdminLogEventAction() {}

// The Time-To-Live of messages in this chat was changed
type ChannelAdminLogEventActionChangeHistoryTtl struct {
	PrevValue int32 // Previous value
	NewValue  int32 // New value
}

func (*ChannelAdminLogEventActionChangeHistoryTtl) CRC() uint32 {
	return 0x6e941a38
}

func (*ChannelAdminLogEventActionChangeHistoryTtl) ImplementsChannelAdminLogEventAction() {}

// The linked chat was changed
type ChannelAdminLogEventActionChangeLinkedChat struct {
	PrevValue int64 // Previous linked chat
	NewValue  int64 // New linked chat
}

func (*ChannelAdminLogEventActionChangeLinkedChat) CRC() uint32 {
	return 0x50c7ac8
}

func (*ChannelAdminLogEventActionChangeLinkedChat) ImplementsChannelAdminLogEventAction() {}

// The geogroup location was changed
type ChannelAdminLogEventActionChangeLocation struct {
	PrevValue ChannelLocation // Previous location
	NewValue  ChannelLocation // New location
}

func (*ChannelAdminLogEventActionChangeLocation) CRC() uint32 {
	return 0xe6b76ae
}

func (*ChannelAdminLogEventActionChangeLocation) ImplementsChannelAdminLogEventAction() {}

// The message accent color was changed
type ChannelAdminLogEventActionChangePeerColor struct {
	PrevValue PeerColor // Previous accent palette
	NewValue  PeerColor // New accent palette
}

func (*ChannelAdminLogEventActionChangePeerColor) CRC() uint32 {
	return 0x5796e780
}

func (*ChannelAdminLogEventActionChangePeerColor) ImplementsChannelAdminLogEventAction() {}

// The channel/supergroup's picture was changed
type ChannelAdminLogEventActionChangePhoto struct {
	PrevPhoto Photo // Previous picture
	NewPhoto  Photo // New picture
}

func (*ChannelAdminLogEventActionChangePhoto) CRC() uint32 {
	return 0x434bd2af
}

func (*ChannelAdminLogEventActionChangePhoto) ImplementsChannelAdminLogEventAction() {}

// The profile accent color was changed
type ChannelAdminLogEventActionChangeProfilePeerColor struct {
	PrevValue PeerColor // Previous accent palette
	NewValue  PeerColor // New accent palette
}

func (*ChannelAdminLogEventActionChangeProfilePeerColor) CRC() uint32 {
	return 0x5e477b25
}

func (*ChannelAdminLogEventActionChangeProfilePeerColor) ImplementsChannelAdminLogEventAction() {}

// The supergroup's stickerset was changed
type ChannelAdminLogEventActionChangeStickerSet struct {
	PrevStickerset InputStickerSet // Previous stickerset
	NewStickerset  InputStickerSet // New stickerset
}

func (*ChannelAdminLogEventActionChangeStickerSet) CRC() uint32 {
	return 0xb1c3caa7
}

func (*ChannelAdminLogEventActionChangeStickerSet) ImplementsChannelAdminLogEventAction() {}

// The chat theme was changed
type ChannelAdminLogEventActionChangeTheme struct {
	PrevValue string // Previous theme emoji
	NewValue  string // New theme emoji
}

func (*ChannelAdminLogEventActionChangeTheme) CRC() uint32 {
	return 0xfe69018d
}

func (*ChannelAdminLogEventActionChangeTheme) ImplementsChannelAdminLogEventAction() {}

// Channel/supergroup title was changed
type ChannelAdminLogEventActionChangeTitle struct {
	PrevValue string // Previous title
	NewValue  string // New title
}

func (*ChannelAdminLogEventActionChangeTitle) CRC() uint32 {
	return 0xe6dfb825
}

func (*ChannelAdminLogEventActionChangeTitle) ImplementsChannelAdminLogEventAction() {}

// Channel/supergroup username was changed
type ChannelAdminLogEventActionChangeUsername struct {
	PrevValue string // Old username
	NewValue  string // New username
}

func (*ChannelAdminLogEventActionChangeUsername) CRC() uint32 {
	return 0x6a4afc38
}

func (*ChannelAdminLogEventActionChangeUsername) ImplementsChannelAdminLogEventAction() {}

// The list of usernames associated with the channel was changed
type ChannelAdminLogEventActionChangeUsernames struct {
	PrevValue []string // Previous set of usernames
	NewValue  []string // New set of usernames
}

func (*ChannelAdminLogEventActionChangeUsernames) CRC() uint32 {
	return 0xf04fb3a9
}

func (*ChannelAdminLogEventActionChangeUsernames) ImplementsChannelAdminLogEventAction() {}

// The wallpaper was changed
type ChannelAdminLogEventActionChangeWallpaper struct {
	PrevValue WallPaper // Previous wallpaper
	NewValue  WallPaper // New wallpaper
}

func (*ChannelAdminLogEventActionChangeWallpaper) CRC() uint32 {
	return 0x31bb5d52
}

func (*ChannelAdminLogEventActionChangeWallpaper) ImplementsChannelAdminLogEventAction() {}

// A forum topic was created
type ChannelAdminLogEventActionCreateTopic struct {
	Topic ForumTopic // The forum topic that was created
}

func (*ChannelAdminLogEventActionCreateTopic) CRC() uint32 {
	return 0x58707d28
}

func (*ChannelAdminLogEventActionCreateTopic) ImplementsChannelAdminLogEventAction() {}

// The default banned rights were modified
type ChannelAdminLogEventActionDefaultBannedRights struct {
	PrevBannedRights *ChatBannedRights // Previous global banned rights
	NewBannedRights  *ChatBannedRights // New global banned rights.
}

func (*ChannelAdminLogEventActionDefaultBannedRights) CRC() uint32 {
	return 0x2df5fc0a
}

func (*ChannelAdminLogEventActionDefaultBannedRights) ImplementsChannelAdminLogEventAction() {}

// A message was deleted
type ChannelAdminLogEventActionDeleteMessage struct {
	Message Message // The message that was deleted
}

func (*ChannelAdminLogEventActionDeleteMessage) CRC() uint32 {
	return 0x42e047bb
}

func (*ChannelAdminLogEventActionDeleteMessage) ImplementsChannelAdminLogEventAction() {}

// A forum topic was deleted
type ChannelAdminLogEventActionDeleteTopic struct {
	Topic ForumTopic // The forum topic that was deleted
}

func (*ChannelAdminLogEventActionDeleteTopic) CRC() uint32 {
	return 0xae168909
}

func (*ChannelAdminLogEventActionDeleteTopic) ImplementsChannelAdminLogEventAction() {}

// A group call was terminated
type ChannelAdminLogEventActionDiscardGroupCall struct {
	Call InputGroupCall // The group call that was terminated
}

func (*ChannelAdminLogEventActionDiscardGroupCall) CRC() uint32 {
	return 0xdb9f9140
}

func (*ChannelAdminLogEventActionDiscardGroupCall) ImplementsChannelAdminLogEventAction() {}

// A message was edited
type ChannelAdminLogEventActionEditMessage struct {
	PrevMessage Message // Old message
	NewMessage  Message // New message
}

func (*ChannelAdminLogEventActionEditMessage) CRC() uint32 {
	return 0x709b2405
}

func (*ChannelAdminLogEventActionEditMessage) ImplementsChannelAdminLogEventAction() {}

// A forum topic was edited
type ChannelAdminLogEventActionEditTopic struct {
	PrevTopic ForumTopic // Previous topic information
	NewTopic  ForumTopic // New topic information
}

func (*ChannelAdminLogEventActionEditTopic) CRC() uint32 {
	return 0xf06fe208
}

func (*ChannelAdminLogEventActionEditTopic) ImplementsChannelAdminLogEventAction() {}

// A chat invite was deleted
type ChannelAdminLogEventActionExportedInviteDelete struct {
	Invite ExportedChatInvite // The deleted chat invite
}

func (*ChannelAdminLogEventActionExportedInviteDelete) CRC() uint32 {
	return 0x5a50fca4
}

func (*ChannelAdminLogEventActionExportedInviteDelete) ImplementsChannelAdminLogEventAction() {}

// A chat invite was edited
type ChannelAdminLogEventActionExportedInviteEdit struct {
	PrevInvite ExportedChatInvite // Previous chat invite information
	NewInvite  ExportedChatInvite // New chat invite information
}

func (*ChannelAdminLogEventActionExportedInviteEdit) CRC() uint32 {
	return 0xe90ebb59
}

func (*ChannelAdminLogEventActionExportedInviteEdit) ImplementsChannelAdminLogEventAction() {}

// A specific invite link was revoked
type ChannelAdminLogEventActionExportedInviteRevoke struct {
	Invite ExportedChatInvite // The invite link that was revoked
}

func (*ChannelAdminLogEventActionExportedInviteRevoke) CRC() uint32 {
	return 0x410a134e
}

func (*ChannelAdminLogEventActionExportedInviteRevoke) ImplementsChannelAdminLogEventAction() {}

// A user was invited to the group
type ChannelAdminLogEventActionParticipantInvite struct {
	Participant ChannelParticipant // The user that was invited
}

func (*ChannelAdminLogEventActionParticipantInvite) CRC() uint32 {
	return 0xe31c34d8
}

func (*ChannelAdminLogEventActionParticipantInvite) ImplementsChannelAdminLogEventAction() {}

// A user has joined the group (in the case of big groups, info of the user that has joined isn't shown)
type ChannelAdminLogEventActionParticipantJoin struct{}

func (*ChannelAdminLogEventActionParticipantJoin) CRC() uint32 {
	return 0x183040d3
}

func (*ChannelAdminLogEventActionParticipantJoin) ImplementsChannelAdminLogEventAction() {}

// A user joined the supergroup/channel using a specific invite link
type ChannelAdminLogEventActionParticipantJoinByInvite struct {
	ViaChatlist bool               `tl:"flag:0,encoded_in_bitflags"` // The participant joined by importing a chat folder deep link.
	Invite      ExportedChatInvite // The invite link used to join the supergroup/channel
}

func (*ChannelAdminLogEventActionParticipantJoinByInvite) CRC() uint32 {
	return 0xfe9fc158
}

func (*ChannelAdminLogEventActionParticipantJoinByInvite) FlagIndex() int {
	return 0
}

func (*ChannelAdminLogEventActionParticipantJoinByInvite) ImplementsChannelAdminLogEventAction() {}

// A new member was accepted to the chat by an admin
type ChannelAdminLogEventActionParticipantJoinByRequest struct {
	Invite     ExportedChatInvite // The invite link that was used to join the chat
	ApprovedBy int64              // ID of the admin that approved the invite
}

func (*ChannelAdminLogEventActionParticipantJoinByRequest) CRC() uint32 {
	return 0xafb6144a
}

func (*ChannelAdminLogEventActionParticipantJoinByRequest) ImplementsChannelAdminLogEventAction() {}

// A user left the channel/supergroup (in the case of big groups, info of the user that has joined isn't shown)
type ChannelAdminLogEventActionParticipantLeave struct{}

func (*ChannelAdminLogEventActionParticipantLeave) CRC() uint32 {
	return 0xf89777f2
}

func (*ChannelAdminLogEventActionParticipantLeave) ImplementsChannelAdminLogEventAction() {}

// A group call participant was muted
type ChannelAdminLogEventActionParticipantMute struct {
	Participant *GroupCallParticipant // The participant that was muted
}

func (*ChannelAdminLogEventActionParticipantMute) CRC() uint32 {
	return 0xf92424d2
}

func (*ChannelAdminLogEventActionParticipantMute) ImplementsChannelAdminLogEventAction() {}

// A paid subscriber has extended their Telegram Star subscription ».
type ChannelAdminLogEventActionParticipantSubExtend struct {
	PrevParticipant ChannelParticipant // Same as new_participant.
	NewParticipant  ChannelParticipant // The subscriber that extended the subscription.
}

func (*ChannelAdminLogEventActionParticipantSubExtend) CRC() uint32 {
	return 0x64642db3
}

func (*ChannelAdminLogEventActionParticipantSubExtend) ImplementsChannelAdminLogEventAction() {}

// The admin rights of a user were changed
type ChannelAdminLogEventActionParticipantToggleAdmin struct {
	PrevParticipant ChannelParticipant // Previous admin rights
	NewParticipant  ChannelParticipant // New admin rights
}

func (*ChannelAdminLogEventActionParticipantToggleAdmin) CRC() uint32 {
	return 0xd5676710
}

func (*ChannelAdminLogEventActionParticipantToggleAdmin) ImplementsChannelAdminLogEventAction() {}

// The banned rights of a user were changed
type ChannelAdminLogEventActionParticipantToggleBan struct {
	PrevParticipant ChannelParticipant // Old banned rights of user
	NewParticipant  ChannelParticipant // New banned rights of user
}

func (*ChannelAdminLogEventActionParticipantToggleBan) CRC() uint32 {
	return 0xe6d83d7e
}

func (*ChannelAdminLogEventActionParticipantToggleBan) ImplementsChannelAdminLogEventAction() {}

// A group call participant was unmuted
type ChannelAdminLogEventActionParticipantUnmute struct {
	Participant *GroupCallParticipant // The participant that was unmuted
}

func (*ChannelAdminLogEventActionParticipantUnmute) CRC() uint32 {
	return 0xe64429c0
}

func (*ChannelAdminLogEventActionParticipantUnmute) ImplementsChannelAdminLogEventAction() {}

// channelAdminLogEvent.user_id has set the volume of participant.peer to participant.volume
type ChannelAdminLogEventActionParticipantVolume struct {
	Participant *GroupCallParticipant // The participant whose volume was changed
}

func (*ChannelAdminLogEventActionParticipantVolume) CRC() uint32 {
	return 0x3e7f6847
}

func (*ChannelAdminLogEventActionParticipantVolume) ImplementsChannelAdminLogEventAction() {}

// A forum topic was pinned or unpinned
type ChannelAdminLogEventActionPinTopic struct {
	PrevTopic ForumTopic `tl:"flag:0"` // Previous topic information
	NewTopic  ForumTopic `tl:"flag:1"` // New topic information
}

func (*ChannelAdminLogEventActionPinTopic) CRC() uint32 {
	return 0x5d8d353b
}

func (*ChannelAdminLogEventActionPinTopic) FlagIndex() int {
	return 0
}

func (*ChannelAdminLogEventActionPinTopic) ImplementsChannelAdminLogEventAction() {}

// A message was posted in a channel
type ChannelAdminLogEventActionSendMessage struct {
	Message Message // The message that was sent
}

func (*ChannelAdminLogEventActionSendMessage) CRC() uint32 {
	return 0x278f2868
}

func (*ChannelAdminLogEventActionSendMessage) ImplementsChannelAdminLogEventAction() {}

// A group call was started
type ChannelAdminLogEventActionStartGroupCall struct {
	Call InputGroupCall // Group call
}

func (*ChannelAdminLogEventActionStartGroupCall) CRC() uint32 {
	return 0x23209745
}

func (*ChannelAdminLogEventActionStartGroupCall) ImplementsChannelAdminLogEventAction() {}

// A poll was stopped
type ChannelAdminLogEventActionStopPoll struct {
	Message Message // The poll that was stopped
}

func (*ChannelAdminLogEventActionStopPoll) CRC() uint32 {
	return 0x8f079643
}

func (*ChannelAdminLogEventActionStopPoll) ImplementsChannelAdminLogEventAction() {}

// Native antispam functionality was enabled or disabled.
type ChannelAdminLogEventActionToggleAntiSpam struct {
	NewValue bool // Whether antispam functionality was enabled or disabled.
}

func (*ChannelAdminLogEventActionToggleAntiSpam) CRC() uint32 {
	return 0x64f36dfc
}

func (*ChannelAdminLogEventActionToggleAntiSpam) ImplementsChannelAdminLogEventAction() {}

// Channel autotranslation was toggled ».
type ChannelAdminLogEventActionToggleAutotranslation struct {
	NewValue bool // New value of the toggle
}

func (*ChannelAdminLogEventActionToggleAutotranslation) CRC() uint32 {
	return 0xc517f77e
}

func (*ChannelAdminLogEventActionToggleAutotranslation) ImplementsChannelAdminLogEventAction() {}

// Forum functionality was enabled or disabled.
type ChannelAdminLogEventActionToggleForum struct {
	NewValue bool // Whether forum functionality was enabled or disabled.
}

func (*ChannelAdminLogEventActionToggleForum) CRC() uint32 {
	return 0x2cc6383
}

func (*ChannelAdminLogEventActionToggleForum) ImplementsChannelAdminLogEventAction() {}

// Group call settings were changed
type ChannelAdminLogEventActionToggleGroupCallSetting struct {
	JoinMuted bool // Whether all users are muted by default upon joining
}

func (*ChannelAdminLogEventActionToggleGroupCallSetting) CRC() uint32 {
	return 0x56d6a247
}

func (*ChannelAdminLogEventActionToggleGroupCallSetting) ImplementsChannelAdminLogEventAction() {}

// Invites were enabled/disabled
type ChannelAdminLogEventActionToggleInvites struct {
	NewValue bool // New value
}

func (*ChannelAdminLogEventActionToggleInvites) CRC() uint32 {
	return 0x1b7907ae
}

func (*ChannelAdminLogEventActionToggleInvites) ImplementsChannelAdminLogEventAction() {}

// Forwards were enabled or disabled
type ChannelAdminLogEventActionToggleNoForwards struct {
	NewValue bool // Old value
}

func (*ChannelAdminLogEventActionToggleNoForwards) CRC() uint32 {
	return 0xcb2ac766
}

func (*ChannelAdminLogEventActionToggleNoForwards) ImplementsChannelAdminLogEventAction() {}

// The hidden prehistory setting was changed
type ChannelAdminLogEventActionTogglePreHistoryHidden struct {
	NewValue bool // New value
}

func (*ChannelAdminLogEventActionTogglePreHistoryHidden) CRC() uint32 {
	return 0x5f5c95f1
}

func (*ChannelAdminLogEventActionTogglePreHistoryHidden) ImplementsChannelAdminLogEventAction() {}

// Channel signature profiles were enabled/disabled.
type ChannelAdminLogEventActionToggleSignatureProfiles struct {
	NewValue bool // New value
}

func (*ChannelAdminLogEventActionToggleSignatureProfiles) CRC() uint32 {
	return 0x60a79c79
}

func (*ChannelAdminLogEventActionToggleSignatureProfiles) ImplementsChannelAdminLogEventAction() {}

// Channel signatures were enabled/disabled
type ChannelAdminLogEventActionToggleSignatures struct {
	NewValue bool // New value
}

func (*ChannelAdminLogEventActionToggleSignatures) CRC() uint32 {
	return 0x26ae0971
}

func (*ChannelAdminLogEventActionToggleSignatures) ImplementsChannelAdminLogEventAction() {}

// Slow mode setting for supergroups was changed
type ChannelAdminLogEventActionToggleSlowMode struct {
	PrevValue int32 // Previous slow mode value
	NewValue  int32 // New slow mode value
}

func (*ChannelAdminLogEventActionToggleSlowMode) CRC() uint32 {
	return 0x53909779
}

func (*ChannelAdminLogEventActionToggleSlowMode) ImplementsChannelAdminLogEventAction() {}

// A message was pinned
type ChannelAdminLogEventActionUpdatePinned struct {
	Message Message // The message that was pinned
}

func (*ChannelAdminLogEventActionUpdatePinned) CRC() uint32 {
	return 0xe9e82c18
}

func (*ChannelAdminLogEventActionUpdatePinned) ImplementsChannelAdminLogEventAction() {}

type ChannelLocation interface {
	tl.Object
	ImplementsChannelLocation()
}

// Geographical location of supergroup (geogroups)
type ChannelLocationObj struct {
	GeoPoint GeoPoint // Geographical location of supergroup
	Address  string   // Textual description of the address
}

func (*ChannelLocationObj) CRC() uint32 {
	return 0x209b82db
}

func (*ChannelLocationObj) ImplementsChannelLocation() {}

// No location (normal supergroup)
type ChannelLocationEmpty struct{}

func (*ChannelLocationEmpty) CRC() uint32 {
	return 0xbfb5ad8b
}

func (*ChannelLocationEmpty) ImplementsChannelLocation() {}

type ChannelMessagesFilter interface {
	tl.Object
	ImplementsChannelMessagesFilter()
}

// Filter for getting only certain types of channel messages
type ChannelMessagesFilterObj struct {
	ExcludeNewMessages bool            `tl:"flag:1,encoded_in_bitflags"` // Whether to exclude new messages from the search
	Ranges             []*MessageRange // A range of messages to fetch
}

func (*ChannelMessagesFilterObj) CRC() uint32 {
	return 0xcd77d957
}

func (*ChannelMessagesFilterObj) FlagIndex() int {
	return 0
}

func (*ChannelMessagesFilterObj) ImplementsChannelMessagesFilter() {}

// No filter
type ChannelMessagesFilterEmpty struct{}

func (*ChannelMessagesFilterEmpty) CRC() uint32 {
	return 0x94d42ee7
}

func (*ChannelMessagesFilterEmpty) ImplementsChannelMessagesFilter() {}

type ChannelParticipant interface {
	tl.Object
	ImplementsChannelParticipant()
}

// Channel/supergroup participant
type ChannelParticipantObj struct {
	UserID                int64 // Participant user ID
	Date                  int32 // Date joined
	SubscriptionUntilDate int32 `tl:"flag:0"` // If set, contains the expiration date of the current Telegram Star subscription period  for the specified participant.
}

func (*ChannelParticipantObj) CRC() uint32 {
	return 0xcb397619
}

func (*ChannelParticipantObj) FlagIndex() int {
	return 0
}

func (*ChannelParticipantObj) ImplementsChannelParticipant() {}

// Admin
type ChannelParticipantAdmin struct {
	CanEdit     bool             `tl:"flag:0,encoded_in_bitflags"` // Can this admin promote other admins with the same permissions?
	Self        bool             `tl:"flag:1,encoded_in_bitflags"` // Is this the current user
	UserID      int64            // Admin user ID
	InviterID   int64            `tl:"flag:1"` // User that invited the admin to the channel/group
	PromotedBy  int64            // User that promoted the user to admin
	Date        int32            // When did the user join
	AdminRights *ChatAdminRights // Admin rights
	Rank        string           `tl:"flag:2"` // The role (rank) of the admin in the group: just an arbitrary string, admin by default
}

func (*ChannelParticipantAdmin) CRC() uint32 {
	return 0x34c3bb53
}

func (*ChannelParticipantAdmin) FlagIndex() int {
	return 0
}

func (*ChannelParticipantAdmin) ImplementsChannelParticipant() {}

// Banned/kicked user
type ChannelParticipantBanned struct {
	Left         bool              `tl:"flag:0,encoded_in_bitflags"` // Whether the user has left the group
	Peer         Peer              // The banned peer
	KickedBy     int64             // User was kicked by the specified admin
	Date         int32             // When did the user join the group
	BannedRights *ChatBannedRights // Banned rights
}

func (*ChannelParticipantBanned) CRC() uint32 {
	return 0x6df8014e
}

func (*ChannelParticipantBanned) FlagIndex() int {
	return 0
}

func (*ChannelParticipantBanned) ImplementsChannelParticipant() {}

// Channel/supergroup creator
type ChannelParticipantCreator struct {
	UserID      int64            // User ID
	AdminRights *ChatAdminRights // Creator admin rights
	Rank        string           `tl:"flag:0"` // The role (rank) of the group creator in the group: just an arbitrary string, admin by default
}

func (*ChannelParticipantCreator) CRC() uint32 {
	return 0x2fe601d3
}

func (*ChannelParticipantCreator) FlagIndex() int {
	return 0
}

func (*ChannelParticipantCreator) ImplementsChannelParticipant() {}

// A participant that left the channel/supergroup
type ChannelParticipantLeft struct {
	Peer Peer // The peer that left
}

func (*ChannelParticipantLeft) CRC() uint32 {
	return 0x1b03f006
}

func (*ChannelParticipantLeft) ImplementsChannelParticipant() {}

// Myself
type ChannelParticipantSelf struct {
	ViaRequest            bool  `tl:"flag:0,encoded_in_bitflags"` // Whether I joined upon specific approval of an admin
	UserID                int64 // User ID
	InviterID             int64 // User that invited me to the channel/supergroup
	Date                  int32 // When did I join the channel/supergroup
	SubscriptionUntilDate int32 `tl:"flag:1"` // If set, contains the expiration date of the current Telegram Star subscription period  for the specified participant.
}

func (*ChannelParticipantSelf) CRC() uint32 {
	return 0x4f607bef
}

func (*ChannelParticipantSelf) FlagIndex() int {
	return 0
}

func (*ChannelParticipantSelf) ImplementsChannelParticipant() {}

type ChannelParticipantsFilter interface {
	tl.Object
	ImplementsChannelParticipantsFilter()
}

// Fetch only admin participants
type ChannelParticipantsAdmins struct{}

func (*ChannelParticipantsAdmins) CRC() uint32 {
	return 0xb4608969
}

func (*ChannelParticipantsAdmins) ImplementsChannelParticipantsFilter() {}

// Fetch only banned participants
type ChannelParticipantsBanned struct {
	Q string // Optional filter for searching banned participants by name (otherwise empty)
}

func (*ChannelParticipantsBanned) CRC() uint32 {
	return 0x1427a5e1
}

func (*ChannelParticipantsBanned) ImplementsChannelParticipantsFilter() {}

// Fetch only bot participants
type ChannelParticipantsBots struct{}

func (*ChannelParticipantsBots) CRC() uint32 {
	return 0xb0d1865b
}

func (*ChannelParticipantsBots) ImplementsChannelParticipantsFilter() {}

// Fetch only participants that are also contacts
type ChannelParticipantsContacts struct {
	Q string // Optional search query for searching contact participants by name
}

func (*ChannelParticipantsContacts) CRC() uint32 {
	return 0xbb6ae88d
}

func (*ChannelParticipantsContacts) ImplementsChannelParticipantsFilter() {}

// Fetch only kicked participants
type ChannelParticipantsKicked struct {
	Q string // Optional filter for searching kicked participants by name (otherwise empty)
}

func (*ChannelParticipantsKicked) CRC() uint32 {
	return 0xa3b54985
}

func (*ChannelParticipantsKicked) ImplementsChannelParticipantsFilter() {}

/*
This filter is used when looking for supergroup members to mention.<br>
This filter will automatically remove anonymous admins, and return even non-participant users that replied to a specific thread through the comment section of a channel.
*/
type ChannelParticipantsMentions struct {
	Q        string `tl:"flag:0"` // Filter by user name or username
	TopMsgID int32  `tl:"flag:1"` // Look only for users that posted in this thread
}

func (*ChannelParticipantsMentions) CRC() uint32 {
	return 0xe04b5ceb
}

func (*ChannelParticipantsMentions) FlagIndex() int {
	return 0
}

func (*ChannelParticipantsMentions) ImplementsChannelParticipantsFilter() {}

// Fetch only recent participants
type ChannelParticipantsRecent struct{}

func (*ChannelParticipantsRecent) CRC() uint32 {
	return 0xde3f3c79
}

func (*ChannelParticipantsRecent) ImplementsChannelParticipantsFilter() {}

// Query participants by name
type ChannelParticipantsSearch struct {
	Q string // Search query
}

func (*ChannelParticipantsSearch) CRC() uint32 {
	return 0x656ac4b
}

func (*ChannelParticipantsSearch) ImplementsChannelParticipantsFilter() {}

type Chat interface {
	tl.Object
	ImplementsChat()
}

// Channel/supergroup info
type Channel struct {
	Creator   bool `tl:"flag:0,encoded_in_bitflags"` // Whether the current user is the creator of this channel
	Left      bool `tl:"flag:2,encoded_in_bitflags"` // Whether the current user has left or is not a member of this channel
	Broadcast bool `tl:"flag:5,encoded_in_bitflags"` // Is this a channel?
	Verified  bool `tl:"flag:7,encoded_in_bitflags"` // Is this channel verified by telegram?
	Megagroup bool `tl:"flag:8,encoded_in_bitflags"` /*
		Is this a supergroup?
		Changes to this flag should invalidate the local channelFull cache for this channel/supergroup ID,.
	*/
	Restricted bool `tl:"flag:9,encoded_in_bitflags"`  // Whether viewing/writing in this channel for a reason (see restriction_reason)
	Signatures bool `tl:"flag:11,encoded_in_bitflags"` // Whether signatures are enabled (channels)
	Min        bool `tl:"flag:12,encoded_in_bitflags"` // See min
	Scam       bool `tl:"flag:19,encoded_in_bitflags"` /*
		This channel/supergroup is probably a scam
		Changes to this flag should invalidate the local channelFull cache for this channel/supergroup ID,.
	*/
	HasLink bool `tl:"flag:20,encoded_in_bitflags"` /*
		Whether this channel has a linked discussion group  (or this supergroup is a channel's discussion group). The actual ID of the linked channel/supergroup is contained in channelFull.linked_chat_id.
		Changes to this flag should invalidate the local channelFull cache for this channel/supergroup ID,.
	*/
	HasGeo          bool `tl:"flag:21,encoded_in_bitflags"` // Whether this chanel has a geoposition
	SlowmodeEnabled bool `tl:"flag:22,encoded_in_bitflags"` /*
		Whether slow mode is enabled for groups to prevent flood in chat.
		Changes to this flag should invalidate the local channelFull cache for this channel/supergroup ID,.
	*/
	CallActive   bool `tl:"flag:23,encoded_in_bitflags"` // Whether a group call or livestream is currently active
	CallNotEmpty bool `tl:"flag:24,encoded_in_bitflags"` // Whether there's anyone in the group call or livestream
	Fake         bool `tl:"flag:25,encoded_in_bitflags"` /*
		If set, this supergroup/channel was reported by many users as a fake or scam: be careful when interacting with it.
		Changes to this flag should invalidate the local channelFull cache for this channel/supergroup ID,.
	*/
	Gigagroup bool `tl:"flag:26,encoded_in_bitflags"` /*
		Whether this supergroup is a gigagroup
		Changes to this flag should invalidate the local channelFull cache for this channel/supergroup ID,.
	*/
	Noforwards bool `tl:"flag:27,encoded_in_bitflags"` // Whether this channel or group is protected, thus does not allow forwarding messages from it
	JoinToSend bool `tl:"flag:28,encoded_in_bitflags"` /*
		Whether a user needs to join the supergroup before they can send messages: can be false only for discussion groups , toggle using channels.toggleJoinToSend
		Changes to this flag should invalidate the local channelFull cache for this channel/supergroup ID,.
	*/
	JoinRequest bool `tl:"flag:29,encoded_in_bitflags"` /*
		Whether a user's join request will have to be approved by administrators, toggle using channels.toggleJoinToSend
		Changes to this flag should invalidate the local channelFull cache for this channel/supergroup ID,.
	*/
	Forum bool `tl:"flag:30,encoded_in_bitflags"` /*
		Whether this supergroup is a forum.
		Changes to this flag should invalidate the local channelFull cache for this channel/supergroup ID,.
	*/
	StoriesHidden            bool                 `tl:"flag2:1,encoded_in_bitflags"`  // Whether we have hidden all stories posted by this channel.
	StoriesHiddenMin         bool                 `tl:"flag2:2,encoded_in_bitflags"`  // If set, indicates that the stories_hidden flag was not populated, and its value must cannot be relied on; use the previously cached value, or re-fetch the constructor using channels.getChannels to obtain the latest value of the stories_hidden flag.
	StoriesUnavailable       bool                 `tl:"flag2:3,encoded_in_bitflags"`  // No stories from the channel are visible.
	SignatureProfiles        bool                 `tl:"flag2:12,encoded_in_bitflags"` // If set, messages sent by admins to this channel will link to the admin's profile (just like with groups).
	Autotranslation          bool                 `tl:"flag2:15,encoded_in_bitflags"` // If set, autotranslation was enabled for all users by the admin of the channel, as specified here.
	BroadcastMessagesAllowed bool                 `tl:"flag2:16,encoded_in_bitflags"` // If set, this channel has an associated monoforum , and its ID is specified in the linked_monoforum_id flag.
	Monoforum                bool                 `tl:"flag2:17,encoded_in_bitflags"` // If set, this is a monoforum , and the ID of the associated channel is specified in the linked_monoforum_id.
	ForumTabs                bool                 `tl:"flag2:19,encoded_in_bitflags"` // If set, enables the tabbed forum UI.
	ID                       int64                // ID of the channel,.
	AccessHash               int64                `tl:"flag:13"` // Access hash
	Title                    string               // Title
	Username                 string               `tl:"flag:6"` // Main active username.
	Photo                    ChatPhoto            // Profile photo
	Date                     int32                // Date when the user joined the supergroup/channel, or if the user isn't a member, its creation date
	RestrictionReason        []*RestrictionReason `tl:"flag:9"` /*
		Contains the reason why access to this channel must be restricted.
		Changes to this flag should invalidate the local channelFull cache for this channel/supergroup ID,.
	*/
	AdminRights         *ChatAdminRights  `tl:"flag:14"`  // Admin rights of the user in this channel (see rights)
	BannedRights        *ChatBannedRights `tl:"flag:15"`  // Banned rights of the user in this channel (see rights)
	DefaultBannedRights *ChatBannedRights `tl:"flag:18"`  // Default chat rights (see rights)
	ParticipantsCount   int32             `tl:"flag:17"`  // Participant count
	Usernames           []*Username       `tl:"flag2:0"`  // Additional usernames
	StoriesMaxID        int32             `tl:"flag2:4"`  // ID of the maximum read story.
	Color               PeerColor         `tl:"flag2:7"`  // The channel's accent color.
	ProfileColor        PeerColor         `tl:"flag2:8"`  // The channel's profile color.
	EmojiStatus         EmojiStatus       `tl:"flag2:9"`  // Emoji status
	Level               int32             `tl:"flag2:10"` /*
		Boost level.
		Changes to this flag should invalidate the local channelFull cache for this channel/supergroup ID,.
	*/
	SubscriptionUntilDate int32 `tl:"flag2:11"` // Expiration date of the Telegram Star subscription  the current user has bought to gain access to this channel.
	BotVerificationIcon   int64 `tl:"flag2:13"` // Describes a bot verification icon.
	SendPaidMessagesStars int64 `tl:"flag2:14"` // If set, this supergroup or monoforum has enabled paid messages , we <em>might</em> need to pay the specified amount of Stars to send messages to it, depending on the configured exceptions: check channelFull.send_paid_messages_stars to see if the currently logged in user actually has to pay or not,.
	LinkedMonoforumID     int64 `tl:"flag2:18"` // For channels with associated monoforums, the monoforum ID. For Monoforums, the ID of the associated channel.
}

func (*Channel) CRC() uint32 {
	return 0xfe685355
}

func (*Channel) FlagIndex() int {
	return 21
}

func (*Channel) ImplementsChat() {}

// Indicates a channel/supergroup we can't access because we were banned, or for some other reason.
type ChannelForbidden struct {
	Broadcast  bool   `tl:"flag:5,encoded_in_bitflags"` // Is this a channel
	Megagroup  bool   `tl:"flag:8,encoded_in_bitflags"` // Is this a supergroup
	ID         int64  // Channel ID
	AccessHash int64  // Access hash
	Title      string // Title
	UntilDate  int32  `tl:"flag:16"` // The ban is valid until the specified date
}

func (*ChannelForbidden) CRC() uint32 {
	return 0x17d493d5
}

func (*ChannelForbidden) FlagIndex() int {
	return 0
}

func (*ChannelForbidden) ImplementsChat() {}

// Info about a group.
type ChatObj struct {
	Creator             bool `tl:"flag:0,encoded_in_bitflags"`
	Kicked              bool `tl:"flag:1,encoded_in_bitflags"`
	Left                bool `tl:"flag:2,encoded_in_bitflags"`
	Deactivated         bool `tl:"flag:5,encoded_in_bitflags"`
	CallActive          bool `tl:"flag:23,encoded_in_bitflags"`
	CallNotEmpty        bool `tl:"flag:24,encoded_in_bitflags"`
	Noforwards          bool `tl:"flag:25,encoded_in_bitflags"`
	ID                  int64
	Title               string
	Photo               ChatPhoto
	ParticipantsCount   int32
	Date                int32
	Version             int32
	MigratedTo          InputChannel      `tl:"flag:6"`
	AdminRights         *ChatAdminRights  `tl:"flag:14"`
	DefaultBannedRights *ChatBannedRights `tl:"flag:18"`
}

func (*ChatObj) CRC() uint32 {
	return 0x41cbf256
}

func (*ChatObj) FlagIndex() int {
	return 0
}

func (*ChatObj) ImplementsChat() {}

// Empty constructor, group doesn't exist
type ChatEmpty struct {
	ID int64 // Group identifier
}

func (*ChatEmpty) CRC() uint32 {
	return 0x29562865
}

func (*ChatEmpty) ImplementsChat() {}

// A group to which the user has no access. E.g., because the user was kicked from the group.
type ChatForbidden struct {
	ID    int64  // User identifier
	Title string // Group name
}

func (*ChatForbidden) CRC() uint32 {
	return 0x6592a1a7
}

func (*ChatForbidden) ImplementsChat() {}

type ChatFull interface {
	tl.Object
	ImplementsChatFull()
}

// Full info about a channel, supergroup or gigagroup.
type ChannelFull struct {
	CanViewParticipants    bool `tl:"flag:3,encoded_in_bitflags"`  // Can we view the participant list?
	CanSetUsername         bool `tl:"flag:6,encoded_in_bitflags"`  // Can we set the channel's username?
	CanSetStickers         bool `tl:"flag:7,encoded_in_bitflags"`  // Can we associate a stickerpack to the supergroup?
	HiddenPrehistory       bool `tl:"flag:10,encoded_in_bitflags"` // Is the history before we joined hidden to us?
	CanSetLocation         bool `tl:"flag:16,encoded_in_bitflags"` // Can we set the geolocation of this group (for geogroups)
	HasScheduled           bool `tl:"flag:19,encoded_in_bitflags"` // Whether scheduled messages are available
	CanViewStats           bool `tl:"flag:20,encoded_in_bitflags"` // Can the user view channel/supergroup statistics
	Blocked                bool `tl:"flag:22,encoded_in_bitflags"` // Whether any anonymous admin of this supergroup was blocked: if set, you won't receive messages from anonymous group admins in discussion replies via @replies
	CanDeleteChannel       bool `tl:"flag2:0,encoded_in_bitflags"` // Can we delete this channel?
	Antispam               bool `tl:"flag2:1,encoded_in_bitflags"` // Whether native antispam functionality is enabled in this supergroup.
	ParticipantsHidden     bool `tl:"flag2:2,encoded_in_bitflags"` // Whether the participant list is hidden.
	TranslationsDisabled   bool `tl:"flag2:3,encoded_in_bitflags"` // Whether the real-time chat translation popup should be hidden.
	StoriesPinnedAvailable bool `tl:"flag2:5,encoded_in_bitflags"` // Whether this user has some pinned stories.
	ViewForumAsMessages    bool `tl:"flag2:6,encoded_in_bitflags"` /*
		Users may also choose to display messages from all topics of a forum as if they were sent to a normal group, using a "View as messages" setting in the local client.
		This setting only affects the current account, and is synced to other logged in sessions using the channels.toggleViewForumAsMessages method; invoking this method will update the value of this flag.
	*/
	RestrictedSponsored    bool                `tl:"flag2:11,encoded_in_bitflags"` // Whether ads on this channel were disabled as specified here  (this flag is only visible to the owner of the channel).
	CanViewRevenue         bool                `tl:"flag2:12,encoded_in_bitflags"` // If set, this user can view ad revenue statistics  for this channel.
	PaidMediaAllowed       bool                `tl:"flag2:14,encoded_in_bitflags"` // Whether the current user can send or forward paid media  to this channel.
	CanViewStarsRevenue    bool                `tl:"flag2:15,encoded_in_bitflags"` // If set, this user can view Telegram Star revenue statistics  for this channel.
	PaidReactionsAvailable bool                `tl:"flag2:16,encoded_in_bitflags"` // If set, users may send paid Telegram Star reactions  to messages of this channel.
	StargiftsAvailable     bool                `tl:"flag2:19,encoded_in_bitflags"` // If set, users may send Gifts  to this channel.
	PaidMessagesAvailable  bool                `tl:"flag2:20,encoded_in_bitflags"` // If set, admins may enable enable paid messages  in this supergroup.
	ID                     int64               // ID of the channel
	About                  string              // Info about the channel
	ParticipantsCount      int32               `tl:"flag:0"`  // Number of participants of the channel
	AdminsCount            int32               `tl:"flag:1"`  // Number of channel admins
	KickedCount            int32               `tl:"flag:2"`  // Number of users kicked from the channel
	BannedCount            int32               `tl:"flag:2"`  // Number of users banned from the channel
	OnlineCount            int32               `tl:"flag:13"` // Number of users currently online
	ReadInboxMaxID         int32               // Position up to which all incoming messages are read.
	ReadOutboxMaxID        int32               // Position up to which all outgoing messages are read.
	UnreadCount            int32               // Count of unread messages
	ChatPhoto              Photo               // Channel picture
	NotifySettings         *PeerNotifySettings // Notification settings
	ExportedInvite         ExportedChatInvite  `tl:"flag:23"` // Invite link
	BotInfo                []*BotInfo          // Info about bots in the channel/supergroup
	MigratedFromChatID     int64               `tl:"flag:4"`  // The chat ID from which this group was migrated
	MigratedFromMaxID      int32               `tl:"flag:4"`  // The message ID in the original chat at which this group was migrated
	PinnedMsgID            int32               `tl:"flag:5"`  // Message ID of the last pinned message
	Stickerset             *StickerSet         `tl:"flag:8"`  // Associated stickerset
	AvailableMinID         int32               `tl:"flag:9"`  // Identifier of a maximum unavailable message in a channel due to hidden history.
	FolderID               int32               `tl:"flag:11"` // Peer folder ID, for more info click here
	LinkedChatID           int64               `tl:"flag:14"` // ID of the linked discussion chat for channels (and vice versa, the ID of the linked channel for discussion chats).
	Location               ChannelLocation     `tl:"flag:15"` // Location of the geogroup
	SlowmodeSeconds        int32               `tl:"flag:17"` // If specified, users in supergroups will only be able to send one message every slowmode_seconds seconds
	SlowmodeNextSendDate   int32               `tl:"flag:18"` // Indicates when the user will be allowed to send another message in the supergroup (unixtime)
	StatsDc                int32               `tl:"flag:12"` // If set, specifies the DC to use for fetching channel statistics
	Pts                    int32               // Latest PTS for this channel
	Call                   InputGroupCall      `tl:"flag:21"`  // Livestream or group call information
	TtlPeriod              int32               `tl:"flag:24"`  // Time-To-Live of messages in this channel or supergroup
	PendingSuggestions     []string            `tl:"flag:25"`  // A list of suggested actions for the supergroup admin,.
	GroupcallDefaultJoinAs Peer                `tl:"flag:26"`  // When using phone.getGroupCallJoinAs to get a list of peers that can be used to join a group call, this field indicates the peer that should be selected by default.
	ThemeEmoticon          string              `tl:"flag:27"`  // Emoji representing a specific chat theme
	RequestsPending        int32               `tl:"flag:28"`  // Pending join requests
	RecentRequesters       []int64             `tl:"flag:28"`  // IDs of users who requested to join recently
	DefaultSendAs          Peer                `tl:"flag:29"`  // Default peer used for sending messages to this channel
	AvailableReactions     ChatReactions       `tl:"flag:30"`  // Allowed message reactions
	ReactionsLimit         int32               `tl:"flag2:13"` // This flag may be used to impose a custom limit of unique reactions (i.e. a customizable version of appConfig.reactions_uniq_max).
	Stories                *PeerStories        `tl:"flag2:4"`  // Channel stories
	Wallpaper              WallPaper           `tl:"flag2:7"`  // Wallpaper
	BoostsApplied          int32               `tl:"flag2:8"`  // The number of boosts the current user has applied to the current <em>supergroup</em>.
	BoostsUnrestrict       int32               `tl:"flag2:9"`  // The number of boosts this <em>supergroup</em> requires to bypass slowmode and other restrictions,.
	Emojiset               *StickerSet         `tl:"flag2:10"` // Custom emoji stickerset associated to the current <em>supergroup</em>, set using channels.setEmojiStickers after reaching the appropriate boost level,.
	BotVerification        *BotVerification    `tl:"flag2:17"` // Bot verification icon
	StargiftsCount         int32               `tl:"flag2:18"` // Admins with chatAdminRights.post_messages rights will see the total number of received gifts, everyone else will see the number of gifts added to the channel's profile.
	SendPaidMessagesStars  int64               `tl:"flag2:21"` /*
		If set and bigger than 0, this supergroup, monoforum or the monoforum associated to this channel has enabled paid messages  and we <em>must</em> pay the specified amount of Stars to send messages to it,.
		This flag will be set both for the monoforum and for channelFull of the associated channel).
		If set and equal to 0, the monoforum requires payment in general but we were exempted from paying.
	*/
	MainTab ProfileTab `tl:"flag2:22"` // The main tab for the channel's profile,.
}

func (*ChannelFull) CRC() uint32 {
	return 0xe4e0b29d
}

func (*ChannelFull) FlagIndex() int {
	return 9
}

func (*ChannelFull) ImplementsChatFull() {}

// Full info about a basic group.
type ChatFullObj struct {
	CanSetUsername         bool                `tl:"flag:7,encoded_in_bitflags"`  // Can we change the username of this chat
	HasScheduled           bool                `tl:"flag:8,encoded_in_bitflags"`  // Whether scheduled messages are available
	TranslationsDisabled   bool                `tl:"flag:19,encoded_in_bitflags"` // Whether the real-time chat translation popup should be hidden.
	ID                     int64               // ID of the chat
	About                  string              // About string for this chat
	Participants           ChatParticipants    // Participant list
	ChatPhoto              Photo               `tl:"flag:2"` // Chat photo
	NotifySettings         *PeerNotifySettings // Notification settings
	ExportedInvite         ExportedChatInvite  `tl:"flag:13"` // Chat invite
	BotInfo                []*BotInfo          `tl:"flag:3"`  // Info about bots that are in this chat
	PinnedMsgID            int32               `tl:"flag:6"`  // Message ID of the last pinned message
	FolderID               int32               `tl:"flag:11"` // Peer folder ID, for more info click here
	Call                   InputGroupCall      `tl:"flag:12"` // Group call information
	TtlPeriod              int32               `tl:"flag:14"` // Time-To-Live of messages sent by the current user to this chat
	GroupcallDefaultJoinAs Peer                `tl:"flag:15"` // When using phone.getGroupCallJoinAs to get a list of peers that can be used to join a group call, this field indicates the peer that should be selected by default.
	ThemeEmoticon          string              `tl:"flag:16"` // Emoji representing a specific chat theme
	RequestsPending        int32               `tl:"flag:17"` // Pending join requests
	RecentRequesters       []int64             `tl:"flag:17"` // IDs of users who requested to join recently
	AvailableReactions     ChatReactions       `tl:"flag:18"` // Allowed message reactions
	ReactionsLimit         int32               `tl:"flag:20"` // This flag may be used to impose a custom limit of unique reactions (i.e. a customizable version of appConfig.reactions_uniq_max).
}

func (*ChatFullObj) CRC() uint32 {
	return 0x2633421b
}

func (*ChatFullObj) FlagIndex() int {
	return 0
}

func (*ChatFullObj) ImplementsChatFull() {}

type ChatInvite interface {
	tl.Object
	ImplementsChatInvite()
}

// Chat invite info
type ChatInviteObj struct {
	Channel                  bool                      `tl:"flag:0,encoded_in_bitflags"`  // Whether this is a channel/supergroup or a normal group
	Broadcast                bool                      `tl:"flag:1,encoded_in_bitflags"`  // Whether this is a channel
	Public                   bool                      `tl:"flag:2,encoded_in_bitflags"`  // Whether this is a public channel/supergroup
	Megagroup                bool                      `tl:"flag:3,encoded_in_bitflags"`  // Whether this is a supergroup
	RequestNeeded            bool                      `tl:"flag:6,encoded_in_bitflags"`  // Whether the join request  must be first approved by an administrator
	Verified                 bool                      `tl:"flag:7,encoded_in_bitflags"`  // Is this chat or channel verified by Telegram?
	Scam                     bool                      `tl:"flag:8,encoded_in_bitflags"`  // This chat is probably a scam
	Fake                     bool                      `tl:"flag:9,encoded_in_bitflags"`  // If set, this chat was reported by many users as a fake or scam: be careful when interacting with it.
	CanRefulfillSubscription bool                      `tl:"flag:11,encoded_in_bitflags"` // If set, indicates that the user has already paid for the associated Telegram Star subscriptions  and it hasn't expired yet, so they may re-join the channel using messages.importChatInvite without repeating the payment.
	Title                    string                    // Chat/supergroup/channel title
	About                    string                    `tl:"flag:5"` // Description of the group of channel
	Photo                    Photo                     // Chat/supergroup/channel photo
	ParticipantsCount        int32                     // Participant count
	Participants             []User                    `tl:"flag:4"` // A few of the participants that are in the group
	Color                    int32                     // Profile color palette ID
	SubscriptionPricing      *StarsSubscriptionPricing `tl:"flag:10"` // For Telegram Star subscriptions , contains the pricing of the subscription the user must activate to join the private channel.
	SubscriptionFormID       int64                     `tl:"flag:12"` // For Telegram Star subscriptions , the ID of the payment form for the subscription.
	BotVerification          *BotVerification          `tl:"flag:13"` // Describes a bot verification icon.
}

func (*ChatInviteObj) CRC() uint32 {
	return 0x5c9d3702
}

func (*ChatInviteObj) FlagIndex() int {
	return 0
}

func (*ChatInviteObj) ImplementsChatInvite() {}

// The user has already joined this chat
type ChatInviteAlready struct {
	Chat Chat // The chat connected to the invite
}

func (*ChatInviteAlready) CRC() uint32 {
	return 0x5a686d7c
}

func (*ChatInviteAlready) ImplementsChatInvite() {}

// A chat invitation that also allows peeking into the group to read messages without joining it.
type ChatInvitePeek struct {
	Chat    Chat  // Chat information
	Expires int32 // Read-only anonymous access to this group will be revoked at this date
}

func (*ChatInvitePeek) CRC() uint32 {
	return 0x61695cb0
}

func (*ChatInvitePeek) ImplementsChatInvite() {}

type ChatParticipant interface {
	tl.Object
	ImplementsChatParticipant()
}

// Group member.
type ChatParticipantObj struct {
	UserID    int64 // Member user ID
	InviterID int64 // ID of the user that added the member to the group
	Date      int32 // Date added to the group
}

func (*ChatParticipantObj) CRC() uint32 {
	return 0xc02d4007
}

func (*ChatParticipantObj) ImplementsChatParticipant() {}

// Chat admin
type ChatParticipantAdmin struct {
	UserID    int64 // ID of a group member that is admin
	InviterID int64 // ID of the user that added the member to the group
	Date      int32 // Date when the user was added
}

func (*ChatParticipantAdmin) CRC() uint32 {
	return 0xa0933f5b
}

func (*ChatParticipantAdmin) ImplementsChatParticipant() {}

// Represents the creator of the group
type ChatParticipantCreator struct {
	UserID int64 // ID of the user that created the group
}

func (*ChatParticipantCreator) CRC() uint32 {
	return 0xe46bcee4
}

func (*ChatParticipantCreator) ImplementsChatParticipant() {}

type ChatParticipants interface {
	tl.Object
	ImplementsChatParticipants()
}

// Group members.
type ChatParticipantsObj struct {
	ChatID       int64             // Group identifier
	Participants []ChatParticipant // List of group members
	Version      int32             // Group version number
}

func (*ChatParticipantsObj) CRC() uint32 {
	return 0x3cbc93f8
}

func (*ChatParticipantsObj) ImplementsChatParticipants() {}

// Info on members is unavailable
type ChatParticipantsForbidden struct {
	ChatID          int64           // Group ID
	SelfParticipant ChatParticipant `tl:"flag:0"` // Info about the group membership of the current user
}

func (*ChatParticipantsForbidden) CRC() uint32 {
	return 0x8763d3e1
}

func (*ChatParticipantsForbidden) FlagIndex() int {
	return 0
}

func (*ChatParticipantsForbidden) ImplementsChatParticipants() {}

type ChatPhoto interface {
	tl.Object
	ImplementsChatPhoto()
}

// Group profile photo.
type ChatPhotoObj struct {
	HasVideo      bool   `tl:"flag:0,encoded_in_bitflags"` // Whether the user has an animated profile picture
	PhotoID       int64  // Photo ID
	StrippedThumb []byte `tl:"flag:1"` // Stripped thumbnail
	DcID          int32  // DC where this photo is stored
}

func (*ChatPhotoObj) CRC() uint32 {
	return 0x1c6e1c11
}

func (*ChatPhotoObj) FlagIndex() int {
	return 0
}

func (*ChatPhotoObj) ImplementsChatPhoto() {}

// Group photo is not set.
type ChatPhotoEmpty struct{}

func (*ChatPhotoEmpty) CRC() uint32 {
	return 0x37c1011c
}

func (*ChatPhotoEmpty) ImplementsChatPhoto() {}

type ChatReactions interface {
	tl.Object
	ImplementsChatReactions()
}

// All reactions or all non-custom reactions are allowed
type ChatReactionsAll struct {
	AllowCustom bool `tl:"flag:0,encoded_in_bitflags"` // Whether to allow custom reactions
}

func (*ChatReactionsAll) CRC() uint32 {
	return 0x52928bca
}

func (*ChatReactionsAll) FlagIndex() int {
	return 0
}

func (*ChatReactionsAll) ImplementsChatReactions() {}

// No reactions are allowed
type ChatReactionsNone struct{}

func (*ChatReactionsNone) CRC() uint32 {
	return 0xeafc32bc
}

func (*ChatReactionsNone) ImplementsChatReactions() {}

// Some reactions are allowed
type ChatReactionsSome struct {
	Reactions []Reaction // Allowed set of reactions: the reactions_in_chat_max configuration field indicates the maximum number of reactions that can be specified in this field.
}

func (*ChatReactionsSome) CRC() uint32 {
	return 0x661d4037
}

func (*ChatReactionsSome) ImplementsChatReactions() {}

type ChatTheme interface {
	tl.Object
	ImplementsChatTheme()
}

// A chat theme
type ChatThemeObj struct {
	Emoticon string // The emoji identifying the chat theme.
}

func (*ChatThemeObj) CRC() uint32 {
	return 0xc3dffc04
}

func (*ChatThemeObj) ImplementsChatTheme() {}

// A chat theme based on a collectible gift ».
type ChatThemeUniqueGift struct {
	Gift          StarGift         // The owned collectible gift on which this theme is based, as a starGiftUnique constructor.
	ThemeSettings []*ThemeSettings // Theme settings.
}

func (*ChatThemeUniqueGift) CRC() uint32 {
	return 0x3458f9c8
}

func (*ChatThemeUniqueGift) ImplementsChatTheme() {}

type Dialog interface {
	tl.Object
	ImplementsDialog()
}

// Chat
type DialogObj struct {
	Pinned              bool `tl:"flag:2,encoded_in_bitflags"` // Is the dialog pinned
	UnreadMark          bool `tl:"flag:3,encoded_in_bitflags"` // Whether the chat was manually marked as unread
	ViewForumAsMessages bool `tl:"flag:6,encoded_in_bitflags"` /*
		Users may also choose to display messages from all topics of a forum as if they were sent to a normal group, using a "View as messages" setting in the local client.
		This setting only affects the current account, and is synced to other logged in sessions using the channels.toggleViewForumAsMessages method; invoking this method will update the value of this flag.
	*/
	Peer                 Peer                // The chat
	TopMessage           int32               // The latest message ID
	ReadInboxMaxID       int32               // Position up to which all incoming messages are read.
	ReadOutboxMaxID      int32               // Position up to which all outgoing messages are read.
	UnreadCount          int32               // Number of unread messages
	UnreadMentionsCount  int32               // Number of unread mentions
	UnreadReactionsCount int32               // Number of unread reactions to messages you sent
	NotifySettings       *PeerNotifySettings // Notification settings
	Pts                  int32               `tl:"flag:0"` // PTS
	Draft                DraftMessage        `tl:"flag:1"` // Message draft
	FolderID             int32               `tl:"flag:4"` // Peer folder ID, for more info click here
	TtlPeriod            int32               `tl:"flag:5"` // Time-to-live of all messages sent in this dialog
}

func (*DialogObj) CRC() uint32 {
	return 0xd58a08c6
}

func (*DialogObj) FlagIndex() int {
	return 0
}

func (*DialogObj) ImplementsDialog() {}

// Dialog in folder
type DialogFolder struct {
	Pinned                     bool    `tl:"flag:2,encoded_in_bitflags"` // Is this folder pinned
	Folder                     *Folder // The folder
	Peer                       Peer    // Peer in folder
	TopMessage                 int32   // Latest message ID of dialog
	UnreadMutedPeersCount      int32   // Number of unread muted peers in folder
	UnreadUnmutedPeersCount    int32   // Number of unread unmuted peers in folder
	UnreadMutedMessagesCount   int32   // Number of unread messages from muted peers in folder
	UnreadUnmutedMessagesCount int32   // Number of unread messages from unmuted peers in folder
}

func (*DialogFolder) CRC() uint32 {
	return 0x71bd134c
}

func (*DialogFolder) FlagIndex() int {
	return 0
}

func (*DialogFolder) ImplementsDialog() {}

type DialogFilter interface {
	tl.Object
	ImplementsDialogFilter()
}

// Dialog filter AKA folder
type DialogFilterObj struct {
	Contacts        bool              `tl:"flag:0,encoded_in_bitflags"`  // Whether to include all contacts in this folder
	NonContacts     bool              `tl:"flag:1,encoded_in_bitflags"`  // Whether to include all non-contacts in this folder
	Groups          bool              `tl:"flag:2,encoded_in_bitflags"`  // Whether to include all groups in this folder
	Broadcasts      bool              `tl:"flag:3,encoded_in_bitflags"`  // Whether to include all channels in this folder
	Bots            bool              `tl:"flag:4,encoded_in_bitflags"`  // Whether to include all bots in this folder
	ExcludeMuted    bool              `tl:"flag:11,encoded_in_bitflags"` // Whether to exclude muted chats from this folder
	ExcludeRead     bool              `tl:"flag:12,encoded_in_bitflags"` // Whether to exclude read chats from this folder
	ExcludeArchived bool              `tl:"flag:13,encoded_in_bitflags"` // Whether to exclude archived chats from this folder
	TitleNoanimate  bool              `tl:"flag:28,encoded_in_bitflags"` // If set, any animated emojis present in title should not be animated and should be instead frozen on the first frame.
	ID              int32             // Folder ID
	Title           *TextWithEntities // Folder name (max 12 UTF-8 chars)
	Emoticon        string            `tl:"flag:25"` // Emoji to use as icon for the folder.
	Color           int32             `tl:"flag:27"` // A color ID for the folder tag associated to this folder,.
	PinnedPeers     []InputPeer       // Pinned chats, folders can have unlimited pinned chats
	IncludePeers    []InputPeer       // Include the following chats in this folder
	ExcludePeers    []InputPeer       // Exclude the following chats from this folder
}

func (*DialogFilterObj) CRC() uint32 {
	return 0xaa472651
}

func (*DialogFilterObj) FlagIndex() int {
	return 0
}

func (*DialogFilterObj) ImplementsDialogFilter() {}

// A folder imported using a chat folder deep link ».
type DialogFilterChatlist struct {
	HasMyInvites   bool              `tl:"flag:26,encoded_in_bitflags"` // Whether the current user has created some chat folder deep links  to share the folder as well.
	TitleNoanimate bool              `tl:"flag:28,encoded_in_bitflags"` // If set, any animated emojis present in title should not be animated and should be instead frozen on the first frame.
	ID             int32             // ID of the folder
	Title          *TextWithEntities // Name of the folder (max 12 UTF-8 chars)
	Emoticon       string            `tl:"flag:25"` // Emoji to use as icon for the folder.
	Color          int32             `tl:"flag:27"` // A color ID for the folder tag associated to this folder,.
	PinnedPeers    []InputPeer       // Pinned chats, folders can have unlimited pinned chats
	IncludePeers   []InputPeer       // Chats to include in the folder
}

func (*DialogFilterChatlist) CRC() uint32 {
	return 0x96537bd7
}

func (*DialogFilterChatlist) FlagIndex() int {
	return 0
}

func (*DialogFilterChatlist) ImplementsDialogFilter() {}

// Used only when reordering folders to indicate the default (all chats) folder.
type DialogFilterDefault struct{}

func (*DialogFilterDefault) CRC() uint32 {
	return 0x363293ae
}

func (*DialogFilterDefault) ImplementsDialogFilter() {}

type DialogPeer interface {
	tl.Object
	ImplementsDialogPeer()
}

// Peer
type DialogPeerObj struct {
	Peer Peer // Peer
}

func (*DialogPeerObj) CRC() uint32 {
	return 0xe56dbf05
}

func (*DialogPeerObj) ImplementsDialogPeer() {}

// Peer folder
type DialogPeerFolder struct {
	FolderID int32 // Peer folder ID, for more info click here
}

func (*DialogPeerFolder) CRC() uint32 {
	return 0x514519e2
}

func (*DialogPeerFolder) ImplementsDialogPeer() {}

type Document interface {
	tl.Object
	ImplementsDocument()
}

// Document
type DocumentObj struct {
	ID            int64               // Document ID
	AccessHash    int64               // Check sum, dependent on document ID
	FileReference []byte              // File reference
	Date          int32               // Creation date
	MimeType      string              // MIME type
	Size          int64               // Size
	Thumbs        []PhotoSize         `tl:"flag:0"` // Thumbnails
	VideoThumbs   []VideoSize         `tl:"flag:1"` // Video thumbnails
	DcID          int32               // DC ID
	Attributes    []DocumentAttribute // Attributes
}

func (*DocumentObj) CRC() uint32 {
	return 0x8fd4c4d8
}

func (*DocumentObj) FlagIndex() int {
	return 0
}

func (*DocumentObj) ImplementsDocument() {}

// Empty constructor, document doesn't exist.
type DocumentEmpty struct {
	ID int64 // Document ID or 0
}

func (*DocumentEmpty) CRC() uint32 {
	return 0x36f8c871
}

func (*DocumentEmpty) ImplementsDocument() {}

type DocumentAttribute interface {
	tl.Object
	ImplementsDocumentAttribute()
}

// Defines an animated GIF
type DocumentAttributeAnimated struct{}

func (*DocumentAttributeAnimated) CRC() uint32 {
	return 0x11b58939
}

func (*DocumentAttributeAnimated) ImplementsDocumentAttribute() {}

// Represents an audio file
type DocumentAttributeAudio struct {
	Voice     bool   `tl:"flag:10,encoded_in_bitflags"` // Whether this is a voice message
	Duration  int32  // Duration in seconds
	Title     string `tl:"flag:0"` // Name of song
	Performer string `tl:"flag:1"` // Performer
	Waveform  []byte `tl:"flag:2"` /*
		Waveform: consists in a series of bitpacked 5-bit values.
		Example implementation: android.
	*/
}

func (*DocumentAttributeAudio) CRC() uint32 {
	return 0x9852f9c6
}

func (*DocumentAttributeAudio) FlagIndex() int {
	return 0
}

func (*DocumentAttributeAudio) ImplementsDocumentAttribute() {}

// Info about a custom emoji
type DocumentAttributeCustomEmoji struct {
	Free       bool            `tl:"flag:0,encoded_in_bitflags"` // Whether this custom emoji can be sent by non-Premium users
	TextColor  bool            `tl:"flag:1,encoded_in_bitflags"` // Whether the color of this TGS custom emoji should be changed to the text color when used in messages, the accent color if used as emoji status, white on chat photos, or another appropriate color based on context.
	Alt        string          // The actual emoji
	Stickerset InputStickerSet // The emoji stickerset to which this emoji belongs.
}

func (*DocumentAttributeCustomEmoji) CRC() uint32 {
	return 0xfd149899
}

func (*DocumentAttributeCustomEmoji) FlagIndex() int {
	return 0
}

func (*DocumentAttributeCustomEmoji) ImplementsDocumentAttribute() {}

// A simple document with a file name
type DocumentAttributeFilename struct {
	FileName string // The file name
}

func (*DocumentAttributeFilename) CRC() uint32 {
	return 0x15590068
}

func (*DocumentAttributeFilename) ImplementsDocumentAttribute() {}

// Whether the current document has stickers attached
type DocumentAttributeHasStickers struct{}

func (*DocumentAttributeHasStickers) CRC() uint32 {
	return 0x9801d2f7
}

func (*DocumentAttributeHasStickers) ImplementsDocumentAttribute() {}

// Defines the width and height of an image uploaded as document
type DocumentAttributeImageSize struct {
	W int32 // Width of image
	H int32 // Height of image
}

func (*DocumentAttributeImageSize) CRC() uint32 {
	return 0x6c37c15c
}

func (*DocumentAttributeImageSize) ImplementsDocumentAttribute() {}

// Defines a sticker
type DocumentAttributeSticker struct {
	Mask       bool            `tl:"flag:1,encoded_in_bitflags"` // Whether this is a mask sticker
	Alt        string          // Alternative emoji representation of sticker
	Stickerset InputStickerSet // Associated stickerset
	MaskCoords *MaskCoords     `tl:"flag:0"` // Mask coordinates (if this is a mask sticker, attached to a photo)
}

func (*DocumentAttributeSticker) CRC() uint32 {
	return 0x6319d612
}

func (*DocumentAttributeSticker) FlagIndex() int {
	return 0
}

func (*DocumentAttributeSticker) ImplementsDocumentAttribute() {}

// Defines a video
type DocumentAttributeVideo struct {
	RoundMessage      bool    `tl:"flag:0,encoded_in_bitflags"` // Whether this is a round video
	SupportsStreaming bool    `tl:"flag:1,encoded_in_bitflags"` // Whether the video supports streaming
	Nosound           bool    `tl:"flag:3,encoded_in_bitflags"` // Whether the specified document is a video file with no audio tracks
	Duration          float64 // Duration in seconds
	W                 int32   // Video width
	H                 int32   // Video height
	PreloadPrefixSize int32   `tl:"flag:2"` // Number of bytes to preload when preloading videos (particularly video stories).
	VideoStartTs      float64 `tl:"flag:4"` // Floating point UNIX timestamp in seconds, indicating the frame of the video that should be used as static preview and thumbnail.
	VideoCodec        string  `tl:"flag:5"` // Codec used for the video, i.e. "h264", "h265", or "av1"
}

func (*DocumentAttributeVideo) CRC() uint32 {
	return 0x43c57c48
}

func (*DocumentAttributeVideo) FlagIndex() int {
	return 0
}

func (*DocumentAttributeVideo) ImplementsDocumentAttribute() {}

type DraftMessage interface {
	tl.Object
	ImplementsDraftMessage()
}

// Represents a message draft.
type DraftMessageObj struct {
	NoWebpage     bool            `tl:"flag:1,encoded_in_bitflags"` // Whether no webpage preview will be generated
	InvertMedia   bool            `tl:"flag:6,encoded_in_bitflags"` // If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.
	ReplyTo       InputReplyTo    `tl:"flag:4"`                     // If set, indicates that the message should be sent in reply to the specified message or story.
	Message       string          // The draft
	Entities      []MessageEntity `tl:"flag:3"` // Message entities for styled text.
	Media         InputMedia      `tl:"flag:5"` // Media.
	Date          int32           // Date of last update of the draft.
	Effect        int64           `tl:"flag:7"` // A message effect that should be played as specified here.
	SuggestedPost *SuggestedPost  `tl:"flag:8"` // Used to suggest a post to a channel,.
}

func (*DraftMessageObj) CRC() uint32 {
	return 0x96eaa5eb
}

func (*DraftMessageObj) FlagIndex() int {
	return 0
}

func (*DraftMessageObj) ImplementsDraftMessage() {}

// Empty draft
type DraftMessageEmpty struct {
	Date int32 `tl:"flag:0"` // When was the draft last updated
}

func (*DraftMessageEmpty) CRC() uint32 {
	return 0x1b0c841a
}

func (*DraftMessageEmpty) FlagIndex() int {
	return 0
}

func (*DraftMessageEmpty) ImplementsDraftMessage() {}

type EmailVerification interface {
	tl.Object
	ImplementsEmailVerification()
}

// Apple ID email verification token
type EmailVerificationApple struct {
	Token string // Token
}

func (*EmailVerificationApple) CRC() uint32 {
	return 0x96d074fd
}

func (*EmailVerificationApple) ImplementsEmailVerification() {}

// Email verification code
type EmailVerificationCode struct {
	Code string // Received verification code
}

func (*EmailVerificationCode) CRC() uint32 {
	return 0x922e55a9
}

func (*EmailVerificationCode) ImplementsEmailVerification() {}

// Google ID email verification token
type EmailVerificationGoogle struct {
	Token string // Token
}

func (*EmailVerificationGoogle) CRC() uint32 {
	return 0xdb909ec2
}

func (*EmailVerificationGoogle) ImplementsEmailVerification() {}

type EmailVerifyPurpose interface {
	tl.Object
	ImplementsEmailVerifyPurpose()
}

// Email verification purpose: change login email
type EmailVerifyPurposeLoginChange struct{}

func (*EmailVerifyPurposeLoginChange) CRC() uint32 {
	return 0x527d22eb
}

func (*EmailVerifyPurposeLoginChange) ImplementsEmailVerifyPurpose() {}

// Email verification purpose: setup login email
type EmailVerifyPurposeLoginSetup struct {
	PhoneNumber   string // Phone number
	PhoneCodeHash string // Phone code hash as specified by the documentation
}

func (*EmailVerifyPurposeLoginSetup) CRC() uint32 {
	return 0x4345be73
}

func (*EmailVerifyPurposeLoginSetup) ImplementsEmailVerifyPurpose() {}

// Verify an email for use in telegram passport
type EmailVerifyPurposePassport struct{}

func (*EmailVerifyPurposePassport) CRC() uint32 {
	return 0xbbf51685
}

func (*EmailVerifyPurposePassport) ImplementsEmailVerifyPurpose() {}

type EmojiGroup interface {
	tl.Object
	ImplementsEmojiGroup()
}

// Represents an emoji category.
type EmojiGroupObj struct {
	Title       string   // Category name, i.e. "Animals", "Flags", "Faces" and so on...
	IconEmojiID int64    // A single custom emoji used as preview for the category.
	Emoticons   []string // A list of UTF-8 emojis, matching the category.
}

func (*EmojiGroupObj) CRC() uint32 {
	return 0x7a9abda9
}

func (*EmojiGroupObj) ImplementsEmojiGroup() {}

// Represents an emoji category, that should be moved to the top of the list when choosing a sticker for a business introduction
type EmojiGroupGreeting struct {
	Title       string   // Category name, i.e. "Animals", "Flags", "Faces" and so on...
	IconEmojiID int64    // A single custom emoji used as preview for the category.
	Emoticons   []string // A list of UTF-8 emojis, matching the category.
}

func (*EmojiGroupGreeting) CRC() uint32 {
	return 0x80d26cc7
}

func (*EmojiGroupGreeting) ImplementsEmojiGroup() {}

// An emoji category, used to select all Premium-only stickers (i.e. those with a Premium effect »)/Premium-only custom emojis (i.e. those where the documentAttributeCustomEmoji.`free` flag is <strong>not</strong> set)
type EmojiGroupPremium struct {
	Title       string // Category name, i.e. "Animals", "Flags", "Faces" and so on...
	IconEmojiID int64  // A single custom emoji used as preview for the category.
}

func (*EmojiGroupPremium) CRC() uint32 {
	return 0x93bcf34
}

func (*EmojiGroupPremium) ImplementsEmojiGroup() {}

type EmojiKeyword interface {
	tl.Object
	ImplementsEmojiKeyword()
}

// Emoji keyword
type EmojiKeywordObj struct {
	Keyword   string   // Keyword
	Emoticons []string // Emojis associated to keyword
}

func (*EmojiKeywordObj) CRC() uint32 {
	return 0xd5b3b9f9
}

func (*EmojiKeywordObj) ImplementsEmojiKeyword() {}

// Deleted emoji keyword
type EmojiKeywordDeleted struct {
	Keyword   string   // Keyword
	Emoticons []string // Emojis that were associated to keyword
}

func (*EmojiKeywordDeleted) CRC() uint32 {
	return 0x236df622
}

func (*EmojiKeywordDeleted) ImplementsEmojiKeyword() {}

type EmojiList interface {
	tl.Object
	ImplementsEmojiList()
}

// Represents a list of custom emojis.
type EmojiListObj struct {
	Hash       int64   // Hash used for caching, for more info click here
	DocumentID []int64 // Custom emoji IDs
}

func (*EmojiListObj) CRC() uint32 {
	return 0x7a1e11d1
}

func (*EmojiListObj) ImplementsEmojiList() {}

// The list of custom emojis hasn't changed.
type EmojiListNotModified struct{}

func (*EmojiListNotModified) CRC() uint32 {
	return 0x481eadfa
}

func (*EmojiListNotModified) ImplementsEmojiList() {}

type EmojiStatus interface {
	tl.Object
	ImplementsEmojiStatus()
}

// An emoji status
type EmojiStatusObj struct {
	DocumentID int64 // Custom emoji document ID
	Until      int32 `tl:"flag:0"` // If set, the emoji status will be active until the specified unixtime.
}

func (*EmojiStatusObj) CRC() uint32 {
	return 0xe7ff068a
}

func (*EmojiStatusObj) FlagIndex() int {
	return 0
}

func (*EmojiStatusObj) ImplementsEmojiStatus() {}

// An owned collectible gift » as emoji status.
type EmojiStatusCollectible struct {
	CollectibleID     int64  // ID of the collectible (from starGiftUnique.id).
	DocumentID        int64  // ID of the custom emoji representing the status.
	Title             string // Name of the collectible.
	Slug              string // Unique identifier of the collectible that may be used to create a collectible gift link  for the current collectible, or to fetch further info about the collectible using payments.getUniqueStarGift.
	PatternDocumentID int64  // The ID of a pattern to apply on the profile's backdrop, correlated to the starGiftAttributePattern from the gift in slug.
	CenterColor       int32  // Color of the center of the profile backdrop in RGB24 format, from the gift's starGiftAttributeBackdrop.
	EdgeColor         int32  // Color of the edges of the profile backdrop in RGB24 format, from the gift's starGiftAttributeBackdrop.
	PatternColor      int32  // Color of the pattern_document_id applied on the profile backdrop in RGB24 format, from the gift's starGiftAttributeBackdrop.
	TextColor         int32  // Color of text on the profile backdrop in RGB24 format, from the gift's starGiftAttributeBackdrop.
	Until             int32  `tl:"flag:0"` // If set, the emoji status will be active until the specified unixtime.
}

func (*EmojiStatusCollectible) CRC() uint32 {
	return 0x7184603b
}

func (*EmojiStatusCollectible) FlagIndex() int {
	return 0
}

func (*EmojiStatusCollectible) ImplementsEmojiStatus() {}

// No emoji status is set
type EmojiStatusEmpty struct{}

func (*EmojiStatusEmpty) CRC() uint32 {
	return 0x2de11aae
}

func (*EmojiStatusEmpty) ImplementsEmojiStatus() {}

// An owned collectible gift » as emoji status: can only be used in account.updateEmojiStatus, is never returned by the API.
type InputEmojiStatusCollectible struct {
	CollectibleID int64 // ID of the collectible (from starGiftUnique.id).
	Until         int32 `tl:"flag:0"` // If set, the emoji status will be active until the specified unixtime.
}

func (*InputEmojiStatusCollectible) CRC() uint32 {
	return 0x7141dbf
}

func (*InputEmojiStatusCollectible) FlagIndex() int {
	return 0
}

func (*InputEmojiStatusCollectible) ImplementsEmojiStatus() {}

type EncryptedChat interface {
	tl.Object
	ImplementsEncryptedChat()
}

// Encrypted chat
type EncryptedChatObj struct {
	ID            int32  // Chat ID
	AccessHash    int64  // Check sum dependent on the user ID
	Date          int32  // Date chat was created
	AdminID       int64  // Chat creator ID
	ParticipantID int64  // ID of the second chat participant
	GAOrB         []byte /*
		B = g ^ b mod p, if the currently authorized user is the chat's creator,
		or A = g ^ a mod p otherwise
		See Wikipedia for more info
	*/
	KeyFingerprint int64 // 64-bit fingerprint of received key
}

func (*EncryptedChatObj) CRC() uint32 {
	return 0x61f0d4c7
}

func (*EncryptedChatObj) ImplementsEncryptedChat() {}

// Discarded or deleted chat.
type EncryptedChatDiscarded struct {
	HistoryDeleted bool  `tl:"flag:0,encoded_in_bitflags"` // Whether both users of this secret chat should also remove all of its messages
	ID             int32 // Chat ID
}

func (*EncryptedChatDiscarded) CRC() uint32 {
	return 0x1e1c7c45
}

func (*EncryptedChatDiscarded) FlagIndex() int {
	return 0
}

func (*EncryptedChatDiscarded) ImplementsEncryptedChat() {}

// Empty constructor.
type EncryptedChatEmpty struct {
	ID int32 // Chat ID
}

func (*EncryptedChatEmpty) CRC() uint32 {
	return 0xab7ec0a0
}

func (*EncryptedChatEmpty) ImplementsEncryptedChat() {}

// Request to create an encrypted chat.
type EncryptedChatRequested struct {
	FolderID      int32  `tl:"flag:0"` // Peer folder ID, for more info click here
	ID            int32  // Chat ID
	AccessHash    int64  // Check sum depending on user ID
	Date          int32  // Chat creation date
	AdminID       int64  // Chat creator ID
	ParticipantID int64  // ID of second chat participant
	GA            []byte // A = g ^ a mod p, see Wikipedia
}

func (*EncryptedChatRequested) CRC() uint32 {
	return 0x48f1d94c
}

func (*EncryptedChatRequested) FlagIndex() int {
	return 0
}

func (*EncryptedChatRequested) ImplementsEncryptedChat() {}

// Chat waiting for approval of second participant.
type EncryptedChatWaiting struct {
	ID            int32 // Chat ID
	AccessHash    int64 // Checking sum depending on user ID
	Date          int32 // Date of chat creation
	AdminID       int64 // Chat creator ID
	ParticipantID int64 // ID of second chat participant
}

func (*EncryptedChatWaiting) CRC() uint32 {
	return 0x66b25953
}

func (*EncryptedChatWaiting) ImplementsEncryptedChat() {}

type EncryptedFile interface {
	tl.Object
	ImplementsEncryptedFile()
}

// Encrypted file.
type EncryptedFileObj struct {
	ID             int64 // File ID
	AccessHash     int64 // Checking sum depending on user ID
	Size           int64 // File size in bytes
	DcID           int32 // Number of data center
	KeyFingerprint int32 // 32-bit fingerprint of key used for file encryption
}

func (*EncryptedFileObj) CRC() uint32 {
	return 0xa8008cd8
}

func (*EncryptedFileObj) ImplementsEncryptedFile() {}

// Empty constructor, non-existing file.
type EncryptedFileEmpty struct{}

func (*EncryptedFileEmpty) CRC() uint32 {
	return 0xc21f497e
}

func (*EncryptedFileEmpty) ImplementsEncryptedFile() {}

type EncryptedMessage interface {
	tl.Object
	ImplementsEncryptedMessage()
}

// Encrypted message.
type EncryptedMessageObj struct {
	RandomID int64         // Random message ID, assigned by the author of message
	ChatID   int32         // ID of encrypted chat
	Date     int32         // Date of sending
	Bytes    []byte        // TL-serialization of DecryptedMessage type, encrypted with the key created at chat initialization
	File     EncryptedFile // Attached encrypted file
}

func (*EncryptedMessageObj) CRC() uint32 {
	return 0xed18c118
}

func (*EncryptedMessageObj) ImplementsEncryptedMessage() {}

// Encrypted service message
type EncryptedMessageService struct {
	RandomID int64  // Random message ID, assigned by the author of message
	ChatID   int32  // ID of encrypted chat
	Date     int32  // Date of sending
	Bytes    []byte // TL-serialization of the DecryptedMessage type, encrypted with the key created at chat initialization
}

func (*EncryptedMessageService) CRC() uint32 {
	return 0x23734b06
}

func (*EncryptedMessageService) ImplementsEncryptedMessage() {}

type ExportedChatInvite interface {
	tl.Object
	ImplementsExportedChatInvite()
}

// Exported chat invite
type ChatInviteExported struct {
	Revoked             bool                      `tl:"flag:0,encoded_in_bitflags"` // Whether this chat invite was revoked
	Permanent           bool                      `tl:"flag:5,encoded_in_bitflags"` // Whether this chat invite has no expiration
	RequestNeeded       bool                      `tl:"flag:6,encoded_in_bitflags"` // Whether users importing this invite link will have to be approved to join the channel or group
	Link                string                    // Chat invitation link
	AdminID             int64                     // ID of the admin that created this chat invite
	Date                int32                     // When was this chat invite created
	StartDate           int32                     `tl:"flag:4"`  // When was this chat invite last modified
	ExpireDate          int32                     `tl:"flag:1"`  // When does this chat invite expire
	UsageLimit          int32                     `tl:"flag:2"`  // Maximum number of users that can join using this link
	Usage               int32                     `tl:"flag:3"`  // How many users joined using this link
	Requested           int32                     `tl:"flag:7"`  // Number of users that have already used this link to join
	SubscriptionExpired int32                     `tl:"flag:10"` // For Telegram Star subscriptions , contains the number of chat members which have already joined the chat using the link, but have already left due to expiration of their subscription.
	Title               string                    `tl:"flag:8"`  // Custom description for the invite link, visible only to admins
	SubscriptionPricing *StarsSubscriptionPricing `tl:"flag:9"`  // For Telegram Star subscriptions , contains the pricing of the subscription the user must activate to join the private channel.
}

func (*ChatInviteExported) CRC() uint32 {
	return 0xa22cbd96
}

func (*ChatInviteExported) FlagIndex() int {
	return 0
}

func (*ChatInviteExported) ImplementsExportedChatInvite() {}

// Used in updates and in the channel log to indicate when a user is requesting to join or has joined a discussion group
type ChatInvitePublicJoinRequests struct{}

func (*ChatInvitePublicJoinRequests) CRC() uint32 {
	return 0xed107ab7
}

func (*ChatInvitePublicJoinRequests) ImplementsExportedChatInvite() {}

type ForumTopic interface {
	tl.Object
	ImplementsForumTopic()
}

// Represents a forum topic.
type ForumTopicObj struct {
	My                   bool  `tl:"flag:1,encoded_in_bitflags"`
	Closed               bool  `tl:"flag:2,encoded_in_bitflags"`
	Pinned               bool  `tl:"flag:3,encoded_in_bitflags"`
	Short                bool  `tl:"flag:5,encoded_in_bitflags"`
	Hidden               bool  `tl:"flag:6,encoded_in_bitflags"`
	ID                   int32 `tl:"flag:7"`
	Date                 int32
	Peer                 Peer
	Title                string
	IconColor            int32
	IconEmojiID          int64 `tl:"flag:0"`
	TopMessage           int32
	ReadInboxMaxID       int32
	ReadOutboxMaxID      int32
	UnreadCount          int32
	UnreadMentionsCount  int32
	UnreadReactionsCount int32
	FromID               Peer
	NotifySettings       *PeerNotifySettings
	Draft                DraftMessage `tl:"flag:4"`
}

func (*ForumTopicObj) CRC() uint32 {
	return 0xcdff0eca
}

func (*ForumTopicObj) FlagIndex() int {
	return 0
}

func (*ForumTopicObj) ImplementsForumTopic() {}

// Represents a deleted forum topic.
type ForumTopicDeleted struct {
	ID int32 // The ID of the deleted forum topic.
}

func (*ForumTopicDeleted) CRC() uint32 {
	return 0x23f109b
}

func (*ForumTopicDeleted) ImplementsForumTopic() {}

type GeoPoint interface {
	tl.Object
	ImplementsGeoPoint()
}

// GeoPoint.
type GeoPointObj struct {
	Long           float64 // Longitude
	Lat            float64 // Latitude
	AccessHash     int64   // Access hash
	AccuracyRadius int32   `tl:"flag:0"` // The estimated horizontal accuracy of the location, in meters; as defined by the sender.
}

func (*GeoPointObj) CRC() uint32 {
	return 0xb2a2f663
}

func (*GeoPointObj) FlagIndex() int {
	return 0
}

func (*GeoPointObj) ImplementsGeoPoint() {}

// Empty constructor.
type GeoPointEmpty struct{}

func (*GeoPointEmpty) CRC() uint32 {
	return 0x1117dd5f
}

func (*GeoPointEmpty) ImplementsGeoPoint() {}

type GroupCall interface {
	tl.Object
	ImplementsGroupCall()
}

// Info about a group call or livestream
type GroupCallObj struct {
	JoinMuted                bool `tl:"flag:1,encoded_in_bitflags"`
	CanChangeJoinMuted       bool `tl:"flag:2,encoded_in_bitflags"`
	JoinDateAsc              bool `tl:"flag:6,encoded_in_bitflags"`
	ScheduleStartSubscribed  bool `tl:"flag:8,encoded_in_bitflags"`
	CanStartVideo            bool `tl:"flag:9,encoded_in_bitflags"`
	RecordVideoActive        bool `tl:"flag:11,encoded_in_bitflags"`
	RtmpStream               bool `tl:"flag:12,encoded_in_bitflags"`
	ListenersHidden          bool `tl:"flag:13,encoded_in_bitflags"`
	Conference               bool `tl:"flag:14,encoded_in_bitflags"`
	Creator                  bool `tl:"flag:15,encoded_in_bitflags"`
	MessagesEnabled          bool `tl:"flag:17,encoded_in_bitflags"`
	CanChangeMessagesEnabled bool `tl:"flag:18,encoded_in_bitflags"`
	Min                      bool `tl:"flag:19,encoded_in_bitflags"`
	ID                       int64
	AccessHash               int64
	ParticipantsCount        int32
	Title                    string `tl:"flag:3"`
	StreamDcID               int32  `tl:"flag:4"`
	RecordStartDate          int32  `tl:"flag:5"`
	ScheduleDate             int32  `tl:"flag:7"`
	UnmutedVideoCount        int32  `tl:"flag:10"`
	UnmutedVideoLimit        int32
	Version                  int32
	InviteLink               string `tl:"flag:16"`
}

func (*GroupCallObj) CRC() uint32 {
	return 0x553b0ba1
}

func (*GroupCallObj) FlagIndex() int {
	return 0
}

func (*GroupCallObj) ImplementsGroupCall() {}

// An ended group call
type GroupCallDiscarded struct {
	ID         int64 // Group call ID
	AccessHash int64 // Group call access hash
	Duration   int32 // Group call duration
}

func (*GroupCallDiscarded) CRC() uint32 {
	return 0x7780bcb4
}

func (*GroupCallDiscarded) ImplementsGroupCall() {}

type InputBotApp interface {
	tl.Object
	ImplementsInputBotApp()
}

// Used to fetch information about a direct link Mini App by its ID
type InputBotAppID struct {
	ID         int64 // direct link Mini App ID.
	AccessHash int64 // Access hash, obtained from the botApp constructor.
}

func (*InputBotAppID) CRC() uint32 {
	return 0xa920bd7a
}

func (*InputBotAppID) ImplementsInputBotApp() {}

// Used to fetch information about a direct link Mini App by its short name
type InputBotAppShortName struct {
	BotID     InputUser // ID of the bot that owns the bot mini app
	ShortName string    // Short name, obtained from a Direct Mini App deep link
}

func (*InputBotAppShortName) CRC() uint32 {
	return 0x908c0407
}

func (*InputBotAppShortName) ImplementsInputBotApp() {}

type InputBotInlineMessage interface {
	tl.Object
	ImplementsInputBotInlineMessage()
}

// A game
type InputBotInlineMessageGame struct {
	ReplyMarkup ReplyMarkup `tl:"flag:2"` // Inline keyboard
}

func (*InputBotInlineMessageGame) CRC() uint32 {
	return 0x4b425864
}

func (*InputBotInlineMessageGame) FlagIndex() int {
	return 0
}

func (*InputBotInlineMessageGame) ImplementsInputBotInlineMessage() {}

// A media
type InputBotInlineMessageMediaAuto struct {
	InvertMedia bool            `tl:"flag:3,encoded_in_bitflags"` // If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.
	Message     string          // Caption
	Entities    []MessageEntity `tl:"flag:1"` // Message entities for styled text
	ReplyMarkup ReplyMarkup     `tl:"flag:2"` // Inline keyboard
}

func (*InputBotInlineMessageMediaAuto) CRC() uint32 {
	return 0x3380c786
}

func (*InputBotInlineMessageMediaAuto) FlagIndex() int {
	return 0
}

func (*InputBotInlineMessageMediaAuto) ImplementsInputBotInlineMessage() {}

// A contact
type InputBotInlineMessageMediaContact struct {
	PhoneNumber string      // Phone number
	FirstName   string      // First name
	LastName    string      // Last name
	Vcard       string      // VCard info
	ReplyMarkup ReplyMarkup `tl:"flag:2"` // Inline keyboard
}

func (*InputBotInlineMessageMediaContact) CRC() uint32 {
	return 0xa6edbffd
}

func (*InputBotInlineMessageMediaContact) FlagIndex() int {
	return 0
}

func (*InputBotInlineMessageMediaContact) ImplementsInputBotInlineMessage() {}

// Geolocation
type InputBotInlineMessageMediaGeo struct {
	GeoPoint                    InputGeoPoint // Geolocation
	Heading                     int32         `tl:"flag:0"` // For live locations, a direction in which the location moves, in degrees; 1-360
	Period                      int32         `tl:"flag:1"` // Validity period
	ProximityNotificationRadius int32         `tl:"flag:3"` // For live locations, a maximum distance to another chat member for proximity alerts, in meters (0-100000)
	ReplyMarkup                 ReplyMarkup   `tl:"flag:2"` // Reply markup for bot/inline keyboards
}

func (*InputBotInlineMessageMediaGeo) CRC() uint32 {
	return 0x96929a85
}

func (*InputBotInlineMessageMediaGeo) FlagIndex() int {
	return 0
}

func (*InputBotInlineMessageMediaGeo) ImplementsInputBotInlineMessage() {}

// An invoice
type InputBotInlineMessageMediaInvoice struct {
	Title        string            // Product name, 1-32 characters
	Description  string            // Product description, 1-255 characters
	Photo        *InputWebDocument `tl:"flag:0"` // Invoice photo
	Invoice      *Invoice          // The invoice
	Payload      []byte            // Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use for your internal processes.
	Provider     string            // Payments provider token, obtained via Botfather
	ProviderData *DataJson         // A JSON-serialized object for data about the invoice, which will be shared with the payment provider. A detailed description of the required fields should be provided by the payment provider.
	ReplyMarkup  ReplyMarkup       `tl:"flag:2"` // Inline keyboard
}

func (*InputBotInlineMessageMediaInvoice) CRC() uint32 {
	return 0xd7e78225
}

func (*InputBotInlineMessageMediaInvoice) FlagIndex() int {
	return 0
}

func (*InputBotInlineMessageMediaInvoice) ImplementsInputBotInlineMessage() {}

// Venue
type InputBotInlineMessageMediaVenue struct {
	GeoPoint    InputGeoPoint // Geolocation
	Title       string        // Venue name
	Address     string        // Address
	Provider    string        // Venue provider: currently only "foursquare" and "gplaces" (Google Places) need to be supported
	VenueID     string        // Venue ID in the provider's database
	VenueType   string        // Venue type in the provider's database
	ReplyMarkup ReplyMarkup   `tl:"flag:2"` // Inline keyboard
}

func (*InputBotInlineMessageMediaVenue) CRC() uint32 {
	return 0x417bbf11
}

func (*InputBotInlineMessageMediaVenue) FlagIndex() int {
	return 0
}

func (*InputBotInlineMessageMediaVenue) ImplementsInputBotInlineMessage() {}

// Specifies options that will be used to generate the link preview for the message, or even a standalone link preview without an attached message.
type InputBotInlineMessageMediaWebPage struct {
	InvertMedia     bool            `tl:"flag:3,encoded_in_bitflags"` // If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.
	ForceLargeMedia bool            `tl:"flag:4,encoded_in_bitflags"` // If set, specifies that a large media preview should be used.
	ForceSmallMedia bool            `tl:"flag:5,encoded_in_bitflags"` // If set, specifies that a small media preview should be used.
	Optional        bool            `tl:"flag:6,encoded_in_bitflags"` // If not set, a WEBPAGE_NOT_FOUND RPC error will be emitted if a webpage preview cannot be generated for the specified url; otherwise, no error will be emitted (unless the provided message is also empty, in which case a MESSAGE_EMPTY will be emitted, instead).
	Message         string          // The message, can be empty.
	Entities        []MessageEntity `tl:"flag:1"` // Message entities for styled text
	URL             string          // The URL to use for the link preview.
	ReplyMarkup     ReplyMarkup     `tl:"flag:2"` // Inline keyboard
}

func (*InputBotInlineMessageMediaWebPage) CRC() uint32 {
	return 0xbddcc510
}

func (*InputBotInlineMessageMediaWebPage) FlagIndex() int {
	return 0
}

func (*InputBotInlineMessageMediaWebPage) ImplementsInputBotInlineMessage() {}

// Simple text message
type InputBotInlineMessageText struct {
	NoWebpage   bool            `tl:"flag:0,encoded_in_bitflags"` // Disable webpage preview
	InvertMedia bool            `tl:"flag:3,encoded_in_bitflags"` // If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.
	Message     string          // Message
	Entities    []MessageEntity `tl:"flag:1"` // Message entities for styled text
	ReplyMarkup ReplyMarkup     `tl:"flag:2"` // Inline keyboard
}

func (*InputBotInlineMessageText) CRC() uint32 {
	return 0x3dcd7a87
}

func (*InputBotInlineMessageText) FlagIndex() int {
	return 0
}

func (*InputBotInlineMessageText) ImplementsInputBotInlineMessage() {}

type InputBotInlineMessageID interface {
	tl.Object
	ImplementsInputBotInlineMessageID()
}

// Represents a sent inline message from the perspective of a bot (legacy constructor)
type InputBotInlineMessageIDObj struct {
	DcID       int32 // DC ID to use when working with this inline message
	ID         int64 // ID of message, contains both the (32-bit, legacy) owner ID and the message ID, used only for Bot API backwards compatibility with 32-bit user ID.
	AccessHash int64 // Access hash of message
}

func (*InputBotInlineMessageIDObj) CRC() uint32 {
	return 0x890c3d89
}

func (*InputBotInlineMessageIDObj) ImplementsInputBotInlineMessageID() {}

// Represents a sent inline message from the perspective of a bot
type InputBotInlineMessageID64 struct {
	DcID       int32 // DC ID to use when working with this inline message
	OwnerID    int64 // ID of the owner of this message
	ID         int32 // ID of message
	AccessHash int64 // Access hash of message
}

func (*InputBotInlineMessageID64) CRC() uint32 {
	return 0xb6d915d7
}

func (*InputBotInlineMessageID64) ImplementsInputBotInlineMessageID() {}

type InputBotInlineResult interface {
	tl.Object
	ImplementsInputBotInlineResult()
}

// An inline bot result
type InputBotInlineResultObj struct {
	ID          string                // ID of result
	Type        string                // Result type (see bot API docs)
	Title       string                `tl:"flag:1"` // Result title
	Description string                `tl:"flag:2"` // Result description
	URL         string                `tl:"flag:3"` // URL of result
	Thumb       *InputWebDocument     `tl:"flag:4"` // Thumbnail for result
	Content     *InputWebDocument     `tl:"flag:5"` // Result contents
	SendMessage InputBotInlineMessage // Message to send when the result is selected
}

func (*InputBotInlineResultObj) CRC() uint32 {
	return 0x88bf9319
}

func (*InputBotInlineResultObj) FlagIndex() int {
	return 0
}

func (*InputBotInlineResultObj) ImplementsInputBotInlineResult() {}

// Document (media of any type except for photos)
type InputBotInlineResultDocument struct {
	ID          string                // Result ID
	Type        string                // Result type (see bot API docs)
	Title       string                `tl:"flag:1"` // Result title
	Description string                `tl:"flag:2"` // Result description
	Document    InputDocument         // Document to send
	SendMessage InputBotInlineMessage // Message to send when the result is selected
}

func (*InputBotInlineResultDocument) CRC() uint32 {
	return 0xfff8fdc4
}

func (*InputBotInlineResultDocument) FlagIndex() int {
	return 0
}

func (*InputBotInlineResultDocument) ImplementsInputBotInlineResult() {}

// Game
type InputBotInlineResultGame struct {
	ID          string                // Result ID
	ShortName   string                // Game short name
	SendMessage InputBotInlineMessage // Message to send when the result is selected
}

func (*InputBotInlineResultGame) CRC() uint32 {
	return 0x4fa417f2
}

func (*InputBotInlineResultGame) ImplementsInputBotInlineResult() {}

// Photo
type InputBotInlineResultPhoto struct {
	ID          string                // Result ID
	Type        string                // Result type (see bot API docs)
	Photo       InputPhoto            // Photo to send
	SendMessage InputBotInlineMessage // Message to send when the result is selected
}

func (*InputBotInlineResultPhoto) CRC() uint32 {
	return 0xa8d864a7
}

func (*InputBotInlineResultPhoto) ImplementsInputBotInlineResult() {}

type InputChannel interface {
	tl.Object
	ImplementsInputChannel()
}

// Represents a channel
type InputChannelObj struct {
	ChannelID  int64 // Channel ID
	AccessHash int64 // Access hash taken from the channel constructor
}

func (*InputChannelObj) CRC() uint32 {
	return 0xf35aec28
}

func (*InputChannelObj) ImplementsInputChannel() {}

// Represents the absence of a channel
type InputChannelEmpty struct{}

func (*InputChannelEmpty) CRC() uint32 {
	return 0xee8c1e86
}

func (*InputChannelEmpty) ImplementsInputChannel() {}

// Defines a min channel that was seen in a certain message of a certain chat.
type InputChannelFromMessage struct {
	Peer      InputPeer // The chat where the channel was seen
	MsgID     int32     // The message ID in the chat where the channel was seen
	ChannelID int64     // The channel ID
}

func (*InputChannelFromMessage) CRC() uint32 {
	return 0x5b934f9d
}

func (*InputChannelFromMessage) ImplementsInputChannel() {}

type InputChatPhoto interface {
	tl.Object
	ImplementsInputChatPhoto()
}

// Existing photo to be set as a chat profile photo.
type InputChatPhotoObj struct {
	ID InputPhoto // Existing photo
}

func (*InputChatPhotoObj) CRC() uint32 {
	return 0x8953ad37
}

func (*InputChatPhotoObj) ImplementsInputChatPhoto() {}

// Empty constructor, remove group photo.
type InputChatPhotoEmpty struct{}

func (*InputChatPhotoEmpty) CRC() uint32 {
	return 0x1ca48f57
}

func (*InputChatPhotoEmpty) ImplementsInputChatPhoto() {}

// New photo to be set as group profile photo.
type InputChatUploadedPhoto struct {
	File             InputFile `tl:"flag:0"` // File saved in parts using the method upload.saveFilePart
	Video            InputFile `tl:"flag:1"` // Square video for animated profile picture
	VideoStartTs     float64   `tl:"flag:2"` // Floating point UNIX timestamp in seconds, indicating the frame of the video/sticker that should be used as static preview; can only be used if video or video_emoji_markup is set.
	VideoEmojiMarkup VideoSize `tl:"flag:3"` // Animated sticker profile picture, must contain either a videoSizeEmojiMarkup or a videoSizeStickerMarkup constructor.
}

func (*InputChatUploadedPhoto) CRC() uint32 {
	return 0xbdcdaec0
}

func (*InputChatUploadedPhoto) FlagIndex() int {
	return 0
}

func (*InputChatUploadedPhoto) ImplementsInputChatPhoto() {}

type InputChatTheme interface {
	tl.Object
	ImplementsInputChatTheme()
}

// Set an emoji-based chat theme, returned by account.getChatThemes.
type InputChatThemeObj struct {
	Emoticon string // The emoji.
}

func (*InputChatThemeObj) CRC() uint32 {
	return 0xc93de95c
}

func (*InputChatThemeObj) ImplementsInputChatTheme() {}

// Remove any currently configured theme.
type InputChatThemeEmpty struct{}

func (*InputChatThemeEmpty) CRC() uint32 {
	return 0x83268483
}

func (*InputChatThemeEmpty) ImplementsInputChatTheme() {}

// Set a theme based on an owned collectible gift », returned by account.getUniqueGiftChatThemes.
type InputChatThemeUniqueGift struct {
	Slug string // The slug from starGiftUnique.slug.
}

func (*InputChatThemeUniqueGift) CRC() uint32 {
	return 0x87e5dfe4
}

func (*InputChatThemeUniqueGift) ImplementsInputChatTheme() {}

type InputCheckPasswordSRP interface {
	tl.Object
	ImplementsInputCheckPasswordSRP()
}

// There is no password
type InputCheckPasswordEmpty struct{}

func (*InputCheckPasswordEmpty) CRC() uint32 {
	return 0x9880f658
}

func (*InputCheckPasswordEmpty) ImplementsInputCheckPasswordSRP() {}

// Constructor for checking the validity of a 2FA SRP password (see SRP)
type InputCheckPasswordSRPObj struct {
	SRPID int64  // SRP ID
	A     []byte // A parameter (see SRP)
	M1    []byte // M1 parameter (see SRP)
}

func (*InputCheckPasswordSRPObj) CRC() uint32 {
	return 0xd27ff082
}

func (*InputCheckPasswordSRPObj) ImplementsInputCheckPasswordSRP() {}

type InputCollectible interface {
	tl.Object
	ImplementsInputCollectible()
}

// Represents a phone number fragment collectible
type InputCollectiblePhone struct {
	Phone string // Phone number
}

func (*InputCollectiblePhone) CRC() uint32 {
	return 0xa2e214a4
}

func (*InputCollectiblePhone) ImplementsInputCollectible() {}

// Represents a username fragment collectible
type InputCollectibleUsername struct {
	Username string // Username
}

func (*InputCollectibleUsername) CRC() uint32 {
	return 0xe39460a9
}

func (*InputCollectibleUsername) ImplementsInputCollectible() {}

type InputDialogPeer interface {
	tl.Object
	ImplementsInputDialogPeer()
}

// A peer
type InputDialogPeerObj struct {
	Peer InputPeer // Peer
}

func (*InputDialogPeerObj) CRC() uint32 {
	return 0xfcaafeb7
}

func (*InputDialogPeerObj) ImplementsInputDialogPeer() {}

// All peers in a peer folder
type InputDialogPeerFolder struct {
	FolderID int32 // Peer folder ID, for more info click here
}

func (*InputDialogPeerFolder) CRC() uint32 {
	return 0x64600527
}

func (*InputDialogPeerFolder) ImplementsInputDialogPeer() {}

type InputDocument interface {
	tl.Object
	ImplementsInputDocument()
}

// Defines a document for subsequent interaction.
type InputDocumentObj struct {
	ID            int64  // Document ID
	AccessHash    int64  // access_hash parameter from the document constructor
	FileReference []byte // File reference
}

func (*InputDocumentObj) CRC() uint32 {
	return 0x1abfb575
}

func (*InputDocumentObj) ImplementsInputDocument() {}

// Empty constructor.
type InputDocumentEmpty struct{}

func (*InputDocumentEmpty) CRC() uint32 {
	return 0x72f0eaae
}

func (*InputDocumentEmpty) ImplementsInputDocument() {}

type InputEncryptedFile interface {
	tl.Object
	ImplementsInputEncryptedFile()
}

// Sets forwarded encrypted file for attachment.
type InputEncryptedFileObj struct {
	ID         int64 // File ID, value of id parameter from encryptedFile
	AccessHash int64 // Checking sum, value of access_hash parameter from encryptedFile
}

func (*InputEncryptedFileObj) CRC() uint32 {
	return 0x5a17b5e5
}

func (*InputEncryptedFileObj) ImplementsInputEncryptedFile() {}

// Assigns a new big encrypted file (over 10 MB in size), saved in parts using the method upload.saveBigFilePart.
type InputEncryptedFileBigUploaded struct {
	ID             int64 // Random file id, created by the client
	Parts          int32 // Number of saved parts
	KeyFingerprint int32 // 32-bit imprint of the key used to encrypt the file
}

func (*InputEncryptedFileBigUploaded) CRC() uint32 {
	return 0x2dc173c8
}

func (*InputEncryptedFileBigUploaded) ImplementsInputEncryptedFile() {}

// Empty constructor.
type InputEncryptedFileEmpty struct{}

func (*InputEncryptedFileEmpty) CRC() uint32 {
	return 0x1837c364
}

func (*InputEncryptedFileEmpty) ImplementsInputEncryptedFile() {}

// Sets new encrypted file saved by parts using upload.saveFilePart method.
type InputEncryptedFileUploaded struct {
	ID             int64  // Random file ID created by client
	Parts          int32  // Number of saved parts
	Md5Checksum    string // In case md5-HASH of the (already encrypted) file was transmitted, file content will be checked prior to use
	KeyFingerprint int32  // 32-bit fingerprint of the key used to encrypt a file
}

func (*InputEncryptedFileUploaded) CRC() uint32 {
	return 0x64bd0306
}

func (*InputEncryptedFileUploaded) ImplementsInputEncryptedFile() {}

type InputFile interface {
	tl.Object
	ImplementsInputFile()
}

// Defines a file saved in parts using the method upload.saveFilePart.
type InputFileObj struct {
	ID          int64  // Random file identifier created by the client
	Parts       int32  // Number of parts saved
	Name        string // Full name of the file
	Md5Checksum string // In case the file's md5-hash was passed, contents of the file will be checked prior to use
}

func (*InputFileObj) CRC() uint32 {
	return 0xf52ff27f
}

func (*InputFileObj) ImplementsInputFile() {}

// Assigns a big file (over 10 MB in size), saved in part using the method upload.saveBigFilePart.
type InputFileBig struct {
	ID    int64  // Random file id, created by the client
	Parts int32  // Number of parts saved
	Name  string // Full file name
}

func (*InputFileBig) CRC() uint32 {
	return 0xfa4f0bb5
}

func (*InputFileBig) ImplementsInputFile() {}

// Used to edit the thumbnail/static preview of a story, see here » for more info on the full flow.
type InputFileStoryDocument struct {
	ID InputDocument // The old story video.
}

func (*InputFileStoryDocument) CRC() uint32 {
	return 0x62dc8b48
}

func (*InputFileStoryDocument) ImplementsInputFile() {}

type InputFileLocation interface {
	tl.Object
	ImplementsInputFileLocation()
}

// Document location (video, voice, audio, basically every type except photo)
type InputDocumentFileLocation struct {
	ID            int64  // Document ID
	AccessHash    int64  // access_hash parameter from the document constructor
	FileReference []byte // File reference
	ThumbSize     string // Thumbnail size to download the thumbnail
}

func (*InputDocumentFileLocation) CRC() uint32 {
	return 0xbad07584
}

func (*InputDocumentFileLocation) ImplementsInputFileLocation() {}

// Location of encrypted secret chat file.
type InputEncryptedFileLocation struct {
	ID         int64 // File ID, id parameter value from encryptedFile
	AccessHash int64 // Checksum, access_hash parameter value from encryptedFile
}

func (*InputEncryptedFileLocation) CRC() uint32 {
	return 0xf5235d55
}

func (*InputEncryptedFileLocation) ImplementsInputFileLocation() {}

// DEPRECATED location of a photo
type InputFileLocationObj struct {
	VolumeID      int64  // Server volume
	LocalID       int32  // File identifier
	Secret        int64  // Check sum to access the file
	FileReference []byte // File reference
}

func (*InputFileLocationObj) CRC() uint32 {
	return 0xdfdaabe1
}

func (*InputFileLocationObj) ImplementsInputFileLocation() {}

// Chunk of a livestream
type InputGroupCallStream struct {
	Call         InputGroupCall // Livestream info
	TimeMs       int64          // Timestamp in milliseconds
	Scale        int32          // Specifies the duration of the video segment to fetch in milliseconds, by bitshifting 1000 to the right scale times: duration_ms := 1000 &gt;&gt; scale
	VideoChannel int32          `tl:"flag:0"` // Selected video channel
	VideoQuality int32          `tl:"flag:0"` // Selected video quality (0 = lowest, 1 = medium, 2 = best)
}

func (*InputGroupCallStream) CRC() uint32 {
	return 0x598a92a
}

func (*InputGroupCallStream) FlagIndex() int {
	return 0
}

func (*InputGroupCallStream) ImplementsInputFileLocation() {}

// Location of profile photo of channel/group/supergroup/user
type InputPeerPhotoFileLocation struct {
	Big     bool      `tl:"flag:0,encoded_in_bitflags"` // Whether to download the high-quality version of the picture
	Peer    InputPeer // The peer whose profile picture should be downloaded
	PhotoID int64     // Photo ID
}

func (*InputPeerPhotoFileLocation) CRC() uint32 {
	return 0x37257e99
}

func (*InputPeerPhotoFileLocation) FlagIndex() int {
	return 0
}

func (*InputPeerPhotoFileLocation) ImplementsInputFileLocation() {}

// Use this object to download a photo with upload.getFile method
type InputPhotoFileLocation struct {
	ID            int64  // Photo ID, obtained from the photo object
	AccessHash    int64  // Photo's access hash, obtained from the photo object
	FileReference []byte // File reference
	ThumbSize     string // The PhotoSize to download: must be set to the type field of the desired PhotoSize object of the photo
}

func (*InputPhotoFileLocation) CRC() uint32 {
	return 0x40181ffe
}

func (*InputPhotoFileLocation) ImplementsInputFileLocation() {}

// DEPRECATED legacy photo file location
type InputPhotoLegacyFileLocation struct {
	ID            int64  // Photo ID
	AccessHash    int64  // Access hash
	FileReference []byte // File reference
	VolumeID      int64  // Volume ID
	LocalID       int32  // Local ID
	Secret        int64  // Secret
}

func (*InputPhotoLegacyFileLocation) CRC() uint32 {
	return 0xd83466f3
}

func (*InputPhotoLegacyFileLocation) ImplementsInputFileLocation() {}

// Location of encrypted telegram passport file.
type InputSecureFileLocation struct {
	ID         int64 // File ID, id parameter value from secureFile
	AccessHash int64 // Checksum, access_hash parameter value from secureFile
}

func (*InputSecureFileLocation) CRC() uint32 {
	return 0xcbc7ee28
}

func (*InputSecureFileLocation) ImplementsInputFileLocation() {}

// Location of stickerset thumbnail (see files)
type InputStickerSetThumb struct {
	Stickerset   InputStickerSet // Sticker set
	ThumbVersion int32           // Thumbnail version
}

func (*InputStickerSetThumb) CRC() uint32 {
	return 0x9d84f3db
}

func (*InputStickerSetThumb) ImplementsInputFileLocation() {}

// Used to download a JSON file that will contain all personal data related to features that do not have a specialized takeout method yet, see here » for more info on the takeout API.
type InputTakeoutFileLocation struct{}

func (*InputTakeoutFileLocation) CRC() uint32 {
	return 0x29be5899
}

func (*InputTakeoutFileLocation) ImplementsInputFileLocation() {}

type InputGame interface {
	tl.Object
	ImplementsInputGame()
}

// Indicates an already sent game
type InputGameID struct {
	ID         int64 // game ID from Game constructor
	AccessHash int64 // access hash from Game constructor
}

func (*InputGameID) CRC() uint32 {
	return 0x32c3e77
}

func (*InputGameID) ImplementsInputGame() {}

// Game by short name
type InputGameShortName struct {
	BotID     InputUser // The bot that provides the game
	ShortName string    // The game's short name, usually obtained from a game link
}

func (*InputGameShortName) CRC() uint32 {
	return 0xc331e80a
}

func (*InputGameShortName) ImplementsInputGame() {}

type InputGeoPoint interface {
	tl.Object
	ImplementsInputGeoPoint()
}

// Defines a GeoPoint by its coordinates.
type InputGeoPointObj struct {
	Lat            float64 // Latitude
	Long           float64 // Longitude
	AccuracyRadius int32   `tl:"flag:0"` // The estimated horizontal accuracy of the location, in meters; as defined by the sender.
}

func (*InputGeoPointObj) CRC() uint32 {
	return 0x48222faf
}

func (*InputGeoPointObj) FlagIndex() int {
	return 0
}

func (*InputGeoPointObj) ImplementsInputGeoPoint() {}

// Empty GeoPoint constructor.
type InputGeoPointEmpty struct{}

func (*InputGeoPointEmpty) CRC() uint32 {
	return 0xe4c123d6
}

func (*InputGeoPointEmpty) ImplementsInputGeoPoint() {}

type InputGroupCall interface {
	tl.Object
	ImplementsInputGroupCall()
}

// Points to a specific group call
type InputGroupCallObj struct {
	ID         int64 // Group call ID
	AccessHash int64 // Group call access hash
}

func (*InputGroupCallObj) CRC() uint32 {
	return 0xd8aa840f
}

func (*InputGroupCallObj) ImplementsInputGroupCall() {}

// Join a group call through a messageActionConferenceCall invitation message.
type InputGroupCallInviteMessage struct {
	MsgID int32 // ID of the messageActionConferenceCall.
}

func (*InputGroupCallInviteMessage) CRC() uint32 {
	return 0x8c10603f
}

func (*InputGroupCallInviteMessage) ImplementsInputGroupCall() {}

// Join a conference call through an invitation link ».
type InputGroupCallSlug struct {
	Slug string // Slug from the conference link.
}

func (*InputGroupCallSlug) CRC() uint32 {
	return 0xfe06823f
}

func (*InputGroupCallSlug) ImplementsInputGroupCall() {}

type InputInvoice interface {
	tl.Object
	ImplementsInputInvoice()
}

// Transfer stars from the balance of a user account connected to a business bot, to the balance of the business bot, see here » for more info on the full flow.
type InputInvoiceBusinessBotTransferStars struct {
	Bot   InputUser // Always inputUserSelf.
	Stars int64     // The number of stars to transfer.
}

func (*InputInvoiceBusinessBotTransferStars) CRC() uint32 {
	return 0xf4997e42
}

func (*InputInvoiceBusinessBotTransferStars) ImplementsInputInvoice() {}

// Used to pay for a Telegram Star subscription ».
type InputInvoiceChatInviteSubscription struct {
	Hash string // The invitation link of the Telegram Star subscription
}

func (*InputInvoiceChatInviteSubscription) CRC() uint32 {
	return 0x34e793f1
}

func (*InputInvoiceChatInviteSubscription) ImplementsInputInvoice() {}

// An invoice contained in a messageMediaInvoice message or paid media ».
type InputInvoiceMessage struct {
	Peer  InputPeer // Chat where the invoice/paid media was sent
	MsgID int32     // Message ID
}

func (*InputInvoiceMessage) CRC() uint32 {
	return 0xc5b56859
}

func (*InputInvoiceMessage) ImplementsInputInvoice() {}

type InputInvoicePremiumAuthCode struct {
	Purpose InputStorePaymentPurpose
}

func (*InputInvoicePremiumAuthCode) CRC() uint32 {
	return 0x3e77f614
}

func (*InputInvoicePremiumAuthCode) ImplementsInputInvoice() {}

// Used if the user wishes to start a channel/supergroup giveaway or send some giftcodes to members of a channel/supergroup, in exchange for boosts.
type InputInvoicePremiumGiftCode struct {
	Purpose InputStorePaymentPurpose // Should be populated with inputStorePaymentPremiumGiveaway for giveaways and inputStorePaymentPremiumGiftCode for gifts.
	Option  *PremiumGiftCodeOption   // Should be populated with one of the giveaway options returned by payments.getPremiumGiftCodeOptions, see the giveaways  documentation for more info.
}

func (*InputInvoicePremiumGiftCode) CRC() uint32 {
	return 0x98986c0d
}

func (*InputInvoicePremiumGiftCode) ImplementsInputInvoice() {}

// Used to gift a Telegram Premium subscription to another user, paying with Telegram Stars.
type InputInvoicePremiumGiftStars struct {
	UserID  InputUser         // Who will receive the gifted subscription.
	Months  int32             // Duration of the subscription in months, must be one of the options with currency == "XTR" returned by payments.getPremiumGiftCodeOptions.
	Message *TextWithEntities `tl:"flag:0"` // Message attached with the gift.
}

func (*InputInvoicePremiumGiftStars) CRC() uint32 {
	return 0xdabab2ef
}

func (*InputInvoicePremiumGiftStars) FlagIndex() int {
	return 0
}

func (*InputInvoicePremiumGiftStars) ImplementsInputInvoice() {}

// An invoice slug taken from an invoice deep link or from the <a href="/api/config#premium-invoice-slug">`premium_invoice_slug` app config parameter »</a>
type InputInvoiceSlug struct {
	Slug string // The invoice slug
}

func (*InputInvoiceSlug) CRC() uint32 {
	return 0xc326caef
}

func (*InputInvoiceSlug) ImplementsInputInvoice() {}

// Used to buy a Telegram Star Gift, see here » for more info.
type InputInvoiceStarGift struct {
	HideName       bool              `tl:"flag:0,encoded_in_bitflags"` // If set, your name will be hidden if the destination user decides to display the gift on their profile (they will still see that you sent the gift)
	IncludeUpgrade bool              `tl:"flag:2,encoded_in_bitflags"` // Also pay for an eventual upgrade of the gift to a collectible gift.
	Peer           InputPeer         // Receiver of the gift.
	GiftID         int64             // Identifier of the gift, from starGift.id
	Message        *TextWithEntities `tl:"flag:1"` /*
		Optional message, attached with the gift.
		The maximum length for this field is specified in the stargifts_message_length_max client configuration value.
	*/
}

func (*InputInvoiceStarGift) CRC() uint32 {
	return 0xe8625e92
}

func (*InputInvoiceStarGift) FlagIndex() int {
	return 0
}

func (*InputInvoiceStarGift) ImplementsInputInvoice() {}

type InputInvoiceStarGiftDropOriginalDetails struct {
	Stargift InputSavedStarGift
}

func (*InputInvoiceStarGiftDropOriginalDetails) CRC() uint32 {
	return 0x923d8d1
}

func (*InputInvoiceStarGiftDropOriginalDetails) ImplementsInputInvoice() {}

// Separately prepay for the upgrade of a gift ».
type InputInvoiceStarGiftPrepaidUpgrade struct {
	Peer InputPeer // The peer that owns the gift.
	Hash string    // The upgrade hash from messageActionStarGift.prepaid_upgrade_hash or savedStarGift.prepaid_upgrade_hash.
}

func (*InputInvoiceStarGiftPrepaidUpgrade) CRC() uint32 {
	return 0x9a0b48b8
}

func (*InputInvoiceStarGiftPrepaidUpgrade) ImplementsInputInvoice() {}

// Used to buy a collectible gift currently up on resale, see here for more info on the full flow.
type InputInvoiceStarGiftResale struct {
	Ton  bool      `tl:"flag:0,encoded_in_bitflags"` // Buy the gift using TON.
	Slug string    // Slug of the gift to buy.
	ToID InputPeer // The receiver of the gift.
}

func (*InputInvoiceStarGiftResale) CRC() uint32 {
	return 0xc39f5324
}

func (*InputInvoiceStarGiftResale) FlagIndex() int {
	return 0
}

func (*InputInvoiceStarGiftResale) ImplementsInputInvoice() {}

// Used to pay to transfer a collectible gift to another peer, see the gifts » documentation for more info.
type InputInvoiceStarGiftTransfer struct {
	Stargift InputSavedStarGift // The identifier of the received gift
	ToID     InputPeer          // The destination peer
}

func (*InputInvoiceStarGiftTransfer) CRC() uint32 {
	return 0x4a5f5bd9
}

func (*InputInvoiceStarGiftTransfer) ImplementsInputInvoice() {}

// Used to pay to upgrade a Gift to a collectible gift, see the collectible gifts » documentation for more info on the full flow.
type InputInvoiceStarGiftUpgrade struct {
	KeepOriginalDetails bool               `tl:"flag:0,encoded_in_bitflags"` // Set this flag to keep the original gift text, sender and receiver in the upgraded gift as a starGiftAttributeOriginalDetails attribute.
	Stargift            InputSavedStarGift // The identifier of the received gift to upgrade.
}

func (*InputInvoiceStarGiftUpgrade) CRC() uint32 {
	return 0x4d818d5d
}

func (*InputInvoiceStarGiftUpgrade) FlagIndex() int {
	return 0
}

func (*InputInvoiceStarGiftUpgrade) ImplementsInputInvoice() {}

// Used to top up the Telegram Stars balance of the current account or someone else's account, or to start a Telegram Star giveaway ».
type InputInvoiceStars struct {
	Purpose InputStorePaymentPurpose // An inputStorePaymentStarsGiveaway, inputStorePaymentStarsTopup or inputStorePaymentStarsGift.
}

func (*InputInvoiceStars) CRC() uint32 {
	return 0x65f00ce3
}

func (*InputInvoiceStars) ImplementsInputInvoice() {}

type InputMedia interface {
	tl.Object
	ImplementsInputMedia()
}

// Phone book contact
type InputMediaContact struct {
	PhoneNumber string // Phone number
	FirstName   string // Contact's first name
	LastName    string // Contact's last name
	Vcard       string // Contact vcard
}

func (*InputMediaContact) CRC() uint32 {
	return 0xf8ab7dfb
}

func (*InputMediaContact) ImplementsInputMedia() {}

// Send a dice-based animated sticker
type InputMediaDice struct {
	Emoticon string // The emoji, for now <img class="emoji" src="//telegram.org/img/emoji/40/F09F8F80.png" width="20" height="20" alt="🏀" />, <img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB2.png" width="20" height="20" alt="🎲" /> and <img class="emoji" src="//telegram.org/img/emoji/40/F09F8EAF.png" width="20" height="20" alt="🎯" /> are supported
}

func (*InputMediaDice) CRC() uint32 {
	return 0xe66fbf7b
}

func (*InputMediaDice) ImplementsInputMedia() {}

// Forwarded document
type InputMediaDocument struct {
	Spoiler        bool          `tl:"flag:2,encoded_in_bitflags"` // Whether this media should be hidden behind a spoiler warning
	ID             InputDocument // The document to be forwarded.
	VideoCover     InputPhoto    `tl:"flag:3"` // Custom video cover.
	VideoTimestamp int32         `tl:"flag:4"` // Start playing the video at the specified timestamp (seconds).
	TtlSeconds     int32         `tl:"flag:0"` // Time to live of self-destructing document
	Query          string        `tl:"flag:1"` // Text query or emoji that was used by the user to find this sticker or GIF: used to improve search result relevance.
}

func (*InputMediaDocument) CRC() uint32 {
	return 0xa8763ab5
}

func (*InputMediaDocument) FlagIndex() int {
	return 0
}

func (*InputMediaDocument) ImplementsInputMedia() {}

// Document that will be downloaded by the telegram servers
type InputMediaDocumentExternal struct {
	Spoiler        bool       `tl:"flag:1,encoded_in_bitflags"` // Whether this media should be hidden behind a spoiler warning
	URL            string     // URL of the document
	TtlSeconds     int32      `tl:"flag:0"` // Self-destruct time to live of document
	VideoCover     InputPhoto `tl:"flag:2"` // Custom video cover.
	VideoTimestamp int32      `tl:"flag:3"` // Start playing the video at the specified timestamp (seconds).
}

func (*InputMediaDocumentExternal) CRC() uint32 {
	return 0x779600f9
}

func (*InputMediaDocumentExternal) FlagIndex() int {
	return 0
}

func (*InputMediaDocumentExternal) ImplementsInputMedia() {}

// Empty media content of a message.
type InputMediaEmpty struct{}

func (*InputMediaEmpty) CRC() uint32 {
	return 0x9664f57f
}

func (*InputMediaEmpty) ImplementsInputMedia() {}

// A game
type InputMediaGame struct {
	ID InputGame // The game to forward
}

func (*InputMediaGame) CRC() uint32 {
	return 0xd33f43f3
}

func (*InputMediaGame) ImplementsInputMedia() {}

// Live geolocation
type InputMediaGeoLive struct {
	Stopped                     bool          `tl:"flag:0,encoded_in_bitflags"` // Whether sending of the geolocation was stopped
	GeoPoint                    InputGeoPoint // Current geolocation
	Heading                     int32         `tl:"flag:2"` // For live locations, a direction in which the location moves, in degrees; 1-360.
	Period                      int32         `tl:"flag:1"` // Validity period of the current location
	ProximityNotificationRadius int32         `tl:"flag:3"` // For live locations, a maximum distance to another chat member for proximity alerts, in meters (0-100000)
}

func (*InputMediaGeoLive) CRC() uint32 {
	return 0x971fa843
}

func (*InputMediaGeoLive) FlagIndex() int {
	return 0
}

func (*InputMediaGeoLive) ImplementsInputMedia() {}

// Map.
type InputMediaGeoPoint struct {
	GeoPoint InputGeoPoint // GeoPoint
}

func (*InputMediaGeoPoint) CRC() uint32 {
	return 0xf9c44144
}

func (*InputMediaGeoPoint) ImplementsInputMedia() {}

// Generated invoice of a bot payment
type InputMediaInvoice struct {
	Title         string            // Product name, 1-32 characters
	Description   string            // Product description, 1-255 characters
	Photo         *InputWebDocument `tl:"flag:0"` // URL of the product photo for the invoice. Can be a photo of the goods or a marketing image for a service. People like it better when they see what they are paying for.
	Invoice       *Invoice          // The actual invoice
	Payload       []byte            // Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use for your internal processes.
	Provider      string            `tl:"flag:3"` // Payments provider token, obtained via Botfather
	ProviderData  *DataJson         // JSON-encoded data about the invoice, which will be shared with the payment provider. A detailed description of required fields should be provided by the payment provider.
	StartParam    string            `tl:"flag:1"` // Unique bot deep links start parameter. If present, forwarded copies of the sent message will have a URL button with a deep link to the bot (instead of a Pay button), with the value used as the start parameter. If absent, forwarded copies of the sent message will have a Pay button, allowing multiple users to pay directly from the forwarded message, using the same invoice.
	ExtendedMedia InputMedia        `tl:"flag:2"` // Deprecated
}

func (*InputMediaInvoice) CRC() uint32 {
	return 0x405fef0d
}

func (*InputMediaInvoice) FlagIndex() int {
	return 0
}

func (*InputMediaInvoice) ImplementsInputMedia() {}

// Paid media, see here » for more info.
type InputMediaPaidMedia struct {
	StarsAmount   int64        // The price of the media in Telegram Stars.
	ExtendedMedia []InputMedia // Photos or videos.
	Payload       string       `tl:"flag:0"` // Bots only, specifies a custom payload that will then be passed in updateBotPurchasedPaidMedia when a payment is made (this field will not be visible to the user)
}

func (*InputMediaPaidMedia) CRC() uint32 {
	return 0xc4103386
}

func (*InputMediaPaidMedia) FlagIndex() int {
	return 0
}

func (*InputMediaPaidMedia) ImplementsInputMedia() {}

// Forwarded photo
type InputMediaPhoto struct {
	Spoiler    bool       `tl:"flag:1,encoded_in_bitflags"` // Whether this media should be hidden behind a spoiler warning
	ID         InputPhoto // Photo to be forwarded
	TtlSeconds int32      `tl:"flag:0"` // Time to live in seconds of self-destructing photo
}

func (*InputMediaPhoto) CRC() uint32 {
	return 0xb3ba0635
}

func (*InputMediaPhoto) FlagIndex() int {
	return 0
}

func (*InputMediaPhoto) ImplementsInputMedia() {}

// New photo that will be uploaded by the server using the specified URL
type InputMediaPhotoExternal struct {
	Spoiler    bool   `tl:"flag:1,encoded_in_bitflags"` // Whether this media should be hidden behind a spoiler warning
	URL        string // URL of the photo
	TtlSeconds int32  `tl:"flag:0"` // Self-destruct time to live of photo
}

func (*InputMediaPhotoExternal) CRC() uint32 {
	return 0xe5bbfe1a
}

func (*InputMediaPhotoExternal) FlagIndex() int {
	return 0
}

func (*InputMediaPhotoExternal) ImplementsInputMedia() {}

// A poll
type InputMediaPoll struct {
	Poll             *Poll           // The poll to send
	CorrectAnswers   [][]byte        `tl:"flag:0"` // Correct answer IDs (for quiz polls)
	Solution         string          `tl:"flag:1"` // Explanation of quiz solution
	SolutionEntities []MessageEntity `tl:"flag:1"` // Message entities for styled text
}

func (*InputMediaPoll) CRC() uint32 {
	return 0xf94e5f1
}

func (*InputMediaPoll) FlagIndex() int {
	return 0
}

func (*InputMediaPoll) ImplementsInputMedia() {}

// Forwarded story
type InputMediaStory struct {
	Peer InputPeer // Peer where the story was posted
	ID   int32     // Story ID
}

func (*InputMediaStory) CRC() uint32 {
	return 0x89fdd778
}

func (*InputMediaStory) ImplementsInputMedia() {}

// Creates a todo list ».
type InputMediaTodo struct {
	Todo *TodoList // The todo list.
}

func (*InputMediaTodo) CRC() uint32 {
	return 0x9fc55fde
}

func (*InputMediaTodo) ImplementsInputMedia() {}

// New document
type InputMediaUploadedDocument struct {
	NosoundVideo   bool                `tl:"flag:3,encoded_in_bitflags"` // Whether to send the file as a video even if it doesn't have an audio track (i.e. if set, the documentAttributeAnimated attribute will not be set even for videos without audio)
	ForceFile      bool                `tl:"flag:4,encoded_in_bitflags"` // Force the media file to be uploaded as document
	Spoiler        bool                `tl:"flag:5,encoded_in_bitflags"` // Whether this media should be hidden behind a spoiler warning
	File           InputFile           // The uploaded file
	Thumb          InputFile           `tl:"flag:2"` // Thumbnail of the document, uploaded as for the file
	MimeType       string              // MIME type of document
	Attributes     []DocumentAttribute // Attributes that specify the type of the document (video, audio, voice, sticker, etc.)
	Stickers       []InputDocument     `tl:"flag:0"` // Attached stickers
	VideoCover     InputPhoto          `tl:"flag:6"` // Start playing the video at the specified timestamp (seconds).
	VideoTimestamp int32               `tl:"flag:7"` // Start playing the video at the specified timestamp (seconds).
	TtlSeconds     int32               `tl:"flag:1"` // Time to live in seconds of self-destructing document
}

func (*InputMediaUploadedDocument) CRC() uint32 {
	return 0x37c9330
}

func (*InputMediaUploadedDocument) FlagIndex() int {
	return 0
}

func (*InputMediaUploadedDocument) ImplementsInputMedia() {}

// Photo
type InputMediaUploadedPhoto struct {
	Spoiler    bool            `tl:"flag:2,encoded_in_bitflags"` // Whether this media should be hidden behind a spoiler warning
	File       InputFile       // The uploaded file
	Stickers   []InputDocument `tl:"flag:0"` // Attached mask stickers
	TtlSeconds int32           `tl:"flag:1"` // Time to live in seconds of self-destructing photo
}

func (*InputMediaUploadedPhoto) CRC() uint32 {
	return 0x1e287d04
}

func (*InputMediaUploadedPhoto) FlagIndex() int {
	return 0
}

func (*InputMediaUploadedPhoto) ImplementsInputMedia() {}

// Can be used to send a venue geolocation.
type InputMediaVenue struct {
	GeoPoint  InputGeoPoint // Geolocation
	Title     string        // Venue name
	Address   string        // Physical address of the venue
	Provider  string        // Venue provider: currently only "foursquare" and "gplaces" (Google Places) need to be supported
	VenueID   string        // Venue ID in the provider's database
	VenueType string        // Venue type in the provider's database
}

func (*InputMediaVenue) CRC() uint32 {
	return 0xc13d1c11
}

func (*InputMediaVenue) ImplementsInputMedia() {}

// Specifies options that will be used to generate the link preview for the caption, or even a standalone link preview without an attached message.
type InputMediaWebPage struct {
	ForceLargeMedia bool   `tl:"flag:0,encoded_in_bitflags"` // If set, specifies that a large media preview should be used.
	ForceSmallMedia bool   `tl:"flag:1,encoded_in_bitflags"` // If set, specifies that a small media preview should be used.
	Optional        bool   `tl:"flag:2,encoded_in_bitflags"` // If not set, a WEBPAGE_NOT_FOUND RPC error will be emitted if a webpage preview cannot be generated for the specified url; otherwise, no error will be emitted (unless the provided message is also empty, in which case a MESSAGE_EMPTY will be emitted, instead).
	URL             string // The URL to use for the link preview.
}

func (*InputMediaWebPage) CRC() uint32 {
	return 0xc21b8849
}

func (*InputMediaWebPage) FlagIndex() int {
	return 0
}

func (*InputMediaWebPage) ImplementsInputMedia() {}

type InputMessage interface {
	tl.Object
	ImplementsInputMessage()
}

// Used by bots for fetching information about the message that originated a callback query
type InputMessageCallbackQuery struct {
	ID      int32 // Message ID
	QueryID int64 // Callback query ID
}

func (*InputMessageCallbackQuery) CRC() uint32 {
	return 0xacfa1a7e
}

func (*InputMessageCallbackQuery) ImplementsInputMessage() {}

// Message by ID
type InputMessageID struct {
	ID int32 // Message ID
}

func (*InputMessageID) CRC() uint32 {
	return 0xa676a322
}

func (*InputMessageID) ImplementsInputMessage() {}

// Pinned message
type InputMessagePinned struct{}

func (*InputMessagePinned) CRC() uint32 {
	return 0x86872538
}

func (*InputMessagePinned) ImplementsInputMessage() {}

// Message to which the specified message replies to
type InputMessageReplyTo struct {
	ID int32 // ID of the message that replies to the message we need
}

func (*InputMessageReplyTo) CRC() uint32 {
	return 0xbad88395
}

func (*InputMessageReplyTo) ImplementsInputMessage() {}

type InputNotifyPeer interface {
	tl.Object
	ImplementsInputNotifyPeer()
}

// All channels
type InputNotifyBroadcasts struct{}

func (*InputNotifyBroadcasts) CRC() uint32 {
	return 0xb1db7c7e
}

func (*InputNotifyBroadcasts) ImplementsInputNotifyPeer() {}

// Notifications generated by all groups.
type InputNotifyChats struct{}

func (*InputNotifyChats) CRC() uint32 {
	return 0x4a95e84e
}

func (*InputNotifyChats) ImplementsInputNotifyPeer() {}

// Notifications generated by a topic in a forum.
type InputNotifyForumTopic struct {
	Peer     InputPeer // Forum ID
	TopMsgID int32     // Topic ID
}

func (*InputNotifyForumTopic) CRC() uint32 {
	return 0x5c467992
}

func (*InputNotifyForumTopic) ImplementsInputNotifyPeer() {}

// Notifications generated by a certain user or group.
type InputNotifyPeerObj struct {
	Peer InputPeer // User or group
}

func (*InputNotifyPeerObj) CRC() uint32 {
	return 0xb8bc5b0c
}

func (*InputNotifyPeerObj) ImplementsInputNotifyPeer() {}

// Notifications generated by all users.
type InputNotifyUsers struct{}

func (*InputNotifyUsers) CRC() uint32 {
	return 0x193b4417
}

func (*InputNotifyUsers) ImplementsInputNotifyPeer() {}

type InputPaymentCredentials interface {
	tl.Object
	ImplementsInputPaymentCredentials()
}

// Payment credentials
type InputPaymentCredentialsObj struct {
	Save bool      `tl:"flag:0,encoded_in_bitflags"` // Save payment credential for future use
	Data *DataJson // Payment credentials
}

func (*InputPaymentCredentialsObj) CRC() uint32 {
	return 0x3417d728
}

func (*InputPaymentCredentialsObj) FlagIndex() int {
	return 0
}

func (*InputPaymentCredentialsObj) ImplementsInputPaymentCredentials() {}

// Apple pay payment credentials
type InputPaymentCredentialsApplePay struct {
	PaymentData *DataJson // Payment data
}

func (*InputPaymentCredentialsApplePay) CRC() uint32 {
	return 0xaa1c39f
}

func (*InputPaymentCredentialsApplePay) ImplementsInputPaymentCredentials() {}

// Google Pay payment credentials
type InputPaymentCredentialsGooglePay struct {
	PaymentToken *DataJson // Payment token
}

func (*InputPaymentCredentialsGooglePay) CRC() uint32 {
	return 0x8ac32801
}

func (*InputPaymentCredentialsGooglePay) ImplementsInputPaymentCredentials() {}

// Saved payment credentials
type InputPaymentCredentialsSaved struct {
	ID          string // Credential ID
	TmpPassword []byte // Temporary password
}

func (*InputPaymentCredentialsSaved) CRC() uint32 {
	return 0xc10eb2cf
}

func (*InputPaymentCredentialsSaved) ImplementsInputPaymentCredentials() {}

type InputPeer interface {
	tl.Object
	ImplementsInputPeer()
}

// Defines a channel for further interaction.
type InputPeerChannel struct {
	ChannelID  int64 // Channel identifier
	AccessHash int64 // access_hash value from the channel constructor
}

func (*InputPeerChannel) CRC() uint32 {
	return 0x27bcbbfc
}

func (*InputPeerChannel) ImplementsInputPeer() {}

// Defines a min channel that was seen in a certain message of a certain chat.
type InputPeerChannelFromMessage struct {
	Peer      InputPeer // The chat where the channel's message was seen
	MsgID     int32     // The message ID
	ChannelID int64     // The identifier of the channel that was seen
}

func (*InputPeerChannelFromMessage) CRC() uint32 {
	return 0xbd2a0840
}

func (*InputPeerChannelFromMessage) ImplementsInputPeer() {}

// Defines a chat for further interaction.
type InputPeerChat struct {
	ChatID int64 // Chat identifier
}

func (*InputPeerChat) CRC() uint32 {
	return 0x35a95cb9
}

func (*InputPeerChat) ImplementsInputPeer() {}

// An empty constructor, no user or chat is defined.
type InputPeerEmpty struct{}

func (*InputPeerEmpty) CRC() uint32 {
	return 0x7f3b18ea
}

func (*InputPeerEmpty) ImplementsInputPeer() {}

// Defines the current user.
type InputPeerSelf struct{}

func (*InputPeerSelf) CRC() uint32 {
	return 0x7da07ec9
}

func (*InputPeerSelf) ImplementsInputPeer() {}

// Defines a user for further interaction.
type InputPeerUser struct {
	UserID     int64 // User identifier
	AccessHash int64 // access_hash value from the user constructor
}

func (*InputPeerUser) CRC() uint32 {
	return 0xdde8a54c
}

func (*InputPeerUser) ImplementsInputPeer() {}

// Defines a min user that was seen in a certain message of a certain chat.
type InputPeerUserFromMessage struct {
	Peer   InputPeer // The chat where the user was seen
	MsgID  int32     // The message ID
	UserID int64     // The identifier of the user that was seen
}

func (*InputPeerUserFromMessage) CRC() uint32 {
	return 0xa87b0a1c
}

func (*InputPeerUserFromMessage) ImplementsInputPeer() {}

type InputPhoto interface {
	tl.Object
	ImplementsInputPhoto()
}

// Defines a photo for further interaction.
type InputPhotoObj struct {
	ID            int64  // Photo identifier
	AccessHash    int64  // access_hash value from the photo constructor
	FileReference []byte // File reference
}

func (*InputPhotoObj) CRC() uint32 {
	return 0x3bb3b94a
}

func (*InputPhotoObj) ImplementsInputPhoto() {}

// Empty constructor.
type InputPhotoEmpty struct{}

func (*InputPhotoEmpty) CRC() uint32 {
	return 0x1cd7bf0d
}

func (*InputPhotoEmpty) ImplementsInputPhoto() {}

type InputPrivacyRule interface {
	tl.Object
	ImplementsInputPrivacyRule()
}

// Allow all users
type InputPrivacyValueAllowAll struct{}

func (*InputPrivacyValueAllowAll) CRC() uint32 {
	return 0x184b35ce
}

func (*InputPrivacyValueAllowAll) ImplementsInputPrivacyRule() {}

// Allow bots and mini apps
type InputPrivacyValueAllowBots struct{}

func (*InputPrivacyValueAllowBots) CRC() uint32 {
	return 0x5a4fcce5
}

func (*InputPrivacyValueAllowBots) ImplementsInputPrivacyRule() {}

// Allow only participants of certain chats
type InputPrivacyValueAllowChatParticipants struct {
	Chats []int64 // Allowed chat IDs (either a chat or a supergroup ID, verbatim the way it is received in the constructor (i.e. unlike with bot API IDs, here group and supergroup IDs should be treated in the same way)).
}

func (*InputPrivacyValueAllowChatParticipants) CRC() uint32 {
	return 0x840649cf
}

func (*InputPrivacyValueAllowChatParticipants) ImplementsInputPrivacyRule() {}

// Allow only close friends »
type InputPrivacyValueAllowCloseFriends struct{}

func (*InputPrivacyValueAllowCloseFriends) CRC() uint32 {
	return 0x2f453e49
}

func (*InputPrivacyValueAllowCloseFriends) ImplementsInputPrivacyRule() {}

// Allow only contacts
type InputPrivacyValueAllowContacts struct{}

func (*InputPrivacyValueAllowContacts) CRC() uint32 {
	return 0xd09e07b
}

func (*InputPrivacyValueAllowContacts) ImplementsInputPrivacyRule() {}

// Allow only users with a Premium subscription », currently only usable for inputPrivacyKeyChatInvite.
type InputPrivacyValueAllowPremium struct{}

func (*InputPrivacyValueAllowPremium) CRC() uint32 {
	return 0x77cdc9f1
}

func (*InputPrivacyValueAllowPremium) ImplementsInputPrivacyRule() {}

// Allow only certain users
type InputPrivacyValueAllowUsers struct {
	Users []InputUser // Allowed users
}

func (*InputPrivacyValueAllowUsers) CRC() uint32 {
	return 0x131cc67f
}

func (*InputPrivacyValueAllowUsers) ImplementsInputPrivacyRule() {}

// Disallow all
type InputPrivacyValueDisallowAll struct{}

func (*InputPrivacyValueDisallowAll) CRC() uint32 {
	return 0xd66b66c9
}

func (*InputPrivacyValueDisallowAll) ImplementsInputPrivacyRule() {}

// Disallow bots and mini apps
type InputPrivacyValueDisallowBots struct{}

func (*InputPrivacyValueDisallowBots) CRC() uint32 {
	return 0xc4e57915
}

func (*InputPrivacyValueDisallowBots) ImplementsInputPrivacyRule() {}

// Disallow only participants of certain chats
type InputPrivacyValueDisallowChatParticipants struct {
	Chats []int64 // Disallowed chat IDs (either a chat or a supergroup ID, verbatim the way it is received in the constructor (i.e. unlike with bot API IDs, here group and supergroup IDs should be treated in the same way)).
}

func (*InputPrivacyValueDisallowChatParticipants) CRC() uint32 {
	return 0xe94f0f86
}

func (*InputPrivacyValueDisallowChatParticipants) ImplementsInputPrivacyRule() {}

// Disallow only contacts
type InputPrivacyValueDisallowContacts struct{}

func (*InputPrivacyValueDisallowContacts) CRC() uint32 {
	return 0xba52007
}

func (*InputPrivacyValueDisallowContacts) ImplementsInputPrivacyRule() {}

// Disallow only certain users
type InputPrivacyValueDisallowUsers struct {
	Users []InputUser // Users to disallow
}

func (*InputPrivacyValueDisallowUsers) CRC() uint32 {
	return 0x90110467
}

func (*InputPrivacyValueDisallowUsers) ImplementsInputPrivacyRule() {}

type InputQuickReplyShortcut interface {
	tl.Object
	ImplementsInputQuickReplyShortcut()
}

// Selects a quick reply shortcut by name.
type InputQuickReplyShortcutObj struct {
	Shortcut string // Shortcut name.
}

func (*InputQuickReplyShortcutObj) CRC() uint32 {
	return 0x24596d41
}

func (*InputQuickReplyShortcutObj) ImplementsInputQuickReplyShortcut() {}

// Selects a quick reply shortcut by its numeric ID.
type InputQuickReplyShortcutID struct {
	ShortcutID int32 // Shortcut ID.
}

func (*InputQuickReplyShortcutID) CRC() uint32 {
	return 0x1190cf1
}

func (*InputQuickReplyShortcutID) ImplementsInputQuickReplyShortcut() {}

type InputReplyTo interface {
	tl.Object
	ImplementsInputReplyTo()
}

// Reply to a message.
type InputReplyToMessage struct {
	ReplyToMsgID int32 // The message ID to reply to.
	TopMsgID     int32 `tl:"flag:0"` /*
		This field must contain the topic ID only when replying to messages in forum topics different from the "General" topic (i.e. reply_to_msg_id is set and reply_to_msg_id != topicID and topicID != 1).
		If the replied-to message is deleted before the method finishes execution, the value in this field will be used to send the message to the correct topic, instead of the "General" topic.
	*/
	ReplyToPeerID   InputPeer       `tl:"flag:1"` // Used to reply to messages sent to another chat (specified here), can only be used for non-protected chats and messages.
	QuoteText       string          `tl:"flag:2"` // Used to quote-reply to only a certain section (specified here) of the original message. The maximum UTF-8 length for quotes is specified in the quote_length_max config key.
	QuoteEntities   []MessageEntity `tl:"flag:3"` // Message entities for styled text from the quote_text field.
	QuoteOffset     int32           `tl:"flag:4"` // Offset of the message quote_text within the original message (in UTF-16 code units).
	MonoforumPeerID InputPeer       `tl:"flag:5"` // Must be set to the ID of the topic when replying to a message within a monoforum topic.
	TodoItemID      int32           `tl:"flag:6"` // Can be set to reply to the specified item of a todo list.
}

func (*InputReplyToMessage) CRC() uint32 {
	return 0x869fbe10
}

func (*InputReplyToMessage) FlagIndex() int {
	return 0
}

func (*InputReplyToMessage) ImplementsInputReplyTo() {}

// Used to send messages to a monoforum topic.
type InputReplyToMonoForum struct {
	MonoforumPeerID InputPeer // The topic ID.
}

func (*InputReplyToMonoForum) CRC() uint32 {
	return 0x69d66c45
}

func (*InputReplyToMonoForum) ImplementsInputReplyTo() {}

// Reply to a story.
type InputReplyToStory struct {
	Peer    InputPeer // Sender of the story
	StoryID int32     // ID of the story to reply to.
}

func (*InputReplyToStory) CRC() uint32 {
	return 0x5881323a
}

func (*InputReplyToStory) ImplementsInputReplyTo() {}

type InputSavedStarGift interface {
	tl.Object
	ImplementsInputSavedStarGift()
}

// A gift received by a channel we own.
type InputSavedStarGiftChat struct {
	Peer    InputPeer // The channel.
	SavedID int64     // ID of the gift, must be the saved_id of a messageActionStarGift/messageActionStarGiftUnique constructor.
}

func (*InputSavedStarGiftChat) CRC() uint32 {
	return 0xf101aa7f
}

func (*InputSavedStarGiftChat) ImplementsInputSavedStarGift() {}

// Points to a collectible gift obtained from a collectible gift link ».
type InputSavedStarGiftSlug struct {
	Slug string // Slug from the link.
}

func (*InputSavedStarGiftSlug) CRC() uint32 {
	return 0x2085c238
}

func (*InputSavedStarGiftSlug) ImplementsInputSavedStarGift() {}

// A gift received in a private chat with another user.
type InputSavedStarGiftUser struct {
	MsgID int32 // ID of the messageService with the messageActionStarGift with the gift.
}

func (*InputSavedStarGiftUser) CRC() uint32 {
	return 0x69279795
}

func (*InputSavedStarGiftUser) ImplementsInputSavedStarGift() {}

type InputSecureFile interface {
	tl.Object
	ImplementsInputSecureFile()
}

// Pre-uploaded passport file, for more info see the passport docs »
type InputSecureFileObj struct {
	ID         int64 // Secure file ID
	AccessHash int64 // Secure file access hash
}

func (*InputSecureFileObj) CRC() uint32 {
	return 0x5367e5be
}

func (*InputSecureFileObj) ImplementsInputSecureFile() {}

// Uploaded secure file, for more info see the passport docs »
type InputSecureFileUploaded struct {
	ID          int64  // Secure file ID
	Parts       int32  // Secure file part count
	Md5Checksum string // MD5 hash of encrypted uploaded file, to be checked server-side
	FileHash    []byte // File hash
	Secret      []byte // Secret
}

func (*InputSecureFileUploaded) CRC() uint32 {
	return 0x3334b0f0
}

func (*InputSecureFileUploaded) ImplementsInputSecureFile() {}

type InputStickerSet interface {
	tl.Object
	ImplementsInputStickerSet()
}

// Animated emojis stickerset
type InputStickerSetAnimatedEmoji struct{}

func (*InputStickerSetAnimatedEmoji) CRC() uint32 {
	return 0x28703c8
}

func (*InputStickerSetAnimatedEmoji) ImplementsInputStickerSet() {}

// Animated emoji reaction stickerset (contains animations to play when a user clicks on a given animated emoji)
type InputStickerSetAnimatedEmojiAnimations struct{}

func (*InputStickerSetAnimatedEmojiAnimations) CRC() uint32 {
	return 0xcde3739
}

func (*InputStickerSetAnimatedEmojiAnimations) ImplementsInputStickerSet() {}

// Used for fetching animated dice stickers
type InputStickerSetDice struct {
	Emoticon string // The emoji, for now <img class="emoji" src="//telegram.org/img/emoji/40/F09F8F80.png" width="20" height="20" alt="🏀" />, <img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB2.png" width="20" height="20" alt="🎲" /> and <img class="emoji" src="//telegram.org/img/emoji/40/F09F8EAF.png" width="20" height="20" alt="🎯" /> are supported
}

func (*InputStickerSetDice) CRC() uint32 {
	return 0xe67f520e
}

func (*InputStickerSetDice) ImplementsInputStickerSet() {}

// Default custom emoji status stickerset for channel statuses
type InputStickerSetEmojiChannelDefaultStatuses struct{}

func (*InputStickerSetEmojiChannelDefaultStatuses) CRC() uint32 {
	return 0x49748553
}

func (*InputStickerSetEmojiChannelDefaultStatuses) ImplementsInputStickerSet() {}

// Default custom emoji status stickerset
type InputStickerSetEmojiDefaultStatuses struct{}

func (*InputStickerSetEmojiDefaultStatuses) CRC() uint32 {
	return 0x29d0f5ee
}

func (*InputStickerSetEmojiDefaultStatuses) ImplementsInputStickerSet() {}

// Default custom emoji stickerset for forum topic icons
type InputStickerSetEmojiDefaultTopicIcons struct{}

func (*InputStickerSetEmojiDefaultTopicIcons) CRC() uint32 {
	return 0x44c1f8e9
}

func (*InputStickerSetEmojiDefaultTopicIcons) ImplementsInputStickerSet() {}

// Generic animation stickerset containing animations to play when reacting to messages using a normal emoji without a custom animation
type InputStickerSetEmojiGenericAnimations struct{}

func (*InputStickerSetEmojiGenericAnimations) CRC() uint32 {
	return 0x4c4d4ce
}

func (*InputStickerSetEmojiGenericAnimations) ImplementsInputStickerSet() {}

// Empty constructor
type InputStickerSetEmpty struct{}

func (*InputStickerSetEmpty) CRC() uint32 {
	return 0xffb62b95
}

func (*InputStickerSetEmpty) ImplementsInputStickerSet() {}

// Stickerset by ID
type InputStickerSetID struct {
	ID         int64 // ID
	AccessHash int64 // Access hash
}

func (*InputStickerSetID) CRC() uint32 {
	return 0x9de7a269
}

func (*InputStickerSetID) ImplementsInputStickerSet() {}

// Stickers to show when receiving a gifted Telegram Premium subscription
type InputStickerSetPremiumGifts struct{}

func (*InputStickerSetPremiumGifts) CRC() uint32 {
	return 0xc88b3b02
}

func (*InputStickerSetPremiumGifts) ImplementsInputStickerSet() {}

// Stickerset by short name, from a stickerset deep link »
type InputStickerSetShortName struct {
	ShortName string // Short name from a stickerset deep link
}

func (*InputStickerSetShortName) CRC() uint32 {
	return 0x861cc8a0
}

func (*InputStickerSetShortName) ImplementsInputStickerSet() {}

// TON gifts stickerset.
type InputStickerSetTonGifts struct{}

func (*InputStickerSetTonGifts) CRC() uint32 {
	return 0x1cf671a0
}

func (*InputStickerSetTonGifts) ImplementsInputStickerSet() {}

type InputStickeredMedia interface {
	tl.Object
	ImplementsInputStickeredMedia()
}

// A document with stickers attached
type InputStickeredMediaDocument struct {
	ID InputDocument // The document
}

func (*InputStickeredMediaDocument) CRC() uint32 {
	return 0x438865b
}

func (*InputStickeredMediaDocument) ImplementsInputStickeredMedia() {}

// A photo with stickers attached
type InputStickeredMediaPhoto struct {
	ID InputPhoto // The photo
}

func (*InputStickeredMediaPhoto) CRC() uint32 {
	return 0x4a992157
}

func (*InputStickeredMediaPhoto) ImplementsInputStickeredMedia() {}

type InputStorePaymentPurpose interface {
	tl.Object
	ImplementsInputStorePaymentPurpose()
}

// Indicates payment for a login code.
type InputStorePaymentAuthCode struct {
	Restore       bool   `tl:"flag:0,encoded_in_bitflags"` // Set this flag to restore a previously made purchase.
	PhoneNumber   string // Phone number.
	PhoneCodeHash string // phone_code_hash returned by auth.sendCode.
	Currency      string // Three-letter ISO 4217 currency code
	Amount        int64  // Price of the product in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
}

func (*InputStorePaymentAuthCode) CRC() uint32 {
	return 0x9bb2636d
}

func (*InputStorePaymentAuthCode) FlagIndex() int {
	return 0
}

func (*InputStorePaymentAuthCode) ImplementsInputStorePaymentPurpose() {}

// Info about a gifted Telegram Premium purchase
type InputStorePaymentGiftPremium struct {
	UserID   InputUser // The user to which the Telegram Premium subscription was gifted
	Currency string    // Three-letter ISO 4217 currency code
	Amount   int64     // Price of the product in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
}

func (*InputStorePaymentGiftPremium) CRC() uint32 {
	return 0x616f7fe8
}

func (*InputStorePaymentGiftPremium) ImplementsInputStorePaymentPurpose() {}

// Used to gift Telegram Premium subscriptions only to some specific subscribers of a channel/supergroup or to some of our contacts, see here » for more info on giveaways and gifts.
type InputStorePaymentPremiumGiftCode struct {
	Users     []InputUser       // The users that will receive the Telegram Premium subscriptions.
	BoostPeer InputPeer         `tl:"flag:0"` // If set, the gifts will be sent on behalf of a channel/supergroup we are an admin of, which will also assign some boosts to it. Otherwise, the gift will be sent directly from the currently logged in user, and we will gain some extra boost slots..
	Currency  string            // Three-letter ISO 4217 currency code
	Amount    int64             // Total price in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
	Message   *TextWithEntities `tl:"flag:1"` // Message attached with the gift
}

func (*InputStorePaymentPremiumGiftCode) CRC() uint32 {
	return 0xfb790393
}

func (*InputStorePaymentPremiumGiftCode) FlagIndex() int {
	return 0
}

func (*InputStorePaymentPremiumGiftCode) ImplementsInputStorePaymentPurpose() {}

// Used to pay for a giveaway, see here » for more info.
type InputStorePaymentPremiumGiveaway struct {
	OnlyNewSubscribers bool        `tl:"flag:0,encoded_in_bitflags"` // If set, only new subscribers starting from the giveaway creation date will be able to participate to the giveaway.
	WinnersAreVisible  bool        `tl:"flag:3,encoded_in_bitflags"` // If set, giveaway winners are public and will be listed in a messageMediaGiveawayResults message that will be automatically sent to the channel once the giveaway ends.
	BoostPeer          InputPeer   // The channel/supergroup starting the giveaway, that the user must join to participate, that will receive the giveaway boosts;.
	AdditionalPeers    []InputPeer `tl:"flag:1"` // Additional channels that the user must join to participate to the giveaway can be specified here.
	CountriesIso2      []string    `tl:"flag:2"` // The set of users that can participate to the giveaway can be restricted by passing here an explicit whitelist of up to giveaway_countries_max countries, specified as two-letter ISO 3166-1 alpha-2 country codes.
	PrizeDescription   string      `tl:"flag:4"` // Can contain a textual description of additional giveaway prizes.
	RandomID           int64       // Random ID to avoid resending the giveaway
	UntilDate          int32       // The end date of the giveaway, must be at most giveaway_period_max seconds in the future;.
	Currency           string      // Three-letter ISO 4217 currency code
	Amount             int64       // Total price in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
}

func (*InputStorePaymentPremiumGiveaway) CRC() uint32 {
	return 0x160544ca
}

func (*InputStorePaymentPremiumGiveaway) FlagIndex() int {
	return 0
}

func (*InputStorePaymentPremiumGiveaway) ImplementsInputStorePaymentPurpose() {}

// Info about a Telegram Premium purchase
type InputStorePaymentPremiumSubscription struct {
	Restore bool `tl:"flag:0,encoded_in_bitflags"` // Pass true if this is a restore of a Telegram Premium purchase; only for the App Store
	Upgrade bool `tl:"flag:1,encoded_in_bitflags"` // Pass true if this is an upgrade from a monthly subscription to a yearly subscription; only for App Store
}

func (*InputStorePaymentPremiumSubscription) CRC() uint32 {
	return 0xa6751e66
}

func (*InputStorePaymentPremiumSubscription) FlagIndex() int {
	return 0
}

func (*InputStorePaymentPremiumSubscription) ImplementsInputStorePaymentPurpose() {}

// Used to gift Telegram Stars to a friend.
type InputStorePaymentStarsGift struct {
	UserID   InputUser // The user to which the stars should be gifted.
	Stars    int64     // Amount of stars to gift
	Currency string    // Three-letter ISO 4217 currency code
	Amount   int64     // Total price in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
}

func (*InputStorePaymentStarsGift) CRC() uint32 {
	return 0x1d741ef7
}

func (*InputStorePaymentStarsGift) ImplementsInputStorePaymentPurpose() {}

// Used to pay for a star giveaway, see here » for more info.
type InputStorePaymentStarsGiveaway struct {
	OnlyNewSubscribers bool        `tl:"flag:0,encoded_in_bitflags"` // If set, only new subscribers starting from the giveaway creation date will be able to participate to the giveaway.
	WinnersAreVisible  bool        `tl:"flag:3,encoded_in_bitflags"` // If set, giveaway winners are public and will be listed in a messageMediaGiveawayResults message that will be automatically sent to the channel once the giveaway ends.
	Stars              int64       // Total number of Telegram Stars being given away (each user will receive stars/users stars).
	BoostPeer          InputPeer   // The channel/supergroup starting the giveaway, that the user must join to participate, that will receive the giveaway boosts;.
	AdditionalPeers    []InputPeer `tl:"flag:1"` // Additional channels that the user must join to participate to the giveaway can be specified here.
	CountriesIso2      []string    `tl:"flag:2"` // The set of users that can participate to the giveaway can be restricted by passing here an explicit whitelist of up to giveaway_countries_max countries, specified as two-letter ISO 3166-1 alpha-2 country codes.
	PrizeDescription   string      `tl:"flag:4"` // Can contain a textual description of additional giveaway prizes.
	RandomID           int64       // Random ID to avoid resending the giveaway
	UntilDate          int32       // The end date of the giveaway, must be at most giveaway_period_max seconds in the future;.
	Currency           string      // Three-letter ISO 4217 currency code
	Amount             int64       // Total price in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
	Users              int32       // Number of winners.
}

func (*InputStorePaymentStarsGiveaway) CRC() uint32 {
	return 0x751f08fa
}

func (*InputStorePaymentStarsGiveaway) FlagIndex() int {
	return 0
}

func (*InputStorePaymentStarsGiveaway) ImplementsInputStorePaymentPurpose() {}

// Used to top up the Telegram Stars balance of the current account.
type InputStorePaymentStarsTopup struct {
	Stars            int64     // Amount of stars to topup
	Currency         string    // Three-letter ISO 4217 currency code
	Amount           int64     // Total price in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
	SpendPurposePeer InputPeer `tl:"flag:0"` // Should be populated with the peer where the topup process was initiated due to low funds (i.e. a bot for bot payments, a channel for paid media/reactions, etc); leave this flag unpopulated if the topup flow was not initated when attempting to spend more Stars than currently available on the account's balance.
}

func (*InputStorePaymentStarsTopup) CRC() uint32 {
	return 0xf9a2a6cb
}

func (*InputStorePaymentStarsTopup) FlagIndex() int {
	return 0
}

func (*InputStorePaymentStarsTopup) ImplementsInputStorePaymentPurpose() {}

type InputTheme interface {
	tl.Object
	ImplementsInputTheme()
}

// Theme
type InputThemeObj struct {
	ID         int64 // ID
	AccessHash int64 // Access hash
}

func (*InputThemeObj) CRC() uint32 {
	return 0x3c5693e9
}

func (*InputThemeObj) ImplementsInputTheme() {}

// Theme by theme ID
type InputThemeSlug struct {
	Slug string // Unique theme ID obtained from a theme deep link
}

func (*InputThemeSlug) CRC() uint32 {
	return 0xf5890df1
}

func (*InputThemeSlug) ImplementsInputTheme() {}

type InputUser interface {
	tl.Object
	ImplementsInputUser()
}

// Defines a user for further interaction.
type InputUserObj struct {
	UserID     int64 // User identifier
	AccessHash int64 // access_hash value from the user constructor
}

func (*InputUserObj) CRC() uint32 {
	return 0xf21158c6
}

func (*InputUserObj) ImplementsInputUser() {}

// Empty constructor, does not define a user.
type InputUserEmpty struct{}

func (*InputUserEmpty) CRC() uint32 {
	return 0xb98886cf
}

func (*InputUserEmpty) ImplementsInputUser() {}

// Defines a min user that was seen in a certain message of a certain chat.
type InputUserFromMessage struct {
	Peer   InputPeer // The chat where the user was seen
	MsgID  int32     // The message ID
	UserID int64     // The identifier of the user that was seen
}

func (*InputUserFromMessage) CRC() uint32 {
	return 0x1da448e2
}

func (*InputUserFromMessage) ImplementsInputUser() {}

// Defines the current user.
type InputUserSelf struct{}

func (*InputUserSelf) CRC() uint32 {
	return 0xf7c1b13f
}

func (*InputUserSelf) ImplementsInputUser() {}

type InputWallPaper interface {
	tl.Object
	ImplementsInputWallPaper()
}

// Wallpaper
type InputWallPaperObj struct {
	ID         int64 // Wallpaper ID
	AccessHash int64 // Access hash
}

func (*InputWallPaperObj) CRC() uint32 {
	return 0xe630b979
}

func (*InputWallPaperObj) ImplementsInputWallPaper() {}

// Wallpaper with no file access hash, used for example when deleting (`unsave=true`) wallpapers using account.saveWallPaper, specifying just the wallpaper ID.
type InputWallPaperNoFile struct {
	ID int64 // Wallpaper ID
}

func (*InputWallPaperNoFile) CRC() uint32 {
	return 0x967a462e
}

func (*InputWallPaperNoFile) ImplementsInputWallPaper() {}

// Wallpaper by slug (a unique ID, obtained from a wallpaper link »)
type InputWallPaperSlug struct {
	Slug string // Unique wallpaper ID
}

func (*InputWallPaperSlug) CRC() uint32 {
	return 0x72091c80
}

func (*InputWallPaperSlug) ImplementsInputWallPaper() {}

type InputWebFileLocation interface {
	tl.Object
	ImplementsInputWebFileLocation()
}

// Used to download an album cover for any music file using upload.getWebFile, see the webfile docs for more info ».
type InputWebFileAudioAlbumThumbLocation struct {
	Small     bool          `tl:"flag:2,encoded_in_bitflags"` // Used to return a thumbnail with 100x100 resolution (instead of the default 600x600)
	Document  InputDocument `tl:"flag:0"`                     // The audio file in question: must NOT be provided in secret chats, provide the title and performer fields instead.
	Title     string        `tl:"flag:1"`                     // Song title: should only be used in secret chats, in normal chats provide document instead, as it has more lax rate limits.
	Performer string        `tl:"flag:1"`                     // Song performer: should only be used in secret chats, in normal chats provide document instead, as it has more lax rate limits.
}

func (*InputWebFileAudioAlbumThumbLocation) CRC() uint32 {
	return 0xf46fe924
}

func (*InputWebFileAudioAlbumThumbLocation) FlagIndex() int {
	return 0
}

func (*InputWebFileAudioAlbumThumbLocation) ImplementsInputWebFileLocation() {}

// Used to download a server-generated image with the map preview from a geoPoint, see the webfile docs for more info ».
type InputWebFileGeoPointLocation struct {
	GeoPoint   InputGeoPoint // Generated from the lat, long and accuracy_radius parameters of the geoPoint
	AccessHash int64         // Access hash of the geoPoint
	W          int32         // Map width in pixels before applying scale; 16-1024
	H          int32         // Map height in pixels before applying scale; 16-1024
	Zoom       int32         // Map zoom level; 13-20
	Scale      int32         // Map scale; 1-3
}

func (*InputWebFileGeoPointLocation) CRC() uint32 {
	return 0x9f2221c9
}

func (*InputWebFileGeoPointLocation) ImplementsInputWebFileLocation() {}

// Location of a remote HTTP(s) file
type InputWebFileLocationObj struct {
	URL        string // HTTP URL of file
	AccessHash int64  // Access hash
}

func (*InputWebFileLocationObj) CRC() uint32 {
	return 0xc239d686
}

func (*InputWebFileLocationObj) ImplementsInputWebFileLocation() {}

type JsonValue interface {
	tl.Object
	ImplementsJsonValue()
}

// JSON array
type JsonArray struct {
	Value []JsonValue // JSON values
}

func (*JsonArray) CRC() uint32 {
	return 0xf7444763
}

func (*JsonArray) ImplementsJsonValue() {}

// JSON boolean value
type JsonBool struct {
	Value bool // Value
}

func (*JsonBool) CRC() uint32 {
	return 0xc7345e6a
}

func (*JsonBool) ImplementsJsonValue() {}

// null JSON value
type JsonNull struct{}

func (*JsonNull) CRC() uint32 {
	return 0x3f6d7b68
}

func (*JsonNull) ImplementsJsonValue() {}

// JSON numeric value
type JsonNumber struct {
	Value float64 // Value
}

func (*JsonNumber) CRC() uint32 {
	return 0x2be0dfa4
}

func (*JsonNumber) ImplementsJsonValue() {}

// JSON object value
type JsonObject struct {
	Value []*JsonObjectValue // Values
}

func (*JsonObject) CRC() uint32 {
	return 0x99c1d49d
}

func (*JsonObject) ImplementsJsonValue() {}

// JSON string
type JsonString struct {
	Value string // Value
}

func (*JsonString) CRC() uint32 {
	return 0xb71e767a
}

func (*JsonString) ImplementsJsonValue() {}

type KeyboardButton interface {
	tl.Object
	ImplementsKeyboardButton()
}

// Prompts the user to select and share one or more peers with the bot using messages.sendBotRequestedPeer.
type InputKeyboardButtonRequestPeer struct {
	NameRequested     bool            `tl:"flag:0,encoded_in_bitflags"` // Set this flag to request the peer's name.
	UsernameRequested bool            `tl:"flag:1,encoded_in_bitflags"` // Set this flag to request the peer's @username (if any).
	PhotoRequested    bool            `tl:"flag:2,encoded_in_bitflags"` // Set this flag to request the peer's photo (if any).
	Text              string          // Button text
	ButtonID          int32           // Button ID, to be passed to messages.sendBotRequestedPeer.
	PeerType          RequestPeerType /*
		Filtering criteria to use for the peer selection list shown to the user.
		The list should display all existing peers of the specified type, and should also offer an option for the user to create and immediately use one or more (up to max_quantity) peers of the specified type, if needed.
	*/
	MaxQuantity int32 // Maximum number of peers that can be chosen.
}

func (*InputKeyboardButtonRequestPeer) CRC() uint32 {
	return 0xc9662d05
}

func (*InputKeyboardButtonRequestPeer) FlagIndex() int {
	return 0
}

func (*InputKeyboardButtonRequestPeer) ImplementsKeyboardButton() {}

// Button to request a user to authorize via URL using Seamless Telegram Login.
type InputKeyboardButtonURLAuth struct {
	RequestWriteAccess bool   `tl:"flag:0,encoded_in_bitflags"` // Set this flag to request the permission for your bot to send messages to the user.
	Text               string // Button text
	FwdText            string `tl:"flag:1"` // New text of the button in forwarded messages.
	URL                string /*
		An HTTP URL to be opened with user authorization data added to the query string when the button is pressed. If the user refuses to provide authorization data, the original URL without information about the user will be opened. The data added is the same as described in Receiving authorization data.
		NOTE: You must always check the hash of the received data to verify the authentication and the integrity of the data as described in Checking authorization.
	*/
	Bot InputUser // Username of a bot, which will be used for user authorization. See Setting up a bot for more details. If not specified, the current bot's username will be assumed. The url's domain must be the same as the domain linked with the bot. See Linking your domain to the bot for more details.
}

func (*InputKeyboardButtonURLAuth) CRC() uint32 {
	return 0xd02e7fd4
}

func (*InputKeyboardButtonURLAuth) FlagIndex() int {
	return 0
}

func (*InputKeyboardButtonURLAuth) ImplementsKeyboardButton() {}

// Button that links directly to a user profile
type InputKeyboardButtonUserProfile struct {
	Text   string    // Button text
	UserID InputUser // User ID
}

func (*InputKeyboardButtonUserProfile) CRC() uint32 {
	return 0xe988037b
}

func (*InputKeyboardButtonUserProfile) ImplementsKeyboardButton() {}

// Bot keyboard button
type KeyboardButtonObj struct {
	Text string // Button text
}

func (*KeyboardButtonObj) CRC() uint32 {
	return 0xa2fa4880
}

func (*KeyboardButtonObj) ImplementsKeyboardButton() {}

// Button to buy a product
type KeyboardButtonBuy struct {
	Text string // Button text
}

func (*KeyboardButtonBuy) CRC() uint32 {
	return 0xafd93fbb
}

func (*KeyboardButtonBuy) ImplementsKeyboardButton() {}

// Callback button
type KeyboardButtonCallback struct {
	RequiresPassword bool   `tl:"flag:0,encoded_in_bitflags"` // Whether the user should verify his identity by entering his 2FA SRP parameters to the messages.getBotCallbackAnswer method. NOTE: telegram and the bot WILL NOT have access to the plaintext password, thanks to SRP. This button is mainly used by the official @botfather bot, for verifying the user's identity before transferring ownership of a bot to another user.
	Text             string // Button text
	Data             []byte // Callback data
}

func (*KeyboardButtonCallback) CRC() uint32 {
	return 0x35bbdb6b
}

func (*KeyboardButtonCallback) FlagIndex() int {
	return 0
}

func (*KeyboardButtonCallback) ImplementsKeyboardButton() {}

// Clipboard button: when clicked, the attached text must be copied to the clipboard.
type KeyboardButtonCopy struct {
	Text     string // Title of the button
	CopyText string // The text that will be copied to the clipboard
}

func (*KeyboardButtonCopy) CRC() uint32 {
	return 0x75d2698e
}

func (*KeyboardButtonCopy) ImplementsKeyboardButton() {}

// Button to start a game
type KeyboardButtonGame struct {
	Text string // Button text
}

func (*KeyboardButtonGame) CRC() uint32 {
	return 0x50f41ccf
}

func (*KeyboardButtonGame) ImplementsKeyboardButton() {}

// Button to request a user's geolocation
type KeyboardButtonRequestGeoLocation struct {
	Text string // Button text
}

func (*KeyboardButtonRequestGeoLocation) CRC() uint32 {
	return 0xfc796b3f
}

func (*KeyboardButtonRequestGeoLocation) ImplementsKeyboardButton() {}

// Prompts the user to select and share one or more peers with the bot using messages.sendBotRequestedPeer
type KeyboardButtonRequestPeer struct {
	Text     string          // Button text
	ButtonID int32           // Button ID, to be passed to messages.sendBotRequestedPeer.
	PeerType RequestPeerType /*
		Filtering criteria to use for the peer selection list shown to the user.
		The list should display all existing peers of the specified type, and should also offer an option for the user to create and immediately use one or more (up to max_quantity) peers of the specified type, if needed.
	*/
	MaxQuantity int32 // Maximum number of peers that can be chosen.
}

func (*KeyboardButtonRequestPeer) CRC() uint32 {
	return 0x53d7bfd8
}

func (*KeyboardButtonRequestPeer) ImplementsKeyboardButton() {}

// Button to request a user's phone number
type KeyboardButtonRequestPhone struct {
	Text string // Button text
}

func (*KeyboardButtonRequestPhone) CRC() uint32 {
	return 0xb16a6c29
}

func (*KeyboardButtonRequestPhone) ImplementsKeyboardButton() {}

// A button that allows the user to create and send a poll when pressed; available only in private
type KeyboardButtonRequestPoll struct {
	Quiz bool   `tl:"flag:0"` // If set, only quiz polls can be sent
	Text string // Button text
}

func (*KeyboardButtonRequestPoll) CRC() uint32 {
	return 0xbbc7515d
}

func (*KeyboardButtonRequestPoll) FlagIndex() int {
	return 0
}

func (*KeyboardButtonRequestPoll) ImplementsKeyboardButton() {}

// Button to open a bot mini app using messages.requestSimpleWebView, without sending user information to the web app.
type KeyboardButtonSimpleWebView struct {
	Text string // Button text
	URL  string // Web app URL
}

func (*KeyboardButtonSimpleWebView) CRC() uint32 {
	return 0xa0c0505c
}

func (*KeyboardButtonSimpleWebView) ImplementsKeyboardButton() {}

// Button to force a user to switch to inline mode: pressing the button will prompt the user to select one of their chats, open that chat and insert the bot's username and the specified inline query in the input field.
type KeyboardButtonSwitchInline struct {
	SamePeer  bool                  `tl:"flag:0,encoded_in_bitflags"` // If set, pressing the button will insert the bot's username and the specified inline query in the current chat's input field.
	Text      string                // Button label
	Query     string                // The inline query to use
	PeerTypes []InlineQueryPeerType `tl:"flag:1"` // Filter to use when selecting chats.
}

func (*KeyboardButtonSwitchInline) CRC() uint32 {
	return 0x93b9fbb5
}

func (*KeyboardButtonSwitchInline) FlagIndex() int {
	return 0
}

func (*KeyboardButtonSwitchInline) ImplementsKeyboardButton() {}

// URL button
type KeyboardButtonURL struct {
	Text string // Button label
	URL  string // URL
}

func (*KeyboardButtonURL) CRC() uint32 {
	return 0x258aff05
}

func (*KeyboardButtonURL) ImplementsKeyboardButton() {}

// Button to request a user to authorize via URL using Seamless Telegram Login. When the user clicks on such a button, messages.requestUrlAuth should be called, providing the `button_id` and the ID of the container message. The returned urlAuthResultRequest object will contain more details about the authorization request (`request_write_access` if the bot would like to send messages to the user along with the username of the bot which will be used for user authorization). Finally, the user can choose to call messages.acceptUrlAuth to get a urlAuthResultAccepted with the URL to open instead of the `url` of this constructor, or a urlAuthResultDefault, in which case the `url` of this constructor must be opened, instead. If the user refuses the authorization request but still wants to open the link, the `url` of this constructor must be used.
type KeyboardButtonURLAuth struct {
	Text    string // Button label
	FwdText string `tl:"flag:0"` // New text of the button in forwarded messages.
	URL     string /*
		An HTTP URL to be opened with user authorization data added to the query string when the button is pressed. If the user refuses to provide authorization data, the original URL without information about the user will be opened. The data added is the same as described in Receiving authorization data.

		NOTE: Services must always check the hash of the received data to verify the authentication and the integrity of the data as described in Checking authorization.
	*/
	ButtonID int32 // ID of the button to pass to messages.requestUrlAuth
}

func (*KeyboardButtonURLAuth) CRC() uint32 {
	return 0x10b78d29
}

func (*KeyboardButtonURLAuth) FlagIndex() int {
	return 0
}

func (*KeyboardButtonURLAuth) ImplementsKeyboardButton() {}

// Button that links directly to a user profile
type KeyboardButtonUserProfile struct {
	Text   string // Button text
	UserID int64  // User ID
}

func (*KeyboardButtonUserProfile) CRC() uint32 {
	return 0x308660c1
}

func (*KeyboardButtonUserProfile) ImplementsKeyboardButton() {}

// Button to open a bot mini app using messages.requestWebView, sending over user information after user confirmation.
type KeyboardButtonWebView struct {
	Text string // Button text
	URL  string // Web app url
}

func (*KeyboardButtonWebView) CRC() uint32 {
	return 0x13767230
}

func (*KeyboardButtonWebView) ImplementsKeyboardButton() {}

type LangPackString interface {
	tl.Object
	ImplementsLangPackString()
}

// Translated localization string
type LangPackStringObj struct {
	Key   string // Language key
	Value string // Value
}

func (*LangPackStringObj) CRC() uint32 {
	return 0xcad181f6
}

func (*LangPackStringObj) ImplementsLangPackString() {}

// Deleted localization string
type LangPackStringDeleted struct {
	Key string // Localization key
}

func (*LangPackStringDeleted) CRC() uint32 {
	return 0x2979eeb2
}

func (*LangPackStringDeleted) ImplementsLangPackString() {}

// A language pack string which has different forms based on the number of some object it mentions. See https://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html for more info
type LangPackStringPluralized struct {
	Key        string // Localization key
	ZeroValue  string `tl:"flag:0"` // Value for zero objects
	OneValue   string `tl:"flag:1"` // Value for one object
	TwoValue   string `tl:"flag:2"` // Value for two objects
	FewValue   string `tl:"flag:3"` // Value for a few objects
	ManyValue  string `tl:"flag:4"` // Value for many objects
	OtherValue string // Default value
}

func (*LangPackStringPluralized) CRC() uint32 {
	return 0x6c47ac9f
}

func (*LangPackStringPluralized) FlagIndex() int {
	return 0
}

func (*LangPackStringPluralized) ImplementsLangPackString() {}

type MediaArea interface {
	tl.Object
	ImplementsMediaArea()
}

// Represents a channel post
type InputMediaAreaChannelPost struct {
	Coordinates *MediaAreaCoordinates // The size and location of the media area corresponding to the location sticker on top of the story media.
	Channel     InputChannel          // The channel that posted the message
	MsgID       int32                 // ID of the channel message
}

func (*InputMediaAreaChannelPost) CRC() uint32 {
	return 0x2271f2bf
}

func (*InputMediaAreaChannelPost) ImplementsMediaArea() {}

// Represents a location tag attached to a story, with additional venue information.
type InputMediaAreaVenue struct {
	Coordinates *MediaAreaCoordinates // The size and location of the media area corresponding to the location sticker on top of the story media.
	QueryID     int64                 // The query_id from messages.botResults,.
	ResultID    string                // The id of the chosen result,.
}

func (*InputMediaAreaVenue) CRC() uint32 {
	return 0xb282217f
}

func (*InputMediaAreaVenue) ImplementsMediaArea() {}

// Represents a channel post.
type MediaAreaChannelPost struct {
	Coordinates *MediaAreaCoordinates // The size and location of the media area corresponding to the location sticker on top of the story media.
	ChannelID   int64                 // The channel that posted the message
	MsgID       int32                 // ID of the channel message
}

func (*MediaAreaChannelPost) CRC() uint32 {
	return 0x770416af
}

func (*MediaAreaChannelPost) ImplementsMediaArea() {}

// Represents a geolocation tag attached to a story.
type MediaAreaGeoPoint struct {
	Coordinates *MediaAreaCoordinates // The size and position of the media area corresponding to the location sticker on top of the story media.
	Geo         GeoPoint              // Coordinates of the geolocation tag.
	Address     *GeoPointAddress      `tl:"flag:0"` // Optional textual representation of the address.
}

func (*MediaAreaGeoPoint) CRC() uint32 {
	return 0xcad5452d
}

func (*MediaAreaGeoPoint) FlagIndex() int {
	return 0
}

func (*MediaAreaGeoPoint) ImplementsMediaArea() {}

// Represents a collectible gift ».
type MediaAreaStarGift struct {
	Coordinates *MediaAreaCoordinates // Coordinates of the media area.
	Slug        string                // slug from starGiftUnique.slug, that can be resolved as specified here.
}

func (*MediaAreaStarGift) CRC() uint32 {
	return 0x5787686d
}

func (*MediaAreaStarGift) ImplementsMediaArea() {}

// Represents a reaction bubble.
type MediaAreaSuggestedReaction struct {
	Dark        bool                  `tl:"flag:0,encoded_in_bitflags"` // Whether the reaction bubble has a dark background.
	Flipped     bool                  `tl:"flag:1,encoded_in_bitflags"` // Whether the reaction bubble is mirrored (.
	Coordinates *MediaAreaCoordinates // The coordinates of the media area corresponding to the reaction button.
	Reaction    Reaction              // The reaction that should be sent when this area is clicked.
}

func (*MediaAreaSuggestedReaction) CRC() uint32 {
	return 0x14455871
}

func (*MediaAreaSuggestedReaction) FlagIndex() int {
	return 0
}

func (*MediaAreaSuggestedReaction) ImplementsMediaArea() {}

// Represents a URL media area.
type MediaAreaURL struct {
	Coordinates *MediaAreaCoordinates // The size and location of the media area corresponding to the URL button on top of the story media.
	URL         string                // URL to open when clicked.
}

func (*MediaAreaURL) CRC() uint32 {
	return 0x37381085
}

func (*MediaAreaURL) ImplementsMediaArea() {}

// Represents a location tag attached to a story, with additional venue information.
type MediaAreaVenue struct {
	Coordinates *MediaAreaCoordinates // The size and location of the media area corresponding to the location sticker on top of the story media.
	Geo         GeoPoint              // Coordinates of the venue
	Title       string                // Venue name
	Address     string                // Address
	Provider    string                // Venue provider: currently only "foursquare" needs to be supported.
	VenueID     string                // Venue ID in the provider's database
	VenueType   string                // Venue type in the provider's database
}

func (*MediaAreaVenue) CRC() uint32 {
	return 0xbe82db9c
}

func (*MediaAreaVenue) ImplementsMediaArea() {}

// Represents a weather widget ».
type MediaAreaWeather struct {
	Coordinates  *MediaAreaCoordinates // The size and location of the media area corresponding to the widget on top of the story media.
	Emoji        string                // Weather emoji, should be rendered as an animated emoji.
	TemperatureC float64               // Temperature in degrees Celsius.
	Color        int32                 // ARGB background color.
}

func (*MediaAreaWeather) CRC() uint32 {
	return 0x49a6549c
}

func (*MediaAreaWeather) ImplementsMediaArea() {}

type Message interface {
	tl.Object
	ImplementsMessage()
}

// A message
type MessageObj struct {
	Out                    bool  `tl:"flag:1,encoded_in_bitflags"`  // Is this an outgoing message
	Mentioned              bool  `tl:"flag:4,encoded_in_bitflags"`  // Whether we were mentioned in this message
	MediaUnread            bool  `tl:"flag:5,encoded_in_bitflags"`  // Whether there are unread media attachments in this message
	Silent                 bool  `tl:"flag:13,encoded_in_bitflags"` // Whether this is a silent message (no notification triggered)
	Post                   bool  `tl:"flag:14,encoded_in_bitflags"` // Whether this is a channel post
	FromScheduled          bool  `tl:"flag:18,encoded_in_bitflags"` // Whether this is a scheduled message
	Legacy                 bool  `tl:"flag:19,encoded_in_bitflags"` // This is a legacy message: it has to be refetched with the new layer
	EditHide               bool  `tl:"flag:21,encoded_in_bitflags"` // Whether the message should be shown as not modified to the user, even if an edit date is present
	Pinned                 bool  `tl:"flag:24,encoded_in_bitflags"` // Whether this message is pinned
	Noforwards             bool  `tl:"flag:26,encoded_in_bitflags"` // Whether this message is protected and thus cannot be forwarded; clients should also prevent users from saving attached media (i.e. videos should only be streamed, photos should be kept in RAM, et cetera).
	InvertMedia            bool  `tl:"flag:27,encoded_in_bitflags"` // If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.
	Offline                bool  `tl:"flag2:1,encoded_in_bitflags"` // If set, the message was sent because of a scheduled action by the message sender, for example, as away, or a greeting service message.
	VideoProcessingPending bool  `tl:"flag2:4,encoded_in_bitflags"` // The video contained in the message is currently being processed by the server (i.e. to generate alternative qualities, that will be contained in the final messageMediaDocument.alt_document), and will be sent once the video is processed, which will happen approximately at the specified date (i.e. messages with this flag set should be treated similarly to scheduled messages, but instead of the scheduled date, date contains the estimated conversion date)..
	PaidSuggestedPostStars bool  `tl:"flag2:8,encoded_in_bitflags"` // Set if this is a suggested channel post  that was paid using Telegram Stars.
	PaidSuggestedPostTon   bool  `tl:"flag2:9,encoded_in_bitflags"` // Set if this is a suggested channel post  that was paid using Toncoins.
	ID                     int32 // ID of the message
	FromID                 Peer  `tl:"flag:8"`  // ID of the sender of the message
	FromBoostsApplied      int32 `tl:"flag:29"` /*
		Supergroups only, contains the number of boosts this user has given the current supergroup, and should be shown in the UI in the header of the message.
		Only present for incoming messages from non-anonymous supergroup members that have boosted the supergroup.
		Note that this counter should be locally overridden for non-anonymous <em>outgoing</em> messages, according to the current value of channelFull.boosts_applied, to ensure the value is correct even for messages sent by the current user before a supergroup was boosted (or after a boost has expired or the number of boosts has changed); do not update this value for incoming messages from other users, even if their boosts have changed.
	*/
	PeerID      Peer // Peer ID, the chat where this message was sent
	SavedPeerID Peer `tl:"flag:28"` /*
		Messages from a saved messages dialog  will have peer=inputPeerSelf and the saved_peer_id flag set to the ID of the saved dialog.
		Messages from a monoforum  will have peer=ID of the monoforum and the saved_peer_id flag set to the ID of a topic.
	*/
	FwdFrom                 *MessageFwdHeader    `tl:"flag:2"`  // Info about forwarded messages
	ViaBotID                int64                `tl:"flag:11"` // ID of the inline bot that generated the message
	ViaBusinessBotID        int64                `tl:"flag2:0"` // Whether the message was sent by the business bot specified in via_bot_id on behalf of the user.
	ReplyTo                 MessageReplyHeader   `tl:"flag:3"`  // Reply information
	Date                    int32                // Date of the message
	Message                 string               // The message
	Media                   MessageMedia         `tl:"flag:9"`  // Media attachment
	ReplyMarkup             ReplyMarkup          `tl:"flag:6"`  // Reply markup (bot/inline keyboards)
	Entities                []MessageEntity      `tl:"flag:7"`  // Message entities for styled text
	Views                   int32                `tl:"flag:10"` // View count for channel posts
	Forwards                int32                `tl:"flag:10"` // Forward counter
	Replies                 *MessageReplies      `tl:"flag:23"` // Info about post comments (for channels) or message replies (for groups)
	EditDate                int32                `tl:"flag:15"` // Last edit date of this message
	PostAuthor              string               `tl:"flag:16"` // Name of the author of this message for channel posts (with signatures enabled)
	GroupedID               int64                `tl:"flag:17"` // Multiple media messages sent using messages.sendMultiMedia with the same grouped ID indicate an album or media group
	Reactions               *MessageReactions    `tl:"flag:20"` // Reactions to this message
	RestrictionReason       []*RestrictionReason `tl:"flag:22"` // Contains the reason why access to this message must be restricted.
	TtlPeriod               int32                `tl:"flag:25"` // Time To Live of the message, once message.date+message.ttl_period === time(), the message will be deleted on the server, and must be deleted locally as well.
	QuickReplyShortcutID    int32                `tl:"flag:30"` // If set, this message is a quick reply shortcut message  (note that quick reply shortcut messages <em>sent</em> to a private chat will <em>not</em> have this field set).
	Effect                  int64                `tl:"flag2:2"` // A message effect that should be played as specified here.
	Factcheck               *FactCheck           `tl:"flag2:3"` // Represents a fact-check.
	ReportDeliveryUntilDate int32                `tl:"flag2:5"` // Used for Telegram Gateway verification messages: if set and the current unixtime is bigger than the specified unixtime, invoke messages.reportMessagesDelivery passing the ID and the peer of this message as soon as it is received by the client (optionally batching requests for the same peer).
	PaidMessageStars        int64                `tl:"flag2:6"` // The amount of stars the sender has paid to send the message,.
	SuggestedPost           *SuggestedPost       `tl:"flag2:7"` // Used to suggest a post to a channel,.
}

func (*MessageObj) CRC() uint32 {
	return 0x9815cec8
}

func (*MessageObj) FlagIndex() int {
	return 12
}

func (*MessageObj) ImplementsMessage() {}

// Empty constructor, non-existent message.
type MessageEmpty struct {
	ID     int32 // Message identifier
	PeerID Peer  `tl:"flag:0"` // Peer ID, the chat where this message was sent
}

func (*MessageEmpty) CRC() uint32 {
	return 0x90a6ca84
}

func (*MessageEmpty) FlagIndex() int {
	return 0
}

func (*MessageEmpty) ImplementsMessage() {}

// Indicates a service message
type MessageService struct {
	Out                  bool               `tl:"flag:1,encoded_in_bitflags"`  // Whether the message is outgoing
	Mentioned            bool               `tl:"flag:4,encoded_in_bitflags"`  // Whether we were mentioned in the message
	MediaUnread          bool               `tl:"flag:5,encoded_in_bitflags"`  // Whether the message contains unread media
	ReactionsArePossible bool               `tl:"flag:9,encoded_in_bitflags"`  // Whether you can react to this message.
	Silent               bool               `tl:"flag:13,encoded_in_bitflags"` // Whether the message is silent
	Post                 bool               `tl:"flag:14,encoded_in_bitflags"` // Whether it's a channel post
	Legacy               bool               `tl:"flag:19,encoded_in_bitflags"` // This is a legacy message: it has to be refetched with the new layer
	ID                   int32              // Message ID
	FromID               Peer               `tl:"flag:8"` // ID of the sender of this message
	PeerID               Peer               // Sender of service message
	SavedPeerID          Peer               `tl:"flag:28"` // Will only be set for service messages within a monoforum topic : peer will be equal to the ID of the monoforum and the saved_peer_id flag will be set to the ID of a topic.
	ReplyTo              MessageReplyHeader `tl:"flag:3"`  // Reply (thread) information
	Date                 int32              // Message date
	Action               MessageAction      // Event connected with the service message
	Reactions            *MessageReactions  `tl:"flag:20"` // Reactions.
	TtlPeriod            int32              `tl:"flag:25"` // Time To Live of the message, once message.date+message.ttl_period === time(), the message will be deleted on the server, and must be deleted locally as well.
}

func (*MessageService) CRC() uint32 {
	return 0x7a800e0a
}

func (*MessageService) FlagIndex() int {
	return 0
}

func (*MessageService) ImplementsMessage() {}

type MessageAction interface {
	tl.Object
	ImplementsMessageAction()
}

// Some boosts » were applied to the channel or supergroup.
type MessageActionBoostApply struct {
	Boosts int32 // Number of applied boosts.
}

func (*MessageActionBoostApply) CRC() uint32 {
	return 0xcc02aa6d
}

func (*MessageActionBoostApply) ImplementsMessageAction() {}

// We have given the bot permission to send us direct messages.
type MessageActionBotAllowed struct {
	AttachMenu  bool   `tl:"flag:1,encoded_in_bitflags"` // We have authorized the bot to send us messages by installing the bot's attachment menu.
	FromRequest bool   `tl:"flag:3,encoded_in_bitflags"` // We have allowed the bot to send us messages using bots.allowSendMessage.
	Domain      string `tl:"flag:0"`                     // We have authorized the bot to send us messages by logging into a website via Telegram Login ; this field contains the domain name of the website on which the user has logged in.
	App         BotApp `tl:"flag:2"`                     // We have authorized the bot to send us messages by opening the specified bot mini app.
}

func (*MessageActionBotAllowed) CRC() uint32 {
	return 0xc516d679
}

func (*MessageActionBotAllowed) FlagIndex() int {
	return 0
}

func (*MessageActionBotAllowed) ImplementsMessageAction() {}

// The channel was created
type MessageActionChannelCreate struct {
	Title string // Original channel/supergroup title
}

func (*MessageActionChannelCreate) CRC() uint32 {
	return 0x95d2ac92
}

func (*MessageActionChannelCreate) ImplementsMessageAction() {}

// Indicates the channel was migrated from the specified chat
type MessageActionChannelMigrateFrom struct {
	Title  string // The old chat title
	ChatID int64  // The old chat ID
}

func (*MessageActionChannelMigrateFrom) CRC() uint32 {
	return 0xea3948e9
}

func (*MessageActionChannelMigrateFrom) ImplementsMessageAction() {}

// New member in the group
type MessageActionChatAddUser struct {
	Users []int64 // Users that were invited to the chat
}

func (*MessageActionChatAddUser) CRC() uint32 {
	return 0x15cefd00
}

func (*MessageActionChatAddUser) ImplementsMessageAction() {}

// Group created
type MessageActionChatCreate struct {
	Title string  // Group name
	Users []int64 // List of group members
}

func (*MessageActionChatCreate) CRC() uint32 {
	return 0xbd47cbad
}

func (*MessageActionChatCreate) ImplementsMessageAction() {}

// Group profile photo removed.
type MessageActionChatDeletePhoto struct{}

func (*MessageActionChatDeletePhoto) CRC() uint32 {
	return 0x95e3fbef
}

func (*MessageActionChatDeletePhoto) ImplementsMessageAction() {}

// User left the group.
type MessageActionChatDeleteUser struct {
	UserID int64 // Leaving user ID
}

func (*MessageActionChatDeleteUser) CRC() uint32 {
	return 0xa43f30cc
}

func (*MessageActionChatDeleteUser) ImplementsMessageAction() {}

// Group profile changed
type MessageActionChatEditPhoto struct {
	Photo Photo // New group profile photo
}

func (*MessageActionChatEditPhoto) CRC() uint32 {
	return 0x7fcb13a8
}

func (*MessageActionChatEditPhoto) ImplementsMessageAction() {}

// Group name changed.
type MessageActionChatEditTitle struct {
	Title string // New group name
}

func (*MessageActionChatEditTitle) CRC() uint32 {
	return 0xb5a1ce5a
}

func (*MessageActionChatEditTitle) ImplementsMessageAction() {}

// A user joined the chat via an invite link
type MessageActionChatJoinedByLink struct {
	InviterID int64 // ID of the user that created the invite link
}

func (*MessageActionChatJoinedByLink) CRC() uint32 {
	return 0x31224c3
}

func (*MessageActionChatJoinedByLink) ImplementsMessageAction() {}

// A user was accepted into the group by an admin
type MessageActionChatJoinedByRequest struct{}

func (*MessageActionChatJoinedByRequest) CRC() uint32 {
	return 0xebbca3cb
}

func (*MessageActionChatJoinedByRequest) ImplementsMessageAction() {}

// Indicates the chat was migrated to the specified supergroup
type MessageActionChatMigrateTo struct {
	ChannelID int64 // The supergroup it was migrated to
}

func (*MessageActionChatMigrateTo) CRC() uint32 {
	return 0xe1037f92
}

func (*MessageActionChatMigrateTo) ImplementsMessageAction() {}

// Represents a conference call (or an invitation to a conference call, if neither the `missed` nor `active` flags are set).
type MessageActionConferenceCall struct {
	Missed            bool   `tl:"flag:0,encoded_in_bitflags"` // Whether the conference call has ended and the user hasn't joined.
	Active            bool   `tl:"flag:1,encoded_in_bitflags"` // Whether the user is currently in the conference call.
	Video             bool   `tl:"flag:4,encoded_in_bitflags"` // Whether this is a video conference call.
	CallID            int64  // Call ID.
	Duration          int32  `tl:"flag:2"` // Call duration, for left calls only.
	OtherParticipants []Peer `tl:"flag:3"` // Identifiers of some other call participants.
}

func (*MessageActionConferenceCall) CRC() uint32 {
	return 0x2ffe2f7a
}

func (*MessageActionConferenceCall) FlagIndex() int {
	return 0
}

func (*MessageActionConferenceCall) ImplementsMessageAction() {}

// A contact just signed up to telegram
type MessageActionContactSignUp struct{}

func (*MessageActionContactSignUp) CRC() uint32 {
	return 0xf3f25f76
}

func (*MessageActionContactSignUp) ImplementsMessageAction() {}

type MessageActionCreatedBroadcastList struct{}

func (*MessageActionCreatedBroadcastList) CRC() uint32 {
	return 0x55555557
}

func (*MessageActionCreatedBroadcastList) ImplementsMessageAction() {}

// Custom action (most likely not supported by the current layer, an upgrade might be needed)
type MessageActionCustomAction struct {
	Message string // Action message
}

func (*MessageActionCustomAction) CRC() uint32 {
	return 0xfae69f56
}

func (*MessageActionCustomAction) ImplementsMessageAction() {}

// Empty constructor.
type MessageActionEmpty struct{}

func (*MessageActionEmpty) CRC() uint32 {
	return 0xb6aef7b0
}

func (*MessageActionEmpty) ImplementsMessageAction() {}

// Someone scored in a game
type MessageActionGameScore struct {
	GameID int64 // Game ID
	Score  int32 // Score
}

func (*MessageActionGameScore) CRC() uint32 {
	return 0x92a72876
}

func (*MessageActionGameScore) ImplementsMessageAction() {}

// A user of the chat is now in proximity of another user
type MessageActionGeoProximityReached struct {
	FromID   Peer  // The user or chat that is now in proximity of to_id
	ToID     Peer  // The user or chat that subscribed to live geolocation proximity alerts
	Distance int32 // Distance, in meters (0-100000)
}

func (*MessageActionGeoProximityReached) CRC() uint32 {
	return 0x98e0d697
}

func (*MessageActionGeoProximityReached) ImplementsMessageAction() {}

// Contains a Telegram Premium giftcode link.
type MessageActionGiftCode struct {
	ViaGiveaway    bool              `tl:"flag:0,encoded_in_bitflags"` // If set, this gift code was received from a giveaway  started by a channel/supergroup we're subscribed to.
	Unclaimed      bool              `tl:"flag:5,encoded_in_bitflags"` // If set, the link was not redeemed yet.
	BoostPeer      Peer              `tl:"flag:1"`                     // Identifier of the channel/supergroup that created the gift code either directly or through a giveaway: if we import this giftcode link, we will also automatically boost this channel/supergroup.
	Months         int32             // Duration in months of the gifted Telegram Premium subscription.
	Slug           string            // Slug of the Telegram Premium giftcode link
	Currency       string            `tl:"flag:2"` // Three-letter ISO 4217 currency code
	Amount         int64             `tl:"flag:2"` // Total price in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
	CryptoCurrency string            `tl:"flag:3"` // If set, the gift was made using the specified cryptocurrency.
	CryptoAmount   int64             `tl:"flag:3"` // If crypto_currency is set, contains the paid amount, in the smallest units of the cryptocurrency.
	Message        *TextWithEntities `tl:"flag:4"` // Message attached with the gift
}

func (*MessageActionGiftCode) CRC() uint32 {
	return 0x56d03994
}

func (*MessageActionGiftCode) FlagIndex() int {
	return 0
}

func (*MessageActionGiftCode) ImplementsMessageAction() {}

// Info about a gifted Telegram Premium subscription
type MessageActionGiftPremium struct {
	Currency       string            // Three-letter ISO 4217 currency code
	Amount         int64             // Price of the gift in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
	Months         int32             // Duration of the gifted Telegram Premium subscription.
	CryptoCurrency string            `tl:"flag:0"` // If the gift was bought using a cryptocurrency, the cryptocurrency name.
	CryptoAmount   int64             `tl:"flag:0"` // If the gift was bought using a cryptocurrency, price of the gift in the smallest units of a cryptocurrency.
	Message        *TextWithEntities `tl:"flag:1"` // Message attached with the gift
}

func (*MessageActionGiftPremium) CRC() uint32 {
	return 0x6c6274fa
}

func (*MessageActionGiftPremium) FlagIndex() int {
	return 0
}

func (*MessageActionGiftPremium) ImplementsMessageAction() {}

// You gifted or were gifted some Telegram Stars.
type MessageActionGiftStars struct {
	Currency       string // Three-letter ISO 4217 currency code
	Amount         int64  // Price of the gift in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
	Stars          int64  // Amount of gifted stars
	CryptoCurrency string `tl:"flag:0"` // If the gift was bought using a cryptocurrency, the cryptocurrency name.
	CryptoAmount   int64  `tl:"flag:0"` // If the gift was bought using a cryptocurrency, price of the gift in the smallest units of a cryptocurrency.
	TransactionID  string `tl:"flag:1"` // Identifier of the transaction, only visible to the receiver of the gift.
}

func (*MessageActionGiftStars) CRC() uint32 {
	return 0x45d5b021
}

func (*MessageActionGiftStars) FlagIndex() int {
	return 0
}

func (*MessageActionGiftStars) ImplementsMessageAction() {}

// You were gifted some toncoins.
type MessageActionGiftTon struct {
	Currency       string // Name of a localized FIAT currency.
	Amount         int64  // FIAT currency equivalent (in the currency specified in currency) of the amount specified in crypto_amount.
	CryptoCurrency string // Name of the cryptocurrency.
	CryptoAmount   int64  // Amount in the smallest unit of the cryptocurrency (for TONs, one billionth of a ton, AKA a nanoton).
	TransactionID  string `tl:"flag:0"` // Transaction ID.
}

func (*MessageActionGiftTon) CRC() uint32 {
	return 0xa8a3c699
}

func (*MessageActionGiftTon) FlagIndex() int {
	return 0
}

func (*MessageActionGiftTon) ImplementsMessageAction() {}

// A giveaway was started.
type MessageActionGiveawayLaunch struct {
	Stars int64 `tl:"flag:0"` // For Telegram Star giveaways, the total number of Telegram Stars being given away.
}

func (*MessageActionGiveawayLaunch) CRC() uint32 {
	return 0xa80f51e4
}

func (*MessageActionGiveawayLaunch) FlagIndex() int {
	return 0
}

func (*MessageActionGiveawayLaunch) ImplementsMessageAction() {}

// A giveaway has ended.
type MessageActionGiveawayResults struct {
	Stars          bool  `tl:"flag:0,encoded_in_bitflags"` // If set, this is a Telegram Star giveaway
	WinnersCount   int32 // Number of winners in the giveaway
	UnclaimedCount int32 // Number of undistributed prizes
}

func (*MessageActionGiveawayResults) CRC() uint32 {
	return 0x87e2f155
}

func (*MessageActionGiveawayResults) FlagIndex() int {
	return 0
}

func (*MessageActionGiveawayResults) ImplementsMessageAction() {}

// The group call has ended
type MessageActionGroupCall struct {
	Call     InputGroupCall // Group call
	Duration int32          `tl:"flag:0"` // Group call duration
}

func (*MessageActionGroupCall) CRC() uint32 {
	return 0x7a0d7f42
}

func (*MessageActionGroupCall) FlagIndex() int {
	return 0
}

func (*MessageActionGroupCall) ImplementsMessageAction() {}

// A group call was scheduled
type MessageActionGroupCallScheduled struct {
	Call         InputGroupCall // The group call
	ScheduleDate int32          // When is this group call scheduled to start
}

func (*MessageActionGroupCallScheduled) CRC() uint32 {
	return 0xb3a07661
}

func (*MessageActionGroupCallScheduled) ImplementsMessageAction() {}

// Chat history was cleared
type MessageActionHistoryClear struct{}

func (*MessageActionHistoryClear) CRC() uint32 {
	return 0x9fbab604
}

func (*MessageActionHistoryClear) ImplementsMessageAction() {}

// A set of users was invited to the group call
type MessageActionInviteToGroupCall struct {
	Call  InputGroupCall // The group call
	Users []int64        // The invited users
}

func (*MessageActionInviteToGroupCall) CRC() uint32 {
	return 0x502f92f7
}

func (*MessageActionInviteToGroupCall) ImplementsMessageAction() {}

type MessageActionLoginUnknownLocation struct {
	Title   string
	Address string
}

func (*MessageActionLoginUnknownLocation) CRC() uint32 {
	return 0x555555f5
}

func (*MessageActionLoginUnknownLocation) ImplementsMessageAction() {}

// The price of paid messages » in this chat was changed.
type MessageActionPaidMessagesPrice struct {
	BroadcastMessagesAllowed bool  `tl:"flag:0,encoded_in_bitflags"` // Can only be set for channels, if set indicates that direct messages were enabled , otherwise indicates that direct messages were disabled; the price of paid messages is related to the price of direct messages (aka those sent to the associated monoforum).
	Stars                    int64 // The new price in Telegram Stars, can be 0 if messages are now free.
}

func (*MessageActionPaidMessagesPrice) CRC() uint32 {
	return 0x84b88578
}

func (*MessageActionPaidMessagesPrice) FlagIndex() int {
	return 0
}

func (*MessageActionPaidMessagesPrice) ImplementsMessageAction() {}

// Sent from peer A to B, indicates that A refunded all stars B previously paid to send messages to A, see here » for more info on paid messages.
type MessageActionPaidMessagesRefunded struct {
	Count int32 // Number of paid messages affected by the refund.
	Stars int64 // Number of refunded stars.
}

func (*MessageActionPaidMessagesRefunded) CRC() uint32 {
	return 0xac1f1fcd
}

func (*MessageActionPaidMessagesRefunded) ImplementsMessageAction() {}

// Describes a payment refund (service message received by both users and bots).
type MessageActionPaymentRefunded struct {
	Peer        Peer           // Identifier of the peer that returned the funds.
	Currency    string         // Currency, XTR for Telegram Stars.
	TotalAmount int64          // Total price in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
	Payload     []byte         `tl:"flag:0"` // Bot specified invoice payload (only received by bots).
	Charge      *PaymentCharge // Provider payment identifier
}

func (*MessageActionPaymentRefunded) CRC() uint32 {
	return 0x41b3e202
}

func (*MessageActionPaymentRefunded) FlagIndex() int {
	return 0
}

func (*MessageActionPaymentRefunded) ImplementsMessageAction() {}

// A payment was sent
type MessageActionPaymentSent struct {
	RecurringInit         bool   `tl:"flag:2,encoded_in_bitflags"` // Whether this is the first payment of a recurring payment we just subscribed to
	RecurringUsed         bool   `tl:"flag:3,encoded_in_bitflags"` // Whether this payment is part of a recurring payment
	Currency              string // Three-letter ISO 4217 currency code, or XTR for Telegram Stars.
	TotalAmount           int64  // Price of the product in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
	InvoiceSlug           string `tl:"flag:0"` // An invoice slug taken from an invoice deep link or from the <a href="/api/config#premium-invoice-slug">premium_invoice_slug app config parameter </a>
	SubscriptionUntilDate int32  `tl:"flag:4"` // Expiration date of the Telegram Star subscription.
}

func (*MessageActionPaymentSent) CRC() uint32 {
	return 0xc624b16e
}

func (*MessageActionPaymentSent) FlagIndex() int {
	return 0
}

func (*MessageActionPaymentSent) ImplementsMessageAction() {}

// A user just sent a payment to me (a bot)
type MessageActionPaymentSentMe struct {
	RecurringInit         bool                  `tl:"flag:2,encoded_in_bitflags"` // Whether this is the first payment of a recurring payment we just subscribed to
	RecurringUsed         bool                  `tl:"flag:3,encoded_in_bitflags"` // Whether this payment is part of a recurring payment
	Currency              string                // Three-letter ISO 4217 currency code, or XTR for Telegram Stars.
	TotalAmount           int64                 // Price of the product in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
	Payload               []byte                // Bot specified invoice payload
	Info                  *PaymentRequestedInfo `tl:"flag:0"` // Order info provided by the user
	ShippingOptionID      string                `tl:"flag:1"` // Identifier of the shipping option chosen by the user
	Charge                *PaymentCharge        // Provider payment identifier
	SubscriptionUntilDate int32                 `tl:"flag:4"` // Expiration date of the Telegram Star subscription.
}

func (*MessageActionPaymentSentMe) CRC() uint32 {
	return 0xffa00ccc
}

func (*MessageActionPaymentSentMe) FlagIndex() int {
	return 0
}

func (*MessageActionPaymentSentMe) ImplementsMessageAction() {}

// A phone call
type MessageActionPhoneCall struct {
	Video    bool                   `tl:"flag:2,encoded_in_bitflags"` // Is this a video call?
	CallID   int64                  // Call ID
	Reason   PhoneCallDiscardReason `tl:"flag:0"` // If the call has ended, the reason why it ended
	Duration int32                  `tl:"flag:1"` // Duration of the call in seconds
}

func (*MessageActionPhoneCall) CRC() uint32 {
	return 0x80e11a7f
}

func (*MessageActionPhoneCall) FlagIndex() int {
	return 0
}

func (*MessageActionPhoneCall) ImplementsMessageAction() {}

type MessageActionPhoneNumberRequest struct{}

func (*MessageActionPhoneNumberRequest) CRC() uint32 {
	return 0x1baa035
}

func (*MessageActionPhoneNumberRequest) ImplementsMessageAction() {}

// A message was pinned
type MessageActionPinMessage struct{}

func (*MessageActionPinMessage) CRC() uint32 {
	return 0x94bd38ed
}

func (*MessageActionPinMessage) ImplementsMessageAction() {}

// You won some Telegram Stars in a Telegram Star giveaway ».
type MessageActionPrizeStars struct {
	Unclaimed     bool   `tl:"flag:0,encoded_in_bitflags"` // If set, this indicates the reverse transaction that refunds the remaining stars to the creator of a giveaway if, when the giveaway ends, the number of members in the channel is smaller than the number of winners in the giveaway.
	Stars         int64  // The number of Telegram Stars you won
	TransactionID string // ID of the telegram star transaction.
	BoostPeer     Peer   // Identifier of the peer that was automatically boosted by the winners of the giveaway.
	GiveawayMsgID int32  // ID of the message containing the messageMediaGiveaway
}

func (*MessageActionPrizeStars) CRC() uint32 {
	return 0xb00c47a2
}

func (*MessageActionPrizeStars) FlagIndex() int {
	return 0
}

func (*MessageActionPrizeStars) ImplementsMessageAction() {}

// Contains info about one or more peers that the we (the user) shared with the bot after clicking on a keyboardButtonRequestPeer button (service message sent by the user).
type MessageActionRequestedPeer struct {
	ButtonID int32  // button_id contained in the keyboardButtonRequestPeer
	Peers    []Peer // The shared peers
}

func (*MessageActionRequestedPeer) CRC() uint32 {
	return 0x31518e9b
}

func (*MessageActionRequestedPeer) ImplementsMessageAction() {}

// Contains info about one or more peers that the a user shared with the me (the bot) after clicking on a keyboardButtonRequestPeer button (service message received by the bot).
type MessageActionRequestedPeerSentMe struct {
	ButtonID int32           // button_id contained in the keyboardButtonRequestPeer
	Peers    []RequestedPeer // Info about the shared peers.
}

func (*MessageActionRequestedPeerSentMe) CRC() uint32 {
	return 0x93b31848
}

func (*MessageActionRequestedPeerSentMe) ImplementsMessageAction() {}

// A screenshot of the chat was taken
type MessageActionScreenshotTaken struct{}

func (*MessageActionScreenshotTaken) CRC() uint32 {
	return 0x4792929b
}

func (*MessageActionScreenshotTaken) ImplementsMessageAction() {}

// Request for secure telegram passport values was sent
type MessageActionSecureValuesSent struct {
	Types []SecureValueType // Secure value types
}

func (*MessageActionSecureValuesSent) CRC() uint32 {
	return 0xd95c6154
}

func (*MessageActionSecureValuesSent) ImplementsMessageAction() {}

// Secure telegram passport values were received
type MessageActionSecureValuesSentMe struct {
	Values      []*SecureValue              // Vector with information about documents and other Telegram Passport elements that were shared with the bot
	Credentials *SecureCredentialsEncrypted // Encrypted credentials required to decrypt the data
}

func (*MessageActionSecureValuesSentMe) CRC() uint32 {
	return 0x1b287353
}

func (*MessageActionSecureValuesSentMe) ImplementsMessageAction() {}

// The chat theme was changed
type MessageActionSetChatTheme struct {
	Theme ChatTheme // The new chat theme.
}

func (*MessageActionSetChatTheme) CRC() uint32 {
	return 0xb91bbd3a
}

func (*MessageActionSetChatTheme) ImplementsMessageAction() {}

// The wallpaper » of the current chat was changed.
type MessageActionSetChatWallPaper struct {
	Same    bool `tl:"flag:0,encoded_in_bitflags"` // If set, indicates the user applied a wallpaper  previously sent by the other user in a messageActionSetChatWallPaper message.
	ForBoth bool `tl:"flag:1,encoded_in_bitflags"` /*
		If set, indicates the wallpaper was forcefully applied for both sides, without explicit confirmation from the other side.
		If the message is incoming, and we did not like the new wallpaper the other user has chosen for us, we can re-set our previous wallpaper just on our side, by invoking messages.setChatWallPaper, providing only the revert flag (and obviously the peer parameter).
	*/
	Wallpaper WallPaper // New wallpaper
}

func (*MessageActionSetChatWallPaper) CRC() uint32 {
	return 0x5060a3f4
}

func (*MessageActionSetChatWallPaper) FlagIndex() int {
	return 0
}

func (*MessageActionSetChatWallPaper) ImplementsMessageAction() {}

// The Time-To-Live of messages in this chat was changed.
type MessageActionSetMessagesTtl struct {
	Period          int32 // New Time-To-Live of all messages sent in this chat; if 0, autodeletion was disabled.
	AutoSettingFrom int64 `tl:"flag:0"` // If set, the chat TTL setting was set not due to a manual change by one of participants, but automatically because one of the participants has the default TTL settings enabled. For example, when a user writes to us for the first time and we have set a default messages TTL of 1 week, this service message (with auto_setting_from=our_userid) will be emitted before our first message.
}

func (*MessageActionSetMessagesTtl) CRC() uint32 {
	return 0x3c134d7b
}

func (*MessageActionSetMessagesTtl) FlagIndex() int {
	return 0
}

func (*MessageActionSetMessagesTtl) ImplementsMessageAction() {}

// You received a gift, see here » for more info.
type MessageActionStarGift struct {
	NameHidden         bool `tl:"flag:0,encoded_in_bitflags"`
	Saved              bool `tl:"flag:2,encoded_in_bitflags"`
	Converted          bool `tl:"flag:3,encoded_in_bitflags"`
	Upgraded           bool `tl:"flag:5,encoded_in_bitflags"`
	Transferred        bool `tl:"flag:6,encoded_in_bitflags"`
	CanUpgrade         bool `tl:"flag:10,encoded_in_bitflags"`
	Refunded           bool `tl:"flag:9,encoded_in_bitflags"`
	PrepaidUpgrade     bool `tl:"flag:13,encoded_in_bitflags"`
	UpgradeSeparate    bool `tl:"flag:16,encoded_in_bitflags"`
	Gift               StarGift
	Message            *TextWithEntities `tl:"flag:1"`
	ConvertStars       int64             `tl:"flag:4"`
	UpgradeMsgID       int32             `tl:"flag:5"`
	UpgradeStars       int64             `tl:"flag:8"`
	FromID             Peer              `tl:"flag:11"`
	Peer               Peer              `tl:"flag:12"`
	SavedID            int64             `tl:"flag:12"`
	PrepaidUpgradeHash string            `tl:"flag:14"`
	GiftMsgID          int32             `tl:"flag:15"`
}

func (*MessageActionStarGift) CRC() uint32 {
	return 0xf24de7fa
}

func (*MessageActionStarGift) FlagIndex() int {
	return 0
}

func (*MessageActionStarGift) ImplementsMessageAction() {}

// A gift » was upgraded to a collectible gift ».
type MessageActionStarGiftUnique struct {
	Upgrade                  bool `tl:"flag:0,encoded_in_bitflags"`
	Transferred              bool `tl:"flag:1,encoded_in_bitflags"`
	Saved                    bool `tl:"flag:2,encoded_in_bitflags"`
	Refunded                 bool `tl:"flag:5,encoded_in_bitflags"`
	PrepaidUpgrade           bool `tl:"flag:11,encoded_in_bitflags"`
	Assigned                 bool `tl:"flag:13,encoded_in_bitflags"`
	Gift                     StarGift
	CanExportAt              int32       `tl:"flag:3"`
	TransferStars            int64       `tl:"flag:4"`
	FromID                   Peer        `tl:"flag:6"`
	Peer                     Peer        `tl:"flag:7"`
	SavedID                  int64       `tl:"flag:7"`
	ResaleAmount             StarsAmount `tl:"flag:8"`
	CanTransferAt            int32       `tl:"flag:9"`
	CanResellAt              int32       `tl:"flag:10"`
	DropOriginalDetailsStars int64       `tl:"flag:12"`
}

func (*MessageActionStarGiftUnique) CRC() uint32 {
	return 0x95728543
}

func (*MessageActionStarGiftUnique) FlagIndex() int {
	return 0
}

func (*MessageActionStarGiftUnique) ImplementsMessageAction() {}

type MessageActionSuggestBirthday struct {
	Birthday *Birthday
}

func (*MessageActionSuggestBirthday) CRC() uint32 {
	return 0x2c8f2a25
}

func (*MessageActionSuggestBirthday) ImplementsMessageAction() {}

// A new profile picture was suggested using photos.uploadContactProfilePhoto.
type MessageActionSuggestProfilePhoto struct {
	Photo Photo // The photo that the user suggested we set as profile picture.
}

func (*MessageActionSuggestProfilePhoto) CRC() uint32 {
	return 0x57de635e
}

func (*MessageActionSuggestProfilePhoto) ImplementsMessageAction() {}

// A suggested post » was approved or rejected.
type MessageActionSuggestedPostApproval struct {
	Rejected      bool        `tl:"flag:0,encoded_in_bitflags"` // Whether the suggested post was rejected.
	BalanceTooLow bool        `tl:"flag:1,encoded_in_bitflags"` // If set, the post was approved but the user's balance is too low to pay for the suggested post.
	RejectComment string      `tl:"flag:2"`                     // If the suggested post was rejected, can optionally contain a rejection comment.
	ScheduleDate  int32       `tl:"flag:3"`                     // Scheduling date.
	Price         StarsAmount `tl:"flag:4"`                     // Price for the suggested post.
}

func (*MessageActionSuggestedPostApproval) CRC() uint32 {
	return 0xee7a1596
}

func (*MessageActionSuggestedPostApproval) FlagIndex() int {
	return 0
}

func (*MessageActionSuggestedPostApproval) ImplementsMessageAction() {}

// A suggested post » was accepted and posted or scheduled, but either the channel deleted the posted/scheduled post before stars_suggested_post_age_min seconds have elapsed, or the user refunded the payment for the stars used to pay for the suggested post.
type MessageActionSuggestedPostRefund struct {
	PayerInitiated bool `tl:"flag:0,encoded_in_bitflags"` // If set, the user refunded the payment for the stars used to pay for the suggested post.
}

func (*MessageActionSuggestedPostRefund) CRC() uint32 {
	return 0x69f916f8
}

func (*MessageActionSuggestedPostRefund) FlagIndex() int {
	return 0
}

func (*MessageActionSuggestedPostRefund) ImplementsMessageAction() {}

// A suggested post » was successfully posted, and payment for it was successfully received.
type MessageActionSuggestedPostSuccess struct {
	Price StarsAmount // The price.
}

func (*MessageActionSuggestedPostSuccess) CRC() uint32 {
	return 0x95ddcf69
}

func (*MessageActionSuggestedPostSuccess) ImplementsMessageAction() {}

type MessageActionTtlChange struct {
	Ttl int32
}

func (*MessageActionTtlChange) CRC() uint32 {
	return 0x55555552
}

func (*MessageActionTtlChange) ImplementsMessageAction() {}

// Items were appended to the todo list ».
type MessageActionTodoAppendTasks struct {
	List []*TodoItem // Appended items.
}

func (*MessageActionTodoAppendTasks) CRC() uint32 {
	return 0xc7edbc83
}

func (*MessageActionTodoAppendTasks) ImplementsMessageAction() {}

// Items were marked as completed or not completed in a todo list ».
type MessageActionTodoCompletions struct {
	Completed   []int32 // Items marked as completed.
	Incompleted []int32 // Items marked as not completed.
}

func (*MessageActionTodoCompletions) CRC() uint32 {
	return 0xcc7c5c89
}

func (*MessageActionTodoCompletions) ImplementsMessageAction() {}

// A forum topic was created.
type MessageActionTopicCreate struct {
	Title       string // Topic name.
	IconColor   int32  // If no custom emoji icon is specified, specifies the color of the fallback topic icon (RGB), one of 0x6FB9F0, 0xFFD67E, 0xCB86DB, 0x8EEE98, 0xFF93B2, or 0xFB6F5F.
	IconEmojiID int64  `tl:"flag:0"` // ID of the custom emoji used as topic icon.
}

func (*MessageActionTopicCreate) CRC() uint32 {
	return 0xd999256
}

func (*MessageActionTopicCreate) FlagIndex() int {
	return 0
}

func (*MessageActionTopicCreate) ImplementsMessageAction() {}

// Forum topic information was edited.
type MessageActionTopicEdit struct {
	Title       string `tl:"flag:0"` // New topic title.
	IconEmojiID int64  `tl:"flag:1"` // ID of the new custom emoji used as topic icon, or if it was removed.
	Closed      bool   `tl:"flag:2"` // Whether the topic was opened or closed.
	Hidden      bool   `tl:"flag:3"` // Whether the topic was hidden or unhidden (only valid for the "General" topic, id=1).
}

func (*MessageActionTopicEdit) CRC() uint32 {
	return 0xc0944820
}

func (*MessageActionTopicEdit) FlagIndex() int {
	return 0
}

func (*MessageActionTopicEdit) ImplementsMessageAction() {}

type MessageActionUserJoined struct{}

func (*MessageActionUserJoined) CRC() uint32 {
	return 0x55555550
}

func (*MessageActionUserJoined) ImplementsMessageAction() {}

type MessageActionUserUpdatedPhoto struct {
	NewUserPhoto UserProfilePhoto
}

func (*MessageActionUserUpdatedPhoto) CRC() uint32 {
	return 0x55555551
}

func (*MessageActionUserUpdatedPhoto) ImplementsMessageAction() {}

// Data from an opened reply keyboard bot mini app was relayed to the bot that owns it (user side service message).
type MessageActionWebViewDataSent struct {
	Text string // Text of the keyboardButtonSimpleWebView that was pressed to open the web app.
}

func (*MessageActionWebViewDataSent) CRC() uint32 {
	return 0xb4c38cb5
}

func (*MessageActionWebViewDataSent) ImplementsMessageAction() {}

// Data from an opened reply keyboard bot mini app was relayed to the bot that owns it (bot side service message).
type MessageActionWebViewDataSentMe struct {
	Text string // Text of the keyboardButtonSimpleWebView that was pressed to open the web app.
	Data string // Relayed data.
}

func (*MessageActionWebViewDataSentMe) CRC() uint32 {
	return 0x47dd8079
}

func (*MessageActionWebViewDataSentMe) ImplementsMessageAction() {}

type MessageEntity interface {
	tl.Object
	ImplementsMessageEntity()
}

// Message entity that can be used to create a user user mention: received mentions use the messageEntityMentionName constructor, instead.
type InputMessageEntityMentionName struct {
	Offset int32     // Offset of message entity within message (in UTF-16 code units)
	Length int32     // Length of message entity within message (in UTF-16 code units)
	UserID InputUser // Identifier of the user that was mentioned
}

func (*InputMessageEntityMentionName) CRC() uint32 {
	return 0x208e68c9
}

func (*InputMessageEntityMentionName) ImplementsMessageEntity() {}

// Indicates a credit card number
type MessageEntityBankCard struct {
	Offset int32 // Offset of message entity within message (in UTF-16 code units)
	Length int32 // Length of message entity within message (in UTF-16 code units)
}

func (*MessageEntityBankCard) CRC() uint32 {
	return 0x761e6af4
}

func (*MessageEntityBankCard) ImplementsMessageEntity() {}

// Message entity representing a block quote.
type MessageEntityBlockquote struct {
	Collapsed bool  `tl:"flag:0,encoded_in_bitflags"` // Whether the quote is collapsed by default.
	Offset    int32 // Offset of message entity within message (in UTF-16 code units)
	Length    int32 // Length of message entity within message (in UTF-16 code units)
}

func (*MessageEntityBlockquote) CRC() uint32 {
	return 0xf1ccaaac
}

func (*MessageEntityBlockquote) FlagIndex() int {
	return 0
}

func (*MessageEntityBlockquote) ImplementsMessageEntity() {}

// Message entity representing <strong>bold text</strong>.
type MessageEntityBold struct {
	Offset int32 // Offset of message entity within message (in UTF-16 code units)
	Length int32 // Length of message entity within message (in UTF-16 code units)
}

func (*MessageEntityBold) CRC() uint32 {
	return 0xbd610bc9
}

func (*MessageEntityBold) ImplementsMessageEntity() {}

// Message entity representing a bot /command
type MessageEntityBotCommand struct {
	Offset int32 // Offset of message entity within message (in UTF-16 code units)
	Length int32 // Length of message entity within message (in UTF-16 code units)
}

func (*MessageEntityBotCommand) CRC() uint32 {
	return 0x6cef8ac7
}

func (*MessageEntityBotCommand) ImplementsMessageEntity() {}

// Message entity representing a <strong>$cashtag</strong>.
type MessageEntityCashtag struct {
	Offset int32 // Offset of message entity within message (in UTF-16 code units)
	Length int32 // Length of message entity within message (in UTF-16 code units)
}

func (*MessageEntityCashtag) CRC() uint32 {
	return 0x4c4e743f
}

func (*MessageEntityCashtag) ImplementsMessageEntity() {}

// Message entity representing a `codeblock`.
type MessageEntityCode struct {
	Offset int32 // Offset of message entity within message (in UTF-16 code units)
	Length int32 // Length of message entity within message (in UTF-16 code units)
}

func (*MessageEntityCode) CRC() uint32 {
	return 0x28a20571
}

func (*MessageEntityCode) ImplementsMessageEntity() {}

/*
Represents a custom emoji.<br>
Note that this entity must wrap exactly one regular emoji (the one contained in documentAttributeCustomEmoji.`alt`) in the related text, otherwise the server will ignore it.
*/
type MessageEntityCustomEmoji struct {
	Offset     int32 // Offset of message entity within message (in UTF-16 code units)
	Length     int32 // Length of message entity within message (in UTF-16 code units)
	DocumentID int64 // Document ID of the custom emoji, use messages.getCustomEmojiDocuments to fetch the emoji animation and the actual emoji it represents.
}

func (*MessageEntityCustomEmoji) CRC() uint32 {
	return 0xc8cf05f8
}

func (*MessageEntityCustomEmoji) ImplementsMessageEntity() {}

// Message entity representing an email@example.com.
type MessageEntityEmail struct {
	Offset int32 // Offset of message entity within message (in UTF-16 code units)
	Length int32 // Length of message entity within message (in UTF-16 code units)
}

func (*MessageEntityEmail) CRC() uint32 {
	return 0x64e475c2
}

func (*MessageEntityEmail) ImplementsMessageEntity() {}

// <strong>#hashtag</strong> message entity
type MessageEntityHashtag struct {
	Offset int32 // Offset of message entity within message (in UTF-16 code units)
	Length int32 // Length of message entity within message (in UTF-16 code units)
}

func (*MessageEntityHashtag) CRC() uint32 {
	return 0x6f635b0d
}

func (*MessageEntityHashtag) ImplementsMessageEntity() {}

// Message entity representing <em>italic text</em>.
type MessageEntityItalic struct {
	Offset int32 // Offset of message entity within message (in UTF-16 code units)
	Length int32 // Length of message entity within message (in UTF-16 code units)
}

func (*MessageEntityItalic) CRC() uint32 {
	return 0x826f8b60
}

func (*MessageEntityItalic) ImplementsMessageEntity() {}

// Message entity mentioning a user by `@username`; messageEntityMentionName can also be used to mention users by their ID.
type MessageEntityMention struct {
	Offset int32 // Offset of message entity within message (in UTF-16 code units)
	Length int32 // Length of message entity within message (in UTF-16 code units)
}

func (*MessageEntityMention) CRC() uint32 {
	return 0xfa04579d
}

func (*MessageEntityMention) ImplementsMessageEntity() {}

// Message entity representing a user mention: for <em>creating</em> a mention use inputMessageEntityMentionName.
type MessageEntityMentionName struct {
	Offset int32 // Offset of message entity within message (in UTF-16 code units)
	Length int32 // Length of message entity within message (in UTF-16 code units)
	UserID int64 // Identifier of the user that was mentioned
}

func (*MessageEntityMentionName) CRC() uint32 {
	return 0xdc7b1140
}

func (*MessageEntityMentionName) ImplementsMessageEntity() {}

// Message entity representing a phone number.
type MessageEntityPhone struct {
	Offset int32 // Offset of message entity within message (in UTF-16 code units)
	Length int32 // Length of message entity within message (in UTF-16 code units)
}

func (*MessageEntityPhone) CRC() uint32 {
	return 0x9b69e34b
}

func (*MessageEntityPhone) ImplementsMessageEntity() {}

// Message entity representing a preformatted `codeblock`, allowing the user to specify a programming language for the codeblock.
type MessageEntityPre struct {
	Offset   int32  // Offset of message entity within message (in UTF-16 code units)
	Length   int32  // Length of message entity within message (in UTF-16 code units)
	Language string // Programming language of the code
}

func (*MessageEntityPre) CRC() uint32 {
	return 0x73924be0
}

func (*MessageEntityPre) ImplementsMessageEntity() {}

// Message entity representing a spoiler
type MessageEntitySpoiler struct {
	Offset int32 // Offset of message entity within message (in UTF-16 code units)
	Length int32 // Length of message entity within message (in UTF-16 code units)
}

func (*MessageEntitySpoiler) CRC() uint32 {
	return 0x32ca960f
}

func (*MessageEntitySpoiler) ImplementsMessageEntity() {}

// Message entity representing <del>strikethrough</del> text.
type MessageEntityStrike struct {
	Offset int32 // Offset of message entity within message (in UTF-16 code units)
	Length int32 // Length of message entity within message (in UTF-16 code units)
}

func (*MessageEntityStrike) CRC() uint32 {
	return 0xbf0693d4
}

func (*MessageEntityStrike) ImplementsMessageEntity() {}

// Message entity representing a text url: for in-text urls like https://google.com use messageEntityUrl.
type MessageEntityTextURL struct {
	Offset int32  // Offset of message entity within message (in UTF-16 code units)
	Length int32  // Length of message entity within message (in UTF-16 code units)
	URL    string // The actual URL
}

func (*MessageEntityTextURL) CRC() uint32 {
	return 0x76a6d327
}

func (*MessageEntityTextURL) ImplementsMessageEntity() {}

// Message entity representing underlined text.
type MessageEntityUnderline struct {
	Offset int32 // Offset of message entity within message (in UTF-16 code units)
	Length int32 // Length of message entity within message (in UTF-16 code units)
}

func (*MessageEntityUnderline) CRC() uint32 {
	return 0x9c4e7e8b
}

func (*MessageEntityUnderline) ImplementsMessageEntity() {}

// Unknown message entity
type MessageEntityUnknown struct {
	Offset int32 // Offset of message entity within message (in UTF-16 code units)
	Length int32 // Length of message entity within message (in UTF-16 code units)
}

func (*MessageEntityUnknown) CRC() uint32 {
	return 0xbb92ba95
}

func (*MessageEntityUnknown) ImplementsMessageEntity() {}

// Message entity representing an in-text url: https://google.com; for text urls, use messageEntityTextUrl.
type MessageEntityURL struct {
	Offset int32 // Offset of message entity within message (in UTF-16 code units)
	Length int32 // Length of message entity within message (in UTF-16 code units)
}

func (*MessageEntityURL) CRC() uint32 {
	return 0x6ed02538
}

func (*MessageEntityURL) ImplementsMessageEntity() {}

type MessageExtendedMedia interface {
	tl.Object
	ImplementsMessageExtendedMedia()
}

// Already purchased paid media, see here » for more info.
type MessageExtendedMediaObj struct {
	Media MessageMedia // The media we purchased.
}

func (*MessageExtendedMediaObj) CRC() uint32 {
	return 0xee479c64
}

func (*MessageExtendedMediaObj) ImplementsMessageExtendedMedia() {}

// Paid media preview for not yet purchased paid media, see here » for more info.
type MessageExtendedMediaPreview struct {
	W             int32     `tl:"flag:0"` // Width
	H             int32     `tl:"flag:0"` // Height
	Thumb         PhotoSize `tl:"flag:1"` // Extremely low resolution thumbnail.
	VideoDuration int32     `tl:"flag:2"` // Video duration for videos.
}

func (*MessageExtendedMediaPreview) CRC() uint32 {
	return 0xad628cc8
}

func (*MessageExtendedMediaPreview) FlagIndex() int {
	return 0
}

func (*MessageExtendedMediaPreview) ImplementsMessageExtendedMedia() {}

type MessageMedia interface {
	tl.Object
	ImplementsMessageMedia()
}

// Attached contact.
type MessageMediaContact struct {
	PhoneNumber string // Phone number
	FirstName   string // Contact's first name
	LastName    string // Contact's last name
	Vcard       string // VCARD of contact
	UserID      int64  // User identifier or 0, if the user with the given phone number is not registered
}

func (*MessageMediaContact) CRC() uint32 {
	return 0x70322949
}

func (*MessageMediaContact) ImplementsMessageMedia() {}

// Dice-based animated sticker
type MessageMediaDice struct {
	Value    int32  // Dice value
	Emoticon string // The emoji, for now <img class="emoji" src="//telegram.org/img/emoji/40/F09F8F80.png" width="20" height="20" alt="🏀" />, <img class="emoji" src="//telegram.org/img/emoji/40/F09F8EB2.png" width="20" height="20" alt="🎲" /> and <img class="emoji" src="//telegram.org/img/emoji/40/F09F8EAF.png" width="20" height="20" alt="🎯" /> are supported
}

func (*MessageMediaDice) CRC() uint32 {
	return 0x3f7ee58b
}

func (*MessageMediaDice) ImplementsMessageMedia() {}

// Document (video, audio, voice, sticker, any media type except photo)
type MessageMediaDocument struct {
	Nopremium      bool       `tl:"flag:3,encoded_in_bitflags"` // Whether this is a normal sticker, if not set this is a premium sticker and a premium sticker animation must be played.
	Spoiler        bool       `tl:"flag:4,encoded_in_bitflags"` // Whether this media should be hidden behind a spoiler warning
	Video          bool       `tl:"flag:6,encoded_in_bitflags"` // Whether this is a video.
	Round          bool       `tl:"flag:7,encoded_in_bitflags"` // Whether this is a round video.
	Voice          bool       `tl:"flag:8,encoded_in_bitflags"` // Whether this is a voice message.
	Document       Document   `tl:"flag:0"`                     // Attached document
	AltDocuments   []Document `tl:"flag:5"`                     // Videos only, contains alternative qualities of the video.
	VideoCover     Photo      `tl:"flag:9"`                     // Custom video cover.
	VideoTimestamp int32      `tl:"flag:10"`                    // Start playing the video at the specified timestamp (seconds).
	TtlSeconds     int32      `tl:"flag:2"`                     // Time to live of self-destructing document
}

func (*MessageMediaDocument) CRC() uint32 {
	return 0x52d8ccd9
}

func (*MessageMediaDocument) FlagIndex() int {
	return 0
}

func (*MessageMediaDocument) ImplementsMessageMedia() {}

// Empty constructor.
type MessageMediaEmpty struct{}

func (*MessageMediaEmpty) CRC() uint32 {
	return 0x3ded6320
}

func (*MessageMediaEmpty) ImplementsMessageMedia() {}

// Telegram game
type MessageMediaGame struct {
	Game *Game // Game
}

func (*MessageMediaGame) CRC() uint32 {
	return 0xfdb19008
}

func (*MessageMediaGame) ImplementsMessageMedia() {}

// Attached map.
type MessageMediaGeo struct {
	Geo GeoPoint // GeoPoint
}

func (*MessageMediaGeo) CRC() uint32 {
	return 0x56e0d474
}

func (*MessageMediaGeo) ImplementsMessageMedia() {}

// Indicates a live geolocation
type MessageMediaGeoLive struct {
	Geo                         GeoPoint // Geolocation
	Heading                     int32    `tl:"flag:0"` // For live locations, a direction in which the location moves, in degrees; 1-360
	Period                      int32    // Validity period of provided geolocation
	ProximityNotificationRadius int32    `tl:"flag:1"` // For live locations, a maximum distance to another chat member for proximity alerts, in meters (0-100000).
}

func (*MessageMediaGeoLive) CRC() uint32 {
	return 0xb940c666
}

func (*MessageMediaGeoLive) FlagIndex() int {
	return 0
}

func (*MessageMediaGeoLive) ImplementsMessageMedia() {}

// Contains info about a giveaway, see here » for more info.
type MessageMediaGiveaway struct {
	OnlyNewSubscribers bool     `tl:"flag:0,encoded_in_bitflags"` // If set, only new subscribers starting from the giveaway creation date will be able to participate to the giveaway.
	WinnersAreVisible  bool     `tl:"flag:2,encoded_in_bitflags"` // If set, giveaway winners are public and will be listed in a messageMediaGiveawayResults message that will be automatically sent to the channel once the giveaway ends.
	Channels           []int64  // The channels that the user must join to participate in the giveaway.
	CountriesIso2      []string `tl:"flag:1"` // If set, only users residing in these countries can participate in the giveaway, (specified as a list of two-letter ISO 3166-1 alpha-2 country codes); otherwise there are no country-based limitations.
	PrizeDescription   string   `tl:"flag:3"` // Can contain a textual description of additional giveaway prizes.
	Quantity           int32    // Number of Telegram Premium subscriptions given away.
	Months             int32    `tl:"flag:4"` // Duration in months of each Telegram Premium subscription in the giveaway.
	Stars              int64    `tl:"flag:5"` // For Telegram Star giveaways, the total number of Telegram Stars being given away.
	UntilDate          int32    // The end date of the giveaway.
}

func (*MessageMediaGiveaway) CRC() uint32 {
	return 0xaa073beb
}

func (*MessageMediaGiveaway) FlagIndex() int {
	return 0
}

func (*MessageMediaGiveaway) ImplementsMessageMedia() {}

// A giveaway with public winners has finished, this constructor contains info about the winners.
type MessageMediaGiveawayResults struct {
	OnlyNewSubscribers   bool    `tl:"flag:0,encoded_in_bitflags"` // If set, only new subscribers starting from the giveaway creation date participated in the giveaway.
	Refunded             bool    `tl:"flag:2,encoded_in_bitflags"` // If set, the giveaway was canceled and was fully refunded.
	ChannelID            int64   // ID of the channel/supergroup that was automatically boosted by the winners of the giveaway for duration of the Premium subscription.
	AdditionalPeersCount int32   `tl:"flag:3"` // Number of other channels that participated in the giveaway.
	LaunchMsgID          int32   // Identifier of the message with the giveaway in channel_id.
	WinnersCount         int32   // Total number of winners in the giveaway.
	UnclaimedCount       int32   // Number of not-yet-claimed prizes.
	Winners              []int64 // Up to 100 user identifiers of the winners of the giveaway.
	Months               int32   `tl:"flag:4"` // Duration in months of each Telegram Premium subscription in the giveaway.
	Stars                int64   `tl:"flag:5"` // For Telegram Star giveaways, the total number of Telegram Stars being given away.
	PrizeDescription     string  `tl:"flag:1"` // Can contain a textual description of additional giveaway prizes.
	UntilDate            int32   // Point in time (Unix timestamp) when the winners were selected. May be bigger than winners selection date specified in initial parameters of the giveaway.
}

func (*MessageMediaGiveawayResults) CRC() uint32 {
	return 0xceaa3ea1
}

func (*MessageMediaGiveawayResults) FlagIndex() int {
	return 0
}

func (*MessageMediaGiveawayResults) ImplementsMessageMedia() {}

// Invoice
type MessageMediaInvoice struct {
	ShippingAddressRequested bool                 `tl:"flag:1,encoded_in_bitflags"` // Whether the shipping address was requested
	Test                     bool                 `tl:"flag:3,encoded_in_bitflags"` // Whether this is an example invoice
	Title                    string               // Product name, 1-32 characters
	Description              string               // Product description, 1-255 characters
	Photo                    WebDocument          `tl:"flag:0"` // URL of the product photo for the invoice. Can be a photo of the goods or a marketing image for a service. People like it better when they see what they are paying for.
	ReceiptMsgID             int32                `tl:"flag:2"` // Message ID of receipt: if set, clients should change the text of the first keyboardButtonBuy button always attached to the message to a localized version of the word Receipt
	Currency                 string               // Three-letter ISO 4217 currency code, or XTR for Telegram Stars.
	TotalAmount              int64                // Total price in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
	StartParam               string               // Unique bot deep-linking parameter that can be used to generate this invoice
	ExtendedMedia            MessageExtendedMedia `tl:"flag:4"` // Deprecated
}

func (*MessageMediaInvoice) CRC() uint32 {
	return 0xf6a548d3
}

func (*MessageMediaInvoice) FlagIndex() int {
	return 0
}

func (*MessageMediaInvoice) ImplementsMessageMedia() {}

// Paid media, see here » for more info.
type MessageMediaPaidMedia struct {
	StarsAmount   int64                  // The price of the media in Telegram Stars.
	ExtendedMedia []MessageExtendedMedia // Either the paid-for media, or super low resolution media previews if the media wasn't purchased yet,.
}

func (*MessageMediaPaidMedia) CRC() uint32 {
	return 0xa8852491
}

func (*MessageMediaPaidMedia) ImplementsMessageMedia() {}

// Attached photo.
type MessageMediaPhoto struct {
	Spoiler    bool  `tl:"flag:3,encoded_in_bitflags"` // Whether this media should be hidden behind a spoiler warning
	Photo      Photo `tl:"flag:0"`                     // Photo
	TtlSeconds int32 `tl:"flag:2"`                     // Time to live in seconds of self-destructing photo
}

func (*MessageMediaPhoto) CRC() uint32 {
	return 0x695150d7
}

func (*MessageMediaPhoto) FlagIndex() int {
	return 0
}

func (*MessageMediaPhoto) ImplementsMessageMedia() {}

// Poll
type MessageMediaPoll struct {
	Poll    *Poll        // The poll
	Results *PollResults // The results of the poll
}

func (*MessageMediaPoll) CRC() uint32 {
	return 0x4bd6e798
}

func (*MessageMediaPoll) ImplementsMessageMedia() {}

// Represents a forwarded story or a story mention.
type MessageMediaStory struct {
	ViaMention bool      `tl:"flag:1,encoded_in_bitflags"` // If set, indicates that this someone has mentioned us in this story (i.e. by tagging us in the description) or vice versa, we have mentioned the other peer (if the message is outgoing).
	Peer       Peer      // Peer that posted the story.
	ID         int32     // Story ID
	Story      StoryItem `tl:"flag:0"` // The story itself, if absent fetch it using stories.getStoriesByID and the peer/id parameters specified above.
}

func (*MessageMediaStory) CRC() uint32 {
	return 0x68cb6283
}

func (*MessageMediaStory) FlagIndex() int {
	return 0
}

func (*MessageMediaStory) ImplementsMessageMedia() {}

// Represents a todo list ».
type MessageMediaToDo struct {
	Todo        *TodoList         // The todo list.
	Completions []*TodoCompletion `tl:"flag:0"` // Completed items.
}

func (*MessageMediaToDo) CRC() uint32 {
	return 0x8a53b014
}

func (*MessageMediaToDo) FlagIndex() int {
	return 0
}

func (*MessageMediaToDo) ImplementsMessageMedia() {}

// Current version of the client does not support this media type.
type MessageMediaUnsupported struct{}

func (*MessageMediaUnsupported) CRC() uint32 {
	return 0x9f84f49e
}

func (*MessageMediaUnsupported) ImplementsMessageMedia() {}

// Venue
type MessageMediaVenue struct {
	Geo       GeoPoint // Geolocation of venue
	Title     string   // Venue name
	Address   string   // Address
	Provider  string   // Venue provider: currently only "foursquare" and "gplaces" (Google Places) need to be supported
	VenueID   string   // Venue ID in the provider's database
	VenueType string   // Venue type in the provider's database
}

func (*MessageMediaVenue) CRC() uint32 {
	return 0x2ec0533f
}

func (*MessageMediaVenue) ImplementsMessageMedia() {}

// Preview of webpage
type MessageMediaWebPage struct {
	ForceLargeMedia bool    `tl:"flag:0,encoded_in_bitflags"` // If set, specifies that a large media preview should be used.
	ForceSmallMedia bool    `tl:"flag:1,encoded_in_bitflags"` // If set, specifies that a small media preview should be used.
	Manual          bool    `tl:"flag:3,encoded_in_bitflags"` // If set, indicates that the URL used for the webpage preview was specified manually using inputMediaWebPage, and may not be related to any of the URLs specified in the message.
	Safe            bool    `tl:"flag:4,encoded_in_bitflags"` // If set, the webpage can be opened directly without user confirmation; otherwise, user confirmation is required, showing the exact URL that will be opened.
	Webpage         WebPage // Webpage preview
}

func (*MessageMediaWebPage) CRC() uint32 {
	return 0xddf10c3b
}

func (*MessageMediaWebPage) FlagIndex() int {
	return 0
}

func (*MessageMediaWebPage) ImplementsMessageMedia() {}

type MessagePeerVote interface {
	tl.Object
	ImplementsMessagePeerVote()
}

// How a peer voted in a poll
type MessagePeerVoteObj struct {
	Peer   Peer   // Peer ID
	Option []byte // The option chosen by the peer
	Date   int32  // When did the peer cast the vote
}

func (*MessagePeerVoteObj) CRC() uint32 {
	return 0xb6cc2d5c
}

func (*MessagePeerVoteObj) ImplementsMessagePeerVote() {}

// How a peer voted in a poll (reduced constructor, returned if an `option` was provided to messages.getPollVotes)
type MessagePeerVoteInputOption struct {
	Peer Peer  // The peer that voted for the queried option
	Date int32 // When did the peer cast the vote
}

func (*MessagePeerVoteInputOption) CRC() uint32 {
	return 0x74cda504
}

func (*MessagePeerVoteInputOption) ImplementsMessagePeerVote() {}

// How a peer voted in a multiple-choice poll
type MessagePeerVoteMultiple struct {
	Peer    Peer     // Peer ID
	Options [][]byte // Options chosen by the peer
	Date    int32    // When did the peer cast their votes
}

func (*MessagePeerVoteMultiple) CRC() uint32 {
	return 0x4628f6e6
}

func (*MessagePeerVoteMultiple) ImplementsMessagePeerVote() {}

type MessageReplyHeader interface {
	tl.Object
	ImplementsMessageReplyHeader()
}

// Message replies and thread information
type MessageReplyHeaderObj struct {
	ReplyToScheduled bool              `tl:"flag:2,encoded_in_bitflags"` // This is a reply to a scheduled message.
	ForumTopic       bool              `tl:"flag:3,encoded_in_bitflags"` // Whether this message was sent in a forum topic (except for the General topic).
	Quote            bool              `tl:"flag:9,encoded_in_bitflags"` // Whether this message is quoting a part of another message.
	ReplyToMsgID     int32             `tl:"flag:4"`                     // ID of message to which this message is replying
	ReplyToPeerID    Peer              `tl:"flag:0"`                     // For replies sent in channel discussion threads of which the current user is not a member, the discussion group ID
	ReplyFrom        *MessageFwdHeader `tl:"flag:5"`                     // When replying to a message sent by a certain peer to another chat, contains info about the peer that originally sent the message to that other chat.
	ReplyMedia       MessageMedia      `tl:"flag:8"`                     // When replying to a media sent by a certain peer to another chat, contains the media of the replied-to message.
	ReplyToTopID     int32             `tl:"flag:1"`                     // ID of the message that started this message thread
	QuoteText        string            `tl:"flag:6"`                     // Used to quote-reply to only a certain section (specified here) of the original message.
	QuoteEntities    []MessageEntity   `tl:"flag:7"`                     // Message entities for styled text from the quote_text field.
	QuoteOffset      int32             `tl:"flag:10"`                    // Offset of the message quote_text within the original message (in UTF-16 code units).
	TodoItemID       int32             `tl:"flag:11"`                    // Can be set to reply to the specified item of a todo list.
}

func (*MessageReplyHeaderObj) CRC() uint32 {
	return 0x6917560b
}

func (*MessageReplyHeaderObj) FlagIndex() int {
	return 0
}

func (*MessageReplyHeaderObj) ImplementsMessageReplyHeader() {}

// Represents a reply to a story
type MessageReplyStoryHeader struct {
	Peer    Peer  // Sender of the story.
	StoryID int32 // Story ID
}

func (*MessageReplyStoryHeader) CRC() uint32 {
	return 0xe5af939
}

func (*MessageReplyStoryHeader) ImplementsMessageReplyHeader() {}

type MessagesFilter interface {
	tl.Object
	ImplementsMessagesFilter()
}

// Return only chat photo changes
type InputMessagesFilterChatPhotos struct{}

func (*InputMessagesFilterChatPhotos) CRC() uint32 {
	return 0x3a20ecb8
}

func (*InputMessagesFilterChatPhotos) ImplementsMessagesFilter() {}

// Return only messages containing contacts
type InputMessagesFilterContacts struct{}

func (*InputMessagesFilterContacts) CRC() uint32 {
	return 0xe062db83
}

func (*InputMessagesFilterContacts) ImplementsMessagesFilter() {}

// Filter for messages containing documents.
type InputMessagesFilterDocument struct{}

func (*InputMessagesFilterDocument) CRC() uint32 {
	return 0x9eddf188
}

func (*InputMessagesFilterDocument) ImplementsMessagesFilter() {}

// Filter is absent.
type InputMessagesFilterEmpty struct{}

func (*InputMessagesFilterEmpty) CRC() uint32 {
	return 0x57e2f66c
}

func (*InputMessagesFilterEmpty) ImplementsMessagesFilter() {}

// Return only messages containing geolocations
type InputMessagesFilterGeo struct{}

func (*InputMessagesFilterGeo) CRC() uint32 {
	return 0xe7026d0d
}

func (*InputMessagesFilterGeo) ImplementsMessagesFilter() {}

// Return only messages containing gifs
type InputMessagesFilterGif struct{}

func (*InputMessagesFilterGif) CRC() uint32 {
	return 0xffc86587
}

func (*InputMessagesFilterGif) ImplementsMessagesFilter() {}

// Return only messages containing audio files
type InputMessagesFilterMusic struct{}

func (*InputMessagesFilterMusic) CRC() uint32 {
	return 0x3751b49e
}

func (*InputMessagesFilterMusic) ImplementsMessagesFilter() {}

// Return only messages where the current user was mentioned.
type InputMessagesFilterMyMentions struct{}

func (*InputMessagesFilterMyMentions) CRC() uint32 {
	return 0xc1f8e69a
}

func (*InputMessagesFilterMyMentions) ImplementsMessagesFilter() {}

// Return only phone calls
type InputMessagesFilterPhoneCalls struct {
	Missed bool `tl:"flag:0,encoded_in_bitflags"` // Return only missed phone calls
}

func (*InputMessagesFilterPhoneCalls) CRC() uint32 {
	return 0x80c99768
}

func (*InputMessagesFilterPhoneCalls) FlagIndex() int {
	return 0
}

func (*InputMessagesFilterPhoneCalls) ImplementsMessagesFilter() {}

// Filter for messages containing photos or videos.
type InputMessagesFilterPhotoVideo struct{}

func (*InputMessagesFilterPhotoVideo) CRC() uint32 {
	return 0x56e9f0e4
}

func (*InputMessagesFilterPhotoVideo) ImplementsMessagesFilter() {}

type InputMessagesFilterPhotoVideoDocuments struct{}

func (*InputMessagesFilterPhotoVideoDocuments) CRC() uint32 {
	return 0xd95e73bb
}

func (*InputMessagesFilterPhotoVideoDocuments) ImplementsMessagesFilter() {}

// Filter for messages containing photos.
type InputMessagesFilterPhotos struct{}

func (*InputMessagesFilterPhotos) CRC() uint32 {
	return 0x9609a51c
}

func (*InputMessagesFilterPhotos) ImplementsMessagesFilter() {}

// Fetch only pinned messages
type InputMessagesFilterPinned struct{}

func (*InputMessagesFilterPinned) CRC() uint32 {
	return 0x1bb00451
}

func (*InputMessagesFilterPinned) ImplementsMessagesFilter() {}

// Return only round videos
type InputMessagesFilterRoundVideo struct{}

func (*InputMessagesFilterRoundVideo) CRC() uint32 {
	return 0xb549da53
}

func (*InputMessagesFilterRoundVideo) ImplementsMessagesFilter() {}

// Return only round videos and voice notes
type InputMessagesFilterRoundVoice struct{}

func (*InputMessagesFilterRoundVoice) CRC() uint32 {
	return 0x7a7c17a4
}

func (*InputMessagesFilterRoundVoice) ImplementsMessagesFilter() {}

// Return only messages containing URLs
type InputMessagesFilterURL struct{}

func (*InputMessagesFilterURL) CRC() uint32 {
	return 0x7ef0dd87
}

func (*InputMessagesFilterURL) ImplementsMessagesFilter() {}

// Filter for messages containing videos.
type InputMessagesFilterVideo struct{}

func (*InputMessagesFilterVideo) CRC() uint32 {
	return 0x9fc00e65
}

func (*InputMessagesFilterVideo) ImplementsMessagesFilter() {}

// Return only messages containing voice notes
type InputMessagesFilterVoice struct{}

func (*InputMessagesFilterVoice) CRC() uint32 {
	return 0x50f5c392
}

func (*InputMessagesFilterVoice) ImplementsMessagesFilter() {}

type NotificationSound interface {
	tl.Object
	ImplementsNotificationSound()
}

// Indicates the default notification sound should be used
type NotificationSoundDefault struct{}

func (*NotificationSoundDefault) CRC() uint32 {
	return 0x97e8bebe
}

func (*NotificationSoundDefault) ImplementsNotificationSound() {}

// Indicates a specific local notification sound should be used
type NotificationSoundLocal struct {
	Title string // Notification sound title
	Data  string // Notification sound identifier (arbitrary data used by the client to identify a specific local notification sound)
}

func (*NotificationSoundLocal) CRC() uint32 {
	return 0x830b9ae4
}

func (*NotificationSoundLocal) ImplementsNotificationSound() {}

// No notification sound should be used
type NotificationSoundNone struct{}

func (*NotificationSoundNone) CRC() uint32 {
	return 0x6f0c34df
}

func (*NotificationSoundNone) ImplementsNotificationSound() {}

// A specific previously uploaded notification sound should be used
type NotificationSoundRingtone struct {
	ID int64 // Document ID of notification sound uploaded using account.uploadRingtone
}

func (*NotificationSoundRingtone) CRC() uint32 {
	return 0xff6c8049
}

func (*NotificationSoundRingtone) ImplementsNotificationSound() {}

type NotifyPeer interface {
	tl.Object
	ImplementsNotifyPeer()
}

// Channel notification settings
type NotifyBroadcasts struct{}

func (*NotifyBroadcasts) CRC() uint32 {
	return 0xd612e8ef
}

func (*NotifyBroadcasts) ImplementsNotifyPeer() {}

// Notifications generated by all groups.
type NotifyChats struct{}

func (*NotifyChats) CRC() uint32 {
	return 0xc007cec3
}

func (*NotifyChats) ImplementsNotifyPeer() {}

// Notifications generated by a topic in a forum.
type NotifyForumTopic struct {
	Peer     Peer  // Forum ID
	TopMsgID int32 // Topic ID
}

func (*NotifyForumTopic) CRC() uint32 {
	return 0x226e6308
}

func (*NotifyForumTopic) ImplementsNotifyPeer() {}

// Notifications generated by a certain user or group.
type NotifyPeerObj struct {
	Peer Peer // user or group
}

func (*NotifyPeerObj) CRC() uint32 {
	return 0x9fd40bd8
}

func (*NotifyPeerObj) ImplementsNotifyPeer() {}

// Notifications generated by all users.
type NotifyUsers struct{}

func (*NotifyUsers) CRC() uint32 {
	return 0xb4c83b4c
}

func (*NotifyUsers) ImplementsNotifyPeer() {}

type PageBlock interface {
	tl.Object
	ImplementsPageBlock()
}

// Link to section within the page itself (like `&lt;a href="#target"&gt;anchor&lt;/a&gt;`)
type PageBlockAnchor struct {
	Name string // Name of target section
}

func (*PageBlockAnchor) CRC() uint32 {
	return 0xce0d37b0
}

func (*PageBlockAnchor) ImplementsPageBlock() {}

// Audio
type PageBlockAudio struct {
	AudioID int64        // Audio ID (to be fetched from the container page constructor
	Caption *PageCaption // Audio caption
}

func (*PageBlockAudio) CRC() uint32 {
	return 0x804361ea
}

func (*PageBlockAudio) ImplementsPageBlock() {}

// Author and date of creation of article
type PageBlockAuthorDate struct {
	Author        RichText // Author name
	PublishedDate int32    // Date of publication
}

func (*PageBlockAuthorDate) CRC() uint32 {
	return 0xbaafe5e0
}

func (*PageBlockAuthorDate) ImplementsPageBlock() {}

// Quote (equivalent to the HTML `&lt;blockquote&gt;`)
type PageBlockBlockquote struct {
	Text    RichText // Quote contents
	Caption RichText // Caption
}

func (*PageBlockBlockquote) CRC() uint32 {
	return 0x263d7c26
}

func (*PageBlockBlockquote) ImplementsPageBlock() {}

// Reference to a telegram channel
type PageBlockChannel struct {
	Channel Chat // The channel/supergroup/chat
}

func (*PageBlockChannel) CRC() uint32 {
	return 0xef1751b5
}

func (*PageBlockChannel) ImplementsPageBlock() {}

// Collage of media
type PageBlockCollage struct {
	Items   []PageBlock  // Media elements
	Caption *PageCaption // Caption
}

func (*PageBlockCollage) CRC() uint32 {
	return 0x65a0fa4d
}

func (*PageBlockCollage) ImplementsPageBlock() {}

// A page cover
type PageBlockCover struct {
	Cover PageBlock // Cover
}

func (*PageBlockCover) CRC() uint32 {
	return 0x39f23300
}

func (*PageBlockCover) ImplementsPageBlock() {}

// A collapsible details block
type PageBlockDetails struct {
	Open   bool        `tl:"flag:0,encoded_in_bitflags"` // Whether the block is open by default
	Blocks []PageBlock // Block contents
	Title  RichText    // Always visible heading for the block
}

func (*PageBlockDetails) CRC() uint32 {
	return 0x76768bed
}

func (*PageBlockDetails) FlagIndex() int {
	return 0
}

func (*PageBlockDetails) ImplementsPageBlock() {}

// An empty block separating a page
type PageBlockDivider struct{}

func (*PageBlockDivider) CRC() uint32 {
	return 0xdb20b188
}

func (*PageBlockDivider) ImplementsPageBlock() {}

// An embedded webpage
type PageBlockEmbed struct {
	FullWidth      bool         `tl:"flag:0,encoded_in_bitflags"` // Whether the block should be full width
	AllowScrolling bool         `tl:"flag:3,encoded_in_bitflags"` // Whether scrolling should be allowed
	URL            string       `tl:"flag:1"`                     // Web page URL, if available
	Html           string       `tl:"flag:2"`                     // HTML-markup of the embedded page
	PosterPhotoID  int64        `tl:"flag:4"`                     // Poster photo, if available
	W              int32        `tl:"flag:5"`                     // Block width, if known
	H              int32        `tl:"flag:5"`                     // Block height, if known
	Caption        *PageCaption // Caption
}

func (*PageBlockEmbed) CRC() uint32 {
	return 0xa8718dc5
}

func (*PageBlockEmbed) FlagIndex() int {
	return 0
}

func (*PageBlockEmbed) ImplementsPageBlock() {}

// An embedded post
type PageBlockEmbedPost struct {
	URL           string       // Web page URL
	WebpageID     int64        // ID of generated webpage preview
	AuthorPhotoID int64        // ID of the author's photo
	Author        string       // Author name
	Date          int32        // Creation date
	Blocks        []PageBlock  // Post contents
	Caption       *PageCaption // Caption
}

func (*PageBlockEmbedPost) CRC() uint32 {
	return 0xf259a80b
}

func (*PageBlockEmbedPost) ImplementsPageBlock() {}

// Page footer
type PageBlockFooter struct {
	Text RichText // Contents
}

func (*PageBlockFooter) CRC() uint32 {
	return 0x48870999
}

func (*PageBlockFooter) ImplementsPageBlock() {}

// Page header
type PageBlockHeader struct {
	Text RichText // Contents
}

func (*PageBlockHeader) CRC() uint32 {
	return 0xbfd064ec
}

func (*PageBlockHeader) ImplementsPageBlock() {}

// Kicker
type PageBlockKicker struct {
	Text RichText // Contents
}

func (*PageBlockKicker) CRC() uint32 {
	return 0x1e148390
}

func (*PageBlockKicker) ImplementsPageBlock() {}

// Unordered list of IV blocks
type PageBlockList struct {
	Items []PageListItem // List of blocks in an IV page
}

func (*PageBlockList) CRC() uint32 {
	return 0xe4e88011
}

func (*PageBlockList) ImplementsPageBlock() {}

// A map
type PageBlockMap struct {
	Geo     GeoPoint     // Location of the map center
	Zoom    int32        // Map zoom level; 13-20
	W       int32        // Map width in pixels before applying scale; 16-102
	H       int32        // Map height in pixels before applying scale; 16-1024
	Caption *PageCaption // Caption
}

func (*PageBlockMap) CRC() uint32 {
	return 0xa44f3ef6
}

func (*PageBlockMap) ImplementsPageBlock() {}

// Ordered list of IV blocks
type PageBlockOrderedList struct {
	Items []PageListOrderedItem // List items
}

func (*PageBlockOrderedList) CRC() uint32 {
	return 0x9a8ae1e1
}

func (*PageBlockOrderedList) ImplementsPageBlock() {}

// A paragraph
type PageBlockParagraph struct {
	Text RichText // Text
}

func (*PageBlockParagraph) CRC() uint32 {
	return 0x467a0766
}

func (*PageBlockParagraph) ImplementsPageBlock() {}

// A photo
type PageBlockPhoto struct {
	PhotoID   int64        // Photo ID
	Caption   *PageCaption // Caption
	URL       string       `tl:"flag:0"` // HTTP URL of page the photo leads to when clicked
	WebpageID int64        `tl:"flag:0"` // ID of preview of the page the photo leads to when clicked
}

func (*PageBlockPhoto) CRC() uint32 {
	return 0x1759c560
}

func (*PageBlockPhoto) FlagIndex() int {
	return 0
}

func (*PageBlockPhoto) ImplementsPageBlock() {}

// Preformatted (`&lt;pre&gt;` text)
type PageBlockPreformatted struct {
	Text     RichText // Text
	Language string   // Programming language of preformatted text
}

func (*PageBlockPreformatted) CRC() uint32 {
	return 0xc070d93e
}

func (*PageBlockPreformatted) ImplementsPageBlock() {}

// Pullquote
type PageBlockPullquote struct {
	Text    RichText // Text
	Caption RichText // Caption
}

func (*PageBlockPullquote) CRC() uint32 {
	return 0x4f4456d3
}

func (*PageBlockPullquote) ImplementsPageBlock() {}

// Related articles
type PageBlockRelatedArticles struct {
	Title    RichText              // Title
	Articles []*PageRelatedArticle // Related articles
}

func (*PageBlockRelatedArticles) CRC() uint32 {
	return 0x16115a96
}

func (*PageBlockRelatedArticles) ImplementsPageBlock() {}

// Slideshow
type PageBlockSlideshow struct {
	Items   []PageBlock  // Slideshow items
	Caption *PageCaption // Caption
}

func (*PageBlockSlideshow) CRC() uint32 {
	return 0x31f9590
}

func (*PageBlockSlideshow) ImplementsPageBlock() {}

// Subheader
type PageBlockSubheader struct {
	Text RichText // Subheader
}

func (*PageBlockSubheader) CRC() uint32 {
	return 0xf12bb6e1
}

func (*PageBlockSubheader) ImplementsPageBlock() {}

// Subtitle
type PageBlockSubtitle struct {
	Text RichText // Text
}

func (*PageBlockSubtitle) CRC() uint32 {
	return 0x8ffa9a1f
}

func (*PageBlockSubtitle) ImplementsPageBlock() {}

// Table
type PageBlockTable struct {
	Bordered bool            `tl:"flag:0,encoded_in_bitflags"` // Does the table have a visible border?
	Striped  bool            `tl:"flag:1,encoded_in_bitflags"` // Is the table striped?
	Title    RichText        // Title
	Rows     []*PageTableRow // Table rows
}

func (*PageBlockTable) CRC() uint32 {
	return 0xbf4dea82
}

func (*PageBlockTable) FlagIndex() int {
	return 0
}

func (*PageBlockTable) ImplementsPageBlock() {}

// Title
type PageBlockTitle struct {
	Text RichText // Title
}

func (*PageBlockTitle) CRC() uint32 {
	return 0x70abc3fd
}

func (*PageBlockTitle) ImplementsPageBlock() {}

// Unsupported IV element
type PageBlockUnsupported struct{}

func (*PageBlockUnsupported) CRC() uint32 {
	return 0x13567e8a
}

func (*PageBlockUnsupported) ImplementsPageBlock() {}

// Video
type PageBlockVideo struct {
	Autoplay bool         `tl:"flag:0,encoded_in_bitflags"` // Whether the video is set to autoplay
	Loop     bool         `tl:"flag:1,encoded_in_bitflags"` // Whether the video is set to loop
	VideoID  int64        // Video ID
	Caption  *PageCaption // Caption
}

func (*PageBlockVideo) CRC() uint32 {
	return 0x7c8fe7b6
}

func (*PageBlockVideo) FlagIndex() int {
	return 0
}

func (*PageBlockVideo) ImplementsPageBlock() {}

type PageListItem interface {
	tl.Object
	ImplementsPageListItem()
}

// List item
type PageListItemBlocks struct {
	Blocks []PageBlock // Blocks
}

func (*PageListItemBlocks) CRC() uint32 {
	return 0x25e073fc
}

func (*PageListItemBlocks) ImplementsPageListItem() {}

// List item
type PageListItemText struct {
	Text RichText // Text
}

func (*PageListItemText) CRC() uint32 {
	return 0xb92fb6cd
}

func (*PageListItemText) ImplementsPageListItem() {}

type PageListOrderedItem interface {
	tl.Object
	ImplementsPageListOrderedItem()
}

// Ordered list of IV blocks
type PageListOrderedItemBlocks struct {
	Num    string      // Number of element within ordered list
	Blocks []PageBlock // Item contents
}

func (*PageListOrderedItemBlocks) CRC() uint32 {
	return 0x98dd8936
}

func (*PageListOrderedItemBlocks) ImplementsPageListOrderedItem() {}

// Ordered list of text items
type PageListOrderedItemText struct {
	Num  string   // Number of element within ordered list
	Text RichText // Text
}

func (*PageListOrderedItemText) CRC() uint32 {
	return 0x5e068047
}

func (*PageListOrderedItemText) ImplementsPageListOrderedItem() {}

type PaidReactionPrivacy interface {
	tl.Object
	ImplementsPaidReactionPrivacy()
}

// Send paid reactions anonymously.
type PaidReactionPrivacyAnonymous struct{}

func (*PaidReactionPrivacyAnonymous) CRC() uint32 {
	return 0x1f0c1ad9
}

func (*PaidReactionPrivacyAnonymous) ImplementsPaidReactionPrivacy() {}

// Uses the default reaction privacy, set using messages.togglePaidReactionPrivacy.
type PaidReactionPrivacyDefault struct{}

func (*PaidReactionPrivacyDefault) CRC() uint32 {
	return 0x206ad49e
}

func (*PaidReactionPrivacyDefault) ImplementsPaidReactionPrivacy() {}

// Send paid reactions as the specified peer, fetched using channels.getSendAs.
type PaidReactionPrivacyPeer struct {
	Peer InputPeer // The peer to send reactions as.
}

func (*PaidReactionPrivacyPeer) CRC() uint32 {
	return 0xdc6cfcf0
}

func (*PaidReactionPrivacyPeer) ImplementsPaidReactionPrivacy() {}

type PasswordKdfAlgo interface {
	tl.Object
	ImplementsPasswordKdfAlgo()
}

// This key derivation algorithm defines that SRP 2FA login must be used
type PasswordKdfAlgoSHA256SHA256Pbkdf2Hmacsha512Iter100000SHA256ModPow struct {
	Salt1 []byte // One of two salts used by the derivation function (see SRP 2FA login)
	Salt2 []byte // One of two salts used by the derivation function (see SRP 2FA login)
	G     int32  // Base (see SRP 2FA login)
	P     []byte // 2048-bit modulus (see SRP 2FA login)
}

func (*PasswordKdfAlgoSHA256SHA256Pbkdf2Hmacsha512Iter100000SHA256ModPow) CRC() uint32 {
	return 0x3a912d4a
}

func (*PasswordKdfAlgoSHA256SHA256Pbkdf2Hmacsha512Iter100000SHA256ModPow) ImplementsPasswordKdfAlgo() {
}

// Unknown KDF (most likely, the client is outdated and does not support the specified KDF algorithm)
type PasswordKdfAlgoUnknown struct{}

func (*PasswordKdfAlgoUnknown) CRC() uint32 {
	return 0xd45ab096
}

func (*PasswordKdfAlgoUnknown) ImplementsPasswordKdfAlgo() {}

type Peer interface {
	tl.Object
	ImplementsPeer()
}

// Channel/supergroup
type PeerChannel struct {
	ChannelID int64 // Channel ID
}

func (*PeerChannel) CRC() uint32 {
	return 0xa2a5371e
}

func (*PeerChannel) ImplementsPeer() {}

// Group.
type PeerChat struct {
	ChatID int64 // Group identifier
}

func (*PeerChat) CRC() uint32 {
	return 0x36c6019a
}

func (*PeerChat) ImplementsPeer() {}

// Chat partner
type PeerUser struct {
	UserID int64 // User identifier
}

func (*PeerUser) CRC() uint32 {
	return 0x59511722
}

func (*PeerUser) ImplementsPeer() {}

type PeerColor interface {
	tl.Object
	ImplementsPeerColor()
}
type InputPeerColorCollectible struct {
	CollectibleID int64
}

func (*InputPeerColorCollectible) CRC() uint32 {
	return 0xb8ea86a9
}

func (*InputPeerColorCollectible) ImplementsPeerColor() {}

// Represents a color palette ».
type PeerColorObj struct {
	Color             int32 `tl:"flag:0"` // Color palette ID,.
	BackgroundEmojiID int64 `tl:"flag:1"` // Optional custom emoji ID used to generate the pattern.
}

func (*PeerColorObj) CRC() uint32 {
	return 0xb54b5acf
}

func (*PeerColorObj) FlagIndex() int {
	return 0
}

func (*PeerColorObj) ImplementsPeerColor() {}

type PeerColorCollectible struct {
	CollectibleID     int64
	GiftEmojiID       int64
	BackgroundEmojiID int64
	AccentColor       int32
	Colors            []int32
	DarkAccentColor   int32   `tl:"flag:0"`
	DarkColors        []int32 `tl:"flag:1"`
}

func (*PeerColorCollectible) CRC() uint32 {
	return 0xb9c0639a
}

func (*PeerColorCollectible) FlagIndex() int {
	return 0
}

func (*PeerColorCollectible) ImplementsPeerColor() {}

type PeerLocated interface {
	tl.Object
	ImplementsPeerLocated()
}

// Peer geolocated nearby
type PeerLocatedObj struct {
	Peer     Peer  // Peer
	Expires  int32 // Validity period of current data
	Distance int32 // Distance from the peer in meters
}

func (*PeerLocatedObj) CRC() uint32 {
	return 0xca461b5d
}

func (*PeerLocatedObj) ImplementsPeerLocated() {}

// Current peer
type PeerSelfLocated struct {
	Expires int32 // Expiry of geolocation info for current peer
}

func (*PeerSelfLocated) CRC() uint32 {
	return 0xf8ec284b
}

func (*PeerSelfLocated) ImplementsPeerLocated() {}

type PhoneCall interface {
	tl.Object
	ImplementsPhoneCall()
}

// Phone call
type PhoneCallObj struct {
	P2PAllowed          bool               `tl:"flag:5,encoded_in_bitflags"` // Whether P2P connection to the other peer is allowed
	Video               bool               `tl:"flag:6,encoded_in_bitflags"` // Whether this is a video call
	ConferenceSupported bool               `tl:"flag:8,encoded_in_bitflags"` // If set, the other party supports upgrading of the call to a conference call.
	ID                  int64              // Call ID
	AccessHash          int64              // Access hash
	Date                int32              // Date of creation of the call
	AdminID             int64              // User ID of the creator of the call
	ParticipantID       int64              // User ID of the other participant in the call
	GAOrB               []byte             // Parameter for key exchange
	KeyFingerprint      int64              // Key fingerprint
	Protocol            *PhoneCallProtocol // Call protocol info to be passed to libtgvoip
	Connections         []PhoneConnection  // List of endpoints the user can connect to exchange call data
	StartDate           int32              // When was the call actually started
	CustomParameters    *DataJson          `tl:"flag:7"` // Custom JSON-encoded call parameters to be passed to tgcalls.
}

func (*PhoneCallObj) CRC() uint32 {
	return 0x30535af5
}

func (*PhoneCallObj) FlagIndex() int {
	return 0
}

func (*PhoneCallObj) ImplementsPhoneCall() {}

// An accepted phone call
type PhoneCallAccepted struct {
	Video         bool               `tl:"flag:6,encoded_in_bitflags"` // Whether this is a video call
	ID            int64              // ID of accepted phone call
	AccessHash    int64              // Access hash of phone call
	Date          int32              // When was the call accepted
	AdminID       int64              // ID of the call creator
	ParticipantID int64              // ID of the other user in the call
	GB            []byte             // B parameter for secure E2E phone call key exchange
	Protocol      *PhoneCallProtocol // Protocol to use for phone call
}

func (*PhoneCallAccepted) CRC() uint32 {
	return 0x3660c311
}

func (*PhoneCallAccepted) FlagIndex() int {
	return 0
}

func (*PhoneCallAccepted) ImplementsPhoneCall() {}

// Indicates a discarded phone call
type PhoneCallDiscarded struct {
	NeedRating bool                   `tl:"flag:2,encoded_in_bitflags"` // Whether the server required the user to rate the call
	NeedDebug  bool                   `tl:"flag:3,encoded_in_bitflags"` // Whether the server required the client to send the libtgvoip call debug data
	Video      bool                   `tl:"flag:6,encoded_in_bitflags"` // Whether the call was a video call
	ID         int64                  // Call ID
	Reason     PhoneCallDiscardReason `tl:"flag:0"` // Why was the phone call discarded
	Duration   int32                  `tl:"flag:1"` // Duration of the phone call in seconds
}

func (*PhoneCallDiscarded) CRC() uint32 {
	return 0x50ca4de1
}

func (*PhoneCallDiscarded) FlagIndex() int {
	return 0
}

func (*PhoneCallDiscarded) ImplementsPhoneCall() {}

// Empty constructor
type PhoneCallEmpty struct {
	ID int64 // Call ID
}

func (*PhoneCallEmpty) CRC() uint32 {
	return 0x5366c915
}

func (*PhoneCallEmpty) ImplementsPhoneCall() {}

// Requested phone call
type PhoneCallRequested struct {
	Video         bool               `tl:"flag:6,encoded_in_bitflags"` // Whether this is a video call
	ID            int64              // Phone call ID
	AccessHash    int64              // Access hash
	Date          int32              // When was the phone call created
	AdminID       int64              // ID of the creator of the phone call
	ParticipantID int64              // ID of the other participant of the phone call
	GAHash        []byte             // Parameter for key exchange
	Protocol      *PhoneCallProtocol // Call protocol info to be passed to libtgvoip
}

func (*PhoneCallRequested) CRC() uint32 {
	return 0x14b0ed0c
}

func (*PhoneCallRequested) FlagIndex() int {
	return 0
}

func (*PhoneCallRequested) ImplementsPhoneCall() {}

// Incoming phone call
type PhoneCallWaiting struct {
	Video         bool               `tl:"flag:6,encoded_in_bitflags"` // Is this a video call
	ID            int64              // Call ID
	AccessHash    int64              // Access hash
	Date          int32              // Date
	AdminID       int64              // Admin ID
	ParticipantID int64              // Participant ID
	Protocol      *PhoneCallProtocol // Phone call protocol info
	ReceiveDate   int32              `tl:"flag:0"` // When was the phone call received
}

func (*PhoneCallWaiting) CRC() uint32 {
	return 0xc5226f17
}

func (*PhoneCallWaiting) FlagIndex() int {
	return 0
}

func (*PhoneCallWaiting) ImplementsPhoneCall() {}

type PhoneCallDiscardReason interface {
	tl.Object
	ImplementsPhoneCallDiscardReason()
}

// The phone call was discarded because the user is busy in another call
type PhoneCallDiscardReasonBusy struct{}

func (*PhoneCallDiscardReasonBusy) CRC() uint32 {
	return 0xfaf7e8c9
}

func (*PhoneCallDiscardReasonBusy) ImplementsPhoneCallDiscardReason() {}

// The phone call was disconnected
type PhoneCallDiscardReasonDisconnect struct{}

func (*PhoneCallDiscardReasonDisconnect) CRC() uint32 {
	return 0xe095c1a0
}

func (*PhoneCallDiscardReasonDisconnect) ImplementsPhoneCallDiscardReason() {}

// The phone call was ended normally
type PhoneCallDiscardReasonHangup struct{}

func (*PhoneCallDiscardReasonHangup) CRC() uint32 {
	return 0x57adc690
}

func (*PhoneCallDiscardReasonHangup) ImplementsPhoneCallDiscardReason() {}

// This phone call was migrated to a conference call.
type PhoneCallDiscardReasonMigrateConferenceCall struct {
	Slug string // Conference link  slug.
}

func (*PhoneCallDiscardReasonMigrateConferenceCall) CRC() uint32 {
	return 0x9fbbf1f7
}

func (*PhoneCallDiscardReasonMigrateConferenceCall) ImplementsPhoneCallDiscardReason() {}

// The phone call was missed
type PhoneCallDiscardReasonMissed struct{}

func (*PhoneCallDiscardReasonMissed) CRC() uint32 {
	return 0x85e42301
}

func (*PhoneCallDiscardReasonMissed) ImplementsPhoneCallDiscardReason() {}

type PhoneConnection interface {
	tl.Object
	ImplementsPhoneConnection()
}

// Identifies an endpoint that can be used to connect to the other user in a phone call
type PhoneConnectionObj struct {
	Tcp     bool   `tl:"flag:0,encoded_in_bitflags"` // Whether TCP should be used
	ID      int64  // Endpoint ID
	Ip      string // IP address of endpoint
	Ipv6    string // IPv6 address of endpoint
	Port    int32  // Port ID
	PeerTag []byte // Our peer tag
}

func (*PhoneConnectionObj) CRC() uint32 {
	return 0x9cc123c7
}

func (*PhoneConnectionObj) FlagIndex() int {
	return 0
}

func (*PhoneConnectionObj) ImplementsPhoneConnection() {}

// WebRTC connection parameters
type PhoneConnectionWebrtc struct {
	Turn     bool   `tl:"flag:0,encoded_in_bitflags"` // Whether this is a TURN endpoint
	Stun     bool   `tl:"flag:1,encoded_in_bitflags"` // Whether this is a STUN endpoint
	ID       int64  // Endpoint ID
	Ip       string // IP address
	Ipv6     string // IPv6 address
	Port     int32  // Port
	Username string // Username
	Password string // Password
}

func (*PhoneConnectionWebrtc) CRC() uint32 {
	return 0x635fe375
}

func (*PhoneConnectionWebrtc) FlagIndex() int {
	return 0
}

func (*PhoneConnectionWebrtc) ImplementsPhoneConnection() {}

type Photo interface {
	tl.Object
	ImplementsPhoto()
}

// Photo
type PhotoObj struct {
	HasStickers   bool        `tl:"flag:0,encoded_in_bitflags"` // Whether the photo has mask stickers attached to it
	ID            int64       // ID
	AccessHash    int64       // Access hash
	FileReference []byte      // file reference
	Date          int32       // Date of upload
	Sizes         []PhotoSize // Available sizes for download
	VideoSizes    []VideoSize `tl:"flag:1"` // For animated profiles, the MPEG4 videos
	DcID          int32       // DC ID to use for download
}

func (*PhotoObj) CRC() uint32 {
	return 0xfb197a65
}

func (*PhotoObj) FlagIndex() int {
	return 0
}

func (*PhotoObj) ImplementsPhoto() {}

// Empty constructor, non-existent photo
type PhotoEmpty struct {
	ID int64 // Photo identifier
}

func (*PhotoEmpty) CRC() uint32 {
	return 0x2331b22d
}

func (*PhotoEmpty) ImplementsPhoto() {}

type PhotoSize interface {
	tl.Object
	ImplementsPhotoSize()
}

// Description of an image and its content.
type PhotoCachedSize struct {
	Type  string // Thumbnail type
	W     int32  // Image width
	H     int32  // Image height
	Bytes []byte // Binary data, file content
}

func (*PhotoCachedSize) CRC() uint32 {
	return 0x21e1ad6
}

func (*PhotoCachedSize) ImplementsPhotoSize() {}

// Messages with animated stickers can have a compressed svg (&lt; 300 bytes) to show the outline of the sticker before fetching the actual lottie animation.
type PhotoPathSize struct {
	Type  string // Always j
	Bytes []byte // Compressed SVG path payload
}

func (*PhotoPathSize) CRC() uint32 {
	return 0xd8214d41
}

func (*PhotoPathSize) ImplementsPhotoSize() {}

// Image description.
type PhotoSizeObj struct {
	Type string // Thumbnail type
	W    int32  // Image width
	H    int32  // Image height
	Size int32  // File size
}

func (*PhotoSizeObj) CRC() uint32 {
	return 0x75c78e60
}

func (*PhotoSizeObj) ImplementsPhotoSize() {}

// Empty constructor. Image with this thumbnail is unavailable.
type PhotoSizeEmpty struct {
	Type string // Thumbnail type
}

func (*PhotoSizeEmpty) CRC() uint32 {
	return 0xe17e23c
}

func (*PhotoSizeEmpty) ImplementsPhotoSize() {}

// Progressively encoded photosize
type PhotoSizeProgressive struct {
	Type  string  // Photosize type
	W     int32   // Photo width
	H     int32   // Photo height
	Sizes []int32 // Sizes of progressive JPEG file prefixes, which can be used to preliminarily show the image.
}

func (*PhotoSizeProgressive) CRC() uint32 {
	return 0xfa3efb95
}

func (*PhotoSizeProgressive) ImplementsPhotoSize() {}

// A low-resolution compressed JPG payload
type PhotoStrippedSize struct {
	Type  string // Thumbnail type
	Bytes []byte // Thumbnail data
}

func (*PhotoStrippedSize) CRC() uint32 {
	return 0xe0b0bc2e
}

func (*PhotoStrippedSize) ImplementsPhotoSize() {}

type PostInteractionCounters interface {
	tl.Object
	ImplementsPostInteractionCounters()
}

// Interaction counters for a message.
type PostInteractionCountersMessage struct {
	MsgID     int32 // Message ID
	Views     int32 // Number of views
	Forwards  int32 // Number of forwards to public channels
	Reactions int32 // Number of reactions
}

func (*PostInteractionCountersMessage) CRC() uint32 {
	return 0xe7058e7f
}

func (*PostInteractionCountersMessage) ImplementsPostInteractionCounters() {}

// Interaction counters for a story.
type PostInteractionCountersStory struct {
	StoryID   int32 // Story ID
	Views     int32 // Number of views
	Forwards  int32 // Number of forwards and reposts to public chats and channels
	Reactions int32 // Number of reactions
}

func (*PostInteractionCountersStory) CRC() uint32 {
	return 0x8a480e27
}

func (*PostInteractionCountersStory) ImplementsPostInteractionCounters() {}

type PrepaidGiveaway interface {
	tl.Object
	ImplementsPrepaidGiveaway()
}

// Contains info about a prepaid giveaway ».
type PrepaidGiveawayObj struct {
	ID       int64 // Prepaid giveaway ID.
	Months   int32 // Duration in months of each gifted Telegram Premium subscription.
	Quantity int32 // Number of given away Telegram Premium subscriptions.
	Date     int32 // Payment date.
}

func (*PrepaidGiveawayObj) CRC() uint32 {
	return 0xb2539d54
}

func (*PrepaidGiveawayObj) ImplementsPrepaidGiveaway() {}

// Contains info about a prepaid Telegram Star giveaway ».
type PrepaidStarsGiveaway struct {
	ID       int64 // Prepaid giveaway ID.
	Stars    int64 // Number of given away Telegram Stars
	Quantity int32 // Number of giveaway winners
	Boosts   int32 // Number of boosts the channel will gain by launching the giveaway.
	Date     int32 // When was the giveaway paid for
}

func (*PrepaidStarsGiveaway) CRC() uint32 {
	return 0x9a9d77e0
}

func (*PrepaidStarsGiveaway) ImplementsPrepaidGiveaway() {}

type PrivacyRule interface {
	tl.Object
	ImplementsPrivacyRule()
}

// Allow all users
type PrivacyValueAllowAll struct{}

func (*PrivacyValueAllowAll) CRC() uint32 {
	return 0x65427b82
}

func (*PrivacyValueAllowAll) ImplementsPrivacyRule() {}

// Allow bots and mini apps
type PrivacyValueAllowBots struct{}

func (*PrivacyValueAllowBots) CRC() uint32 {
	return 0x21461b5d
}

func (*PrivacyValueAllowBots) ImplementsPrivacyRule() {}

// Allow all participants of certain chats
type PrivacyValueAllowChatParticipants struct {
	Chats []int64 // Allowed chat IDs (either a chat or a supergroup ID, verbatim the way it is received in the constructor (i.e. unlike with bot API IDs, here group and supergroup IDs should be treated in the same way)).
}

func (*PrivacyValueAllowChatParticipants) CRC() uint32 {
	return 0x6b134e8e
}

func (*PrivacyValueAllowChatParticipants) ImplementsPrivacyRule() {}

// Allow only close friends »
type PrivacyValueAllowCloseFriends struct{}

func (*PrivacyValueAllowCloseFriends) CRC() uint32 {
	return 0xf7e8d89b
}

func (*PrivacyValueAllowCloseFriends) ImplementsPrivacyRule() {}

// Allow all contacts
type PrivacyValueAllowContacts struct{}

func (*PrivacyValueAllowContacts) CRC() uint32 {
	return 0xfffe1bac
}

func (*PrivacyValueAllowContacts) ImplementsPrivacyRule() {}

// Allow only users with a Premium subscription », currently only usable for inputPrivacyKeyChatInvite.
type PrivacyValueAllowPremium struct{}

func (*PrivacyValueAllowPremium) CRC() uint32 {
	return 0xece9814b
}

func (*PrivacyValueAllowPremium) ImplementsPrivacyRule() {}

// Allow only certain users
type PrivacyValueAllowUsers struct {
	Users []int64 // Allowed users
}

func (*PrivacyValueAllowUsers) CRC() uint32 {
	return 0xb8905fb2
}

func (*PrivacyValueAllowUsers) ImplementsPrivacyRule() {}

// Disallow all users
type PrivacyValueDisallowAll struct{}

func (*PrivacyValueDisallowAll) CRC() uint32 {
	return 0x8b73e763
}

func (*PrivacyValueDisallowAll) ImplementsPrivacyRule() {}

// Disallow bots and mini apps
type PrivacyValueDisallowBots struct{}

func (*PrivacyValueDisallowBots) CRC() uint32 {
	return 0xf6a5f82f
}

func (*PrivacyValueDisallowBots) ImplementsPrivacyRule() {}

// Disallow only participants of certain chats
type PrivacyValueDisallowChatParticipants struct {
	Chats []int64 // Disallowed chats IDs (either a chat or a supergroup ID, verbatim the way it is received in the constructor (i.e. unlike with bot API IDs, here group and supergroup IDs should be treated in the same way)).
}

func (*PrivacyValueDisallowChatParticipants) CRC() uint32 {
	return 0x41c87565
}

func (*PrivacyValueDisallowChatParticipants) ImplementsPrivacyRule() {}

// Disallow only contacts
type PrivacyValueDisallowContacts struct{}

func (*PrivacyValueDisallowContacts) CRC() uint32 {
	return 0xf888fa1a
}

func (*PrivacyValueDisallowContacts) ImplementsPrivacyRule() {}

// Disallow only certain users
type PrivacyValueDisallowUsers struct {
	Users []int64 // Disallowed users
}

func (*PrivacyValueDisallowUsers) CRC() uint32 {
	return 0xe4621141
}

func (*PrivacyValueDisallowUsers) ImplementsPrivacyRule() {}

type PublicForward interface {
	tl.Object
	ImplementsPublicForward()
}

// Contains info about a forward of a story as a message.
type PublicForwardMessage struct {
	Message Message // Info about the message with the reposted story.
}

func (*PublicForwardMessage) CRC() uint32 {
	return 0x1f2bf4a
}

func (*PublicForwardMessage) ImplementsPublicForward() {}

// Contains info about a forward of a story as a repost by a public channel.
type PublicForwardStory struct {
	Peer  Peer      // The channel that reposted the story.
	Story StoryItem // The reposted story (may be different from the original story).
}

func (*PublicForwardStory) CRC() uint32 {
	return 0xedf3add0
}

func (*PublicForwardStory) ImplementsPublicForward() {}

type Reaction interface {
	tl.Object
	ImplementsReaction()
}

// Custom emoji message reaction
type ReactionCustomEmoji struct {
	DocumentID int64 // Custom emoji document ID
}

func (*ReactionCustomEmoji) CRC() uint32 {
	return 0x8935fc73
}

func (*ReactionCustomEmoji) ImplementsReaction() {}

// Normal emoji message reaction
type ReactionEmoji struct {
	Emoticon string // Emoji
}

func (*ReactionEmoji) CRC() uint32 {
	return 0x1b2286b8
}

func (*ReactionEmoji) ImplementsReaction() {}

// No reaction
type ReactionEmpty struct{}

func (*ReactionEmpty) CRC() uint32 {
	return 0x79f5d419
}

func (*ReactionEmpty) ImplementsReaction() {}

// Represents a paid Telegram Star reaction ».
type ReactionPaid struct{}

func (*ReactionPaid) CRC() uint32 {
	return 0x523da4eb
}

func (*ReactionPaid) ImplementsReaction() {}

type RecentMeURL interface {
	tl.Object
	ImplementsRecentMeURL()
}

// Recent t.me link to a chat
type RecentMeURLChat struct {
	URL    string // t.me URL
	ChatID int64  // Chat ID
}

func (*RecentMeURLChat) CRC() uint32 {
	return 0xb2da71d2
}

func (*RecentMeURLChat) ImplementsRecentMeURL() {}

// Recent t.me invite link to a chat
type RecentMeURLChatInvite struct {
	URL        string     // t.me URL
	ChatInvite ChatInvite // Chat invitation
}

func (*RecentMeURLChatInvite) CRC() uint32 {
	return 0xeb49081d
}

func (*RecentMeURLChatInvite) ImplementsRecentMeURL() {}

// Recent t.me stickerset installation URL
type RecentMeURLStickerSet struct {
	URL string            // t.me URL
	Set StickerSetCovered // Stickerset
}

func (*RecentMeURLStickerSet) CRC() uint32 {
	return 0xbc0a57dc
}

func (*RecentMeURLStickerSet) ImplementsRecentMeURL() {}

// Unknown t.me url
type RecentMeURLUnknown struct {
	URL string // URL
}

func (*RecentMeURLUnknown) CRC() uint32 {
	return 0x46e1d13d
}

func (*RecentMeURLUnknown) ImplementsRecentMeURL() {}

// Recent t.me link to a user
type RecentMeURLUser struct {
	URL    string // URL
	UserID int64  // User ID
}

func (*RecentMeURLUser) CRC() uint32 {
	return 0xb92c09e2
}

func (*RecentMeURLUser) ImplementsRecentMeURL() {}

type ReplyMarkup interface {
	tl.Object
	ImplementsReplyMarkup()
}

// Bot or inline keyboard
type ReplyInlineMarkup struct {
	Rows []*KeyboardButtonRow // Bot or inline keyboard rows
}

func (*ReplyInlineMarkup) CRC() uint32 {
	return 0x48a30254
}

func (*ReplyInlineMarkup) ImplementsReplyMarkup() {}

// Force the user to send a reply
type ReplyKeyboardForceReply struct {
	SingleUse bool `tl:"flag:1,encoded_in_bitflags"` // Requests clients to hide the keyboard as soon as it's been used. The keyboard will still be available, but clients will automatically display the usual letter-keyboard in the chat – the user can press a special button in the input field to see the custom keyboard again.
	Selective bool `tl:"flag:2,encoded_in_bitflags"` /*
		Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply_to_message_id), sender of the original message.
		Example: A user requests to change the bot's language, bot replies to the request with a keyboard to select the new language. Other users in the group don't see the keyboard.
	*/
	Placeholder string `tl:"flag:3"` // The placeholder to be shown in the input field when the keyboard is active; 1-64 characters.
}

func (*ReplyKeyboardForceReply) CRC() uint32 {
	return 0x86b40b08
}

func (*ReplyKeyboardForceReply) FlagIndex() int {
	return 0
}

func (*ReplyKeyboardForceReply) ImplementsReplyMarkup() {}

// Hide sent bot keyboard
type ReplyKeyboardHide struct {
	Selective bool `tl:"flag:2,encoded_in_bitflags"` /*
		Use this flag if you want to remove the keyboard for specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply_to_message_id), sender of the original message.

		Example: A user votes in a poll, bot returns confirmation message in reply to the vote and removes the keyboard for that user, while still showing the keyboard with poll options to users who haven't voted yet
	*/
}

func (*ReplyKeyboardHide) CRC() uint32 {
	return 0xa03e5b85
}

func (*ReplyKeyboardHide) FlagIndex() int {
	return 0
}

func (*ReplyKeyboardHide) ImplementsReplyMarkup() {}

// Bot keyboard
type ReplyKeyboardMarkup struct {
	Resize    bool `tl:"flag:0,encoded_in_bitflags"` // Requests clients to resize the keyboard vertically for optimal fit (e.g., make the keyboard smaller if there are just two rows of buttons). If not set, the custom keyboard is always of the same height as the app's standard keyboard.
	SingleUse bool `tl:"flag:1,encoded_in_bitflags"` // Requests clients to hide the keyboard as soon as it's been used. The keyboard will still be available, but clients will automatically display the usual letter-keyboard in the chat – the user can press a special button in the input field to see the custom keyboard again.
	Selective bool `tl:"flag:2,encoded_in_bitflags"` /*
		Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply_to_message_id), sender of the original message.

		Example: A user requests to change the bot's language, bot replies to the request with a keyboard to select the new language. Other users in the group don't see the keyboard.
	*/
	Persistent  bool                 `tl:"flag:4,encoded_in_bitflags"` // Requests clients to always show the keyboard when the regular keyboard is hidden.
	Rows        []*KeyboardButtonRow // Button row
	Placeholder string               `tl:"flag:3"` // The placeholder to be shown in the input field when the keyboard is active; 1-64 characters.
}

func (*ReplyKeyboardMarkup) CRC() uint32 {
	return 0x85dd99d1
}

func (*ReplyKeyboardMarkup) FlagIndex() int {
	return 0
}

func (*ReplyKeyboardMarkup) ImplementsReplyMarkup() {}

type ReportResult interface {
	tl.Object
	ImplementsReportResult()
}

// The user should enter an additional comment for the moderators, and then messages.report must be re-invoked, passing the comment to messages.report.`message`.
type ReportResultAddComment struct {
	Optional bool   `tl:"flag:0,encoded_in_bitflags"` // Whether this step can be skipped by the user, passing an empty message to messages.report, or if a non-empty message is mandatory.
	Option   []byte // The messages.report method must be re-invoked, passing this option to option
}

func (*ReportResultAddComment) CRC() uint32 {
	return 0x6f09ac31
}

func (*ReportResultAddComment) FlagIndex() int {
	return 0
}

func (*ReportResultAddComment) ImplementsReportResult() {}

// The user must choose one of the following options, and then messages.report must be re-invoked, passing the option's `option` identifier to messages.report.`option`.
type ReportResultChooseOption struct {
	Title   string                 // Title of the option popup
	Options []*MessageReportOption // Available options, rendered as menu entries.
}

func (*ReportResultChooseOption) CRC() uint32 {
	return 0xf0e4e0b6
}

func (*ReportResultChooseOption) ImplementsReportResult() {}

// The report was sent successfully, no further actions are required.
type ReportResultReported struct{}

func (*ReportResultReported) CRC() uint32 {
	return 0x8db33c4b
}

func (*ReportResultReported) ImplementsReportResult() {}

type RequestPeerType interface {
	tl.Object
	ImplementsRequestPeerType()
}

// Choose a channel
type RequestPeerTypeBroadcast struct {
	Creator         bool             `tl:"flag:0,encoded_in_bitflags"` // Whether to allow only choosing channels that were created by the current user.
	UserAdminRights *ChatAdminRights `tl:"flag:1"`                     // If specified, allows only choosing channels with or without a username, according to the value of Bool.
	HasUsername     bool             `tl:"flag:3"`                     // If specified, allows only choosing channels where the current user is an admin with at least the specified admin rights.
	BotAdminRights  *ChatAdminRights `tl:"flag:2"`                     // If specified, allows only choosing channels where the bot is an admin with at least the specified admin rights.
}

func (*RequestPeerTypeBroadcast) CRC() uint32 {
	return 0x339bef6c
}

func (*RequestPeerTypeBroadcast) FlagIndex() int {
	return 0
}

func (*RequestPeerTypeBroadcast) ImplementsRequestPeerType() {}

// Choose a chat or supergroup
type RequestPeerTypeChat struct {
	Creator         bool             `tl:"flag:0,encoded_in_bitflags"` // Whether to allow only choosing chats or supergroups that were created by the current user.
	UserAdminRights *ChatAdminRights `tl:"flag:1"`                     // Whether to allow only choosing chats or supergroups where the bot is a participant.
	BotParticipant  bool             `tl:"flag:5,encoded_in_bitflags"` // If specified, allows only choosing channels with or without a username, according to the value of Bool.
	BotAdminRights  *ChatAdminRights `tl:"flag:2"`                     // If specified, allows only choosing chats or supergroups that are or aren't forums, according to the value of Bool.
	HasUsername     bool             `tl:"flag:3"`                     // If specified, allows only choosing chats or supergroups where the current user is an admin with at least the specified admin rights.
	Forum           bool             `tl:"flag:4"`                     // If specified, allows only choosing chats or supergroups where the bot is an admin with at least the specified admin rights.
}

func (*RequestPeerTypeChat) CRC() uint32 {
	return 0xc9f06e1b
}

func (*RequestPeerTypeChat) FlagIndex() int {
	return 0
}

func (*RequestPeerTypeChat) ImplementsRequestPeerType() {}

// Choose a user.
type RequestPeerTypeUser struct {
	Bot     bool `tl:"flag:0"` // Whether to allow choosing only bots.
	Premium bool `tl:"flag:1"` // Whether to allow choosing only Premium users.
}

func (*RequestPeerTypeUser) CRC() uint32 {
	return 0x5f3b8a00
}

func (*RequestPeerTypeUser) FlagIndex() int {
	return 0
}

func (*RequestPeerTypeUser) ImplementsRequestPeerType() {}

type RequestedPeer interface {
	tl.Object
	ImplementsRequestedPeer()
}

// Info about a channel/supergroup, shared by a user with the currently logged in bot using messages.sendBotRequestedPeer.
type RequestedPeerChannel struct {
	ChannelID int64  // Channel/supergroup ID.
	Title     string `tl:"flag:0"` // Channel/supergroup title.
	Username  string `tl:"flag:1"` // Channel/supergroup username.
	Photo     Photo  `tl:"flag:2"` // Channel/supergroup photo.
}

func (*RequestedPeerChannel) CRC() uint32 {
	return 0x8ba403e4
}

func (*RequestedPeerChannel) FlagIndex() int {
	return 0
}

func (*RequestedPeerChannel) ImplementsRequestedPeer() {}

// Info about a chat, shared by a user with the currently logged in bot using messages.sendBotRequestedPeer.
type RequestedPeerChat struct {
	ChatID int64  // Chat ID.
	Title  string `tl:"flag:0"` // Chat title.
	Photo  Photo  `tl:"flag:2"` // Chat photo.
}

func (*RequestedPeerChat) CRC() uint32 {
	return 0x7307544f
}

func (*RequestedPeerChat) FlagIndex() int {
	return 0
}

func (*RequestedPeerChat) ImplementsRequestedPeer() {}

// Info about a user, shared by a user with the currently logged in bot using messages.sendBotRequestedPeer.
type RequestedPeerUser struct {
	UserID    int64  // User ID.
	FirstName string `tl:"flag:0"` // First name.
	LastName  string `tl:"flag:0"` // Last name.
	Username  string `tl:"flag:1"` // Username.
	Photo     Photo  `tl:"flag:2"` // Profile photo.
}

func (*RequestedPeerUser) CRC() uint32 {
	return 0xd62ff46a
}

func (*RequestedPeerUser) FlagIndex() int {
	return 0
}

func (*RequestedPeerUser) ImplementsRequestedPeer() {}

type RequirementToContact interface {
	tl.Object
	ImplementsRequirementToContact()
}

// This user can be freely contacted.
type RequirementToContactEmpty struct{}

func (*RequirementToContactEmpty) CRC() uint32 {
	return 0x50a9839
}

func (*RequirementToContactEmpty) ImplementsRequirementToContact() {}

// This user requires us to pay the specified amount of Telegram Stars to send them a message, see here » for the full flow.
type RequirementToContactPaidMessages struct {
	StarsAmount int64 // The required amount of Telegram Stars.
}

func (*RequirementToContactPaidMessages) CRC() uint32 {
	return 0xb4f67e93
}

func (*RequirementToContactPaidMessages) ImplementsRequirementToContact() {}

// This user requires us to buy a Premium subscription in order to contact them.
type RequirementToContactPremium struct{}

func (*RequirementToContactPremium) CRC() uint32 {
	return 0xe581e4e9
}

func (*RequirementToContactPremium) ImplementsRequirementToContact() {}

type RichText interface {
	tl.Object
	ImplementsRichText()
}

// Text linking to another section of the page
type TextAnchor struct {
	Text RichText // Text
	Name string   // Section name
}

func (*TextAnchor) CRC() uint32 {
	return 0x35553762
}

func (*TextAnchor) ImplementsRichText() {}

// <strong>Bold</strong> text
type TextBold struct {
	Text RichText // Text
}

func (*TextBold) CRC() uint32 {
	return 0x6724abc4
}

func (*TextBold) ImplementsRichText() {}

// Concatenation of rich texts
type TextConcat struct {
	Texts []RichText // Concatenated rich texts
}

func (*TextConcat) CRC() uint32 {
	return 0x7e6260d7
}

func (*TextConcat) ImplementsRichText() {}

// Rich text email link
type TextEmail struct {
	Text  RichText // Link text
	Email string   // Email address
}

func (*TextEmail) CRC() uint32 {
	return 0xde5a0dd6
}

func (*TextEmail) ImplementsRichText() {}

// Empty rich text element
type TextEmpty struct{}

func (*TextEmpty) CRC() uint32 {
	return 0xdc3d824f
}

func (*TextEmpty) ImplementsRichText() {}

// `fixed-width` rich text
type TextFixed struct {
	Text RichText // Text
}

func (*TextFixed) CRC() uint32 {
	return 0x6c3f19b9
}

func (*TextFixed) ImplementsRichText() {}

// Inline image
type TextImage struct {
	DocumentID int64 // Document ID
	W          int32 // Width
	H          int32 // Height
}

func (*TextImage) CRC() uint32 {
	return 0x81ccf4f
}

func (*TextImage) ImplementsRichText() {}

// <em>Italic</em> text
type TextItalic struct {
	Text RichText // Text
}

func (*TextItalic) CRC() uint32 {
	return 0xd912a59c
}

func (*TextItalic) ImplementsRichText() {}

// Highlighted text
type TextMarked struct {
	Text RichText // Text
}

func (*TextMarked) CRC() uint32 {
	return 0x34b8621
}

func (*TextMarked) ImplementsRichText() {}

// Rich text linked to a phone number
type TextPhone struct {
	Text  RichText // Text
	Phone string   // Phone number
}

func (*TextPhone) CRC() uint32 {
	return 0x1ccb966a
}

func (*TextPhone) ImplementsRichText() {}

// Plain text
type TextPlain struct {
	Text string // Text
}

func (*TextPlain) CRC() uint32 {
	return 0x744694e0
}

func (*TextPlain) ImplementsRichText() {}

// <del>Strikethrough</del> text
type TextStrike struct {
	Text RichText // Text
}

func (*TextStrike) CRC() uint32 {
	return 0x9bf8bb95
}

func (*TextStrike) ImplementsRichText() {}

// Subscript text
type TextSubscript struct {
	Text RichText // Text
}

func (*TextSubscript) CRC() uint32 {
	return 0xed6a8504
}

func (*TextSubscript) ImplementsRichText() {}

// Superscript text
type TextSuperscript struct {
	Text RichText // Text
}

func (*TextSuperscript) CRC() uint32 {
	return 0xc7fb5e01
}

func (*TextSuperscript) ImplementsRichText() {}

// Underlined text
type TextUnderline struct {
	Text RichText // Text
}

func (*TextUnderline) CRC() uint32 {
	return 0xc12622c4
}

func (*TextUnderline) ImplementsRichText() {}

// Link
type TextURL struct {
	Text      RichText // Text of link
	URL       string   // Webpage HTTP URL
	WebpageID int64    // If a preview was already generated for the page, the page ID
}

func (*TextURL) CRC() uint32 {
	return 0x3c2884c1
}

func (*TextURL) ImplementsRichText() {}

type SavedDialog interface {
	tl.Object
	ImplementsSavedDialog()
}

// Represents a monoforum topic ».
type MonoForumDialog struct {
	UnreadMark              bool         `tl:"flag:3,encoded_in_bitflags"` // Whether this topic has a manually set (with messages.markDialogUnread) unread mark.
	NopaidMessagesException bool         `tl:"flag:4,encoded_in_bitflags"` // If set, an admin has exempted this peer from payment to send messages using account.toggleNoPaidMessagesException.
	Peer                    Peer         // The peer associated to the topic, AKA the topic ID.
	TopMessage              int32        // The latest message ID
	ReadInboxMaxID          int32        // Position up to which all incoming messages are read.
	ReadOutboxMaxID         int32        // Position up to which all outgoing messages are read.
	UnreadCount             int32        // Number of unread messages.
	UnreadReactionsCount    int32        // Number of unread reactions.
	Draft                   DraftMessage `tl:"flag:1"` // A pending message draft.
}

func (*MonoForumDialog) CRC() uint32 {
	return 0x64407ea7
}

func (*MonoForumDialog) FlagIndex() int {
	return 0
}

func (*MonoForumDialog) ImplementsSavedDialog() {}

// Represents a saved dialog ».
type SavedDialogObj struct {
	Pinned     bool  `tl:"flag:2,encoded_in_bitflags"` // Is the dialog pinned
	Peer       Peer  // The dialog
	TopMessage int32 // The latest message ID
}

func (*SavedDialogObj) CRC() uint32 {
	return 0xbd87cb6c
}

func (*SavedDialogObj) FlagIndex() int {
	return 0
}

func (*SavedDialogObj) ImplementsSavedDialog() {}

type SecureFile interface {
	tl.Object
	ImplementsSecureFile()
}

// Secure passport file, for more info see the passport docs »
type SecureFileObj struct {
	ID         int64  // ID
	AccessHash int64  // Access hash
	Size       int64  // File size
	DcID       int32  // DC ID
	Date       int32  // Date of upload
	FileHash   []byte // File hash
	Secret     []byte // Secret
}

func (*SecureFileObj) CRC() uint32 {
	return 0x7d09c27e
}

func (*SecureFileObj) ImplementsSecureFile() {}

// Empty constructor
type SecureFileEmpty struct{}

func (*SecureFileEmpty) CRC() uint32 {
	return 0x64199744
}

func (*SecureFileEmpty) ImplementsSecureFile() {}

type SecurePasswordKdfAlgo interface {
	tl.Object
	ImplementsSecurePasswordKdfAlgo()
}

// PBKDF2 with SHA512 and 100000 iterations KDF algo
type SecurePasswordKdfAlgoPbkdf2Hmacsha512Iter100000 struct {
	Salt []byte // Salt
}

func (*SecurePasswordKdfAlgoPbkdf2Hmacsha512Iter100000) CRC() uint32 {
	return 0xbbf2dda0
}

func (*SecurePasswordKdfAlgoPbkdf2Hmacsha512Iter100000) ImplementsSecurePasswordKdfAlgo() {}

// SHA512 KDF algo
type SecurePasswordKdfAlgoSHA512 struct {
	Salt []byte // Salt
}

func (*SecurePasswordKdfAlgoSHA512) CRC() uint32 {
	return 0x86471d92
}

func (*SecurePasswordKdfAlgoSHA512) ImplementsSecurePasswordKdfAlgo() {}

// Unknown KDF algo (most likely the client has to be updated)
type SecurePasswordKdfAlgoUnknown struct{}

func (*SecurePasswordKdfAlgoUnknown) CRC() uint32 {
	return 0x4a8537
}

func (*SecurePasswordKdfAlgoUnknown) ImplementsSecurePasswordKdfAlgo() {}

type SecurePlainData interface {
	tl.Object
	ImplementsSecurePlainData()
}

// Email address to use in telegram passport: it must be verified, first ».
type SecurePlainEmail struct {
	Email string // Email address
}

func (*SecurePlainEmail) CRC() uint32 {
	return 0x21ec5a5f
}

func (*SecurePlainEmail) ImplementsSecurePlainData() {}

// Phone number to use in telegram passport: it must be verified, first ».
type SecurePlainPhone struct {
	Phone string // Phone number
}

func (*SecurePlainPhone) CRC() uint32 {
	return 0x7d6099dd
}

func (*SecurePlainPhone) ImplementsSecurePlainData() {}

type SecureRequiredType interface {
	tl.Object
	ImplementsSecureRequiredType()
}

// Required type
type SecureRequiredTypeObj struct {
	NativeNames         bool            `tl:"flag:0,encoded_in_bitflags"` // Native names
	SelfieRequired      bool            `tl:"flag:1,encoded_in_bitflags"` // Is a selfie required
	TranslationRequired bool            `tl:"flag:2,encoded_in_bitflags"` // Is a translation required
	Type                SecureValueType // Secure value type
}

func (*SecureRequiredTypeObj) CRC() uint32 {
	return 0x829d99da
}

func (*SecureRequiredTypeObj) FlagIndex() int {
	return 0
}

func (*SecureRequiredTypeObj) ImplementsSecureRequiredType() {}

// One of
type SecureRequiredTypeOneOf struct {
	Types []SecureRequiredType // Secure required value types
}

func (*SecureRequiredTypeOneOf) CRC() uint32 {
	return 0x27477b4
}

func (*SecureRequiredTypeOneOf) ImplementsSecureRequiredType() {}

type SecureValueError interface {
	tl.Object
	ImplementsSecureValueError()
}

// Secure value error
type SecureValueErrorObj struct {
	Type SecureValueType // Type of element which has the issue
	Hash []byte          // Hash
	Text string          // Error message
}

func (*SecureValueErrorObj) CRC() uint32 {
	return 0x869d758f
}

func (*SecureValueErrorObj) ImplementsSecureValueError() {}

// Represents an issue in one of the data fields that was provided by the user. The error is considered resolved when the field's value changes.
type SecureValueErrorData struct {
	Type     SecureValueType // The section of the user's Telegram Passport which has the error, one of secureValueTypePersonalDetails, secureValueTypePassport, secureValueTypeDriverLicense, secureValueTypeIdentityCard, secureValueTypeInternalPassport, secureValueTypeAddress
	DataHash []byte          // Data hash
	Field    string          // Name of the data field which has the error
	Text     string          // Error message
}

func (*SecureValueErrorData) CRC() uint32 {
	return 0xe8a40bd9
}

func (*SecureValueErrorData) ImplementsSecureValueError() {}

// Represents an issue with a document scan. The error is considered resolved when the file with the document scan changes.
type SecureValueErrorFile struct {
	Type     SecureValueType // One of secureValueTypeUtilityBill, secureValueTypeBankStatement, secureValueTypeRentalAgreement, secureValueTypePassportRegistration, secureValueTypeTemporaryRegistration
	FileHash []byte          // File hash
	Text     string          // Error message
}

func (*SecureValueErrorFile) CRC() uint32 {
	return 0x7a700873
}

func (*SecureValueErrorFile) ImplementsSecureValueError() {}

// Represents an issue with a list of scans. The error is considered resolved when the list of files containing the scans changes.
type SecureValueErrorFiles struct {
	Type     SecureValueType // One of secureValueTypeUtilityBill, secureValueTypeBankStatement, secureValueTypeRentalAgreement, secureValueTypePassportRegistration, secureValueTypeTemporaryRegistration
	FileHash [][]byte        // File hash
	Text     string          // Error message
}

func (*SecureValueErrorFiles) CRC() uint32 {
	return 0x666220e9
}

func (*SecureValueErrorFiles) ImplementsSecureValueError() {}

// Represents an issue with the front side of a document. The error is considered resolved when the file with the front side of the document changes.
type SecureValueErrorFrontSide struct {
	Type     SecureValueType // One of secureValueTypePassport, secureValueTypeDriverLicense, secureValueTypeIdentityCard, secureValueTypeInternalPassport
	FileHash []byte          // File hash
	Text     string          // Error message
}

func (*SecureValueErrorFrontSide) CRC() uint32 {
	return 0xbe3dfa
}

func (*SecureValueErrorFrontSide) ImplementsSecureValueError() {}

// Represents an issue with the reverse side of a document. The error is considered resolved when the file with reverse side of the document changes.
type SecureValueErrorReverseSide struct {
	Type     SecureValueType // One of secureValueTypeDriverLicense, secureValueTypeIdentityCard
	FileHash []byte          // File hash
	Text     string          // Error message
}

func (*SecureValueErrorReverseSide) CRC() uint32 {
	return 0x868a2aa5
}

func (*SecureValueErrorReverseSide) ImplementsSecureValueError() {}

// Represents an issue with the selfie with a document. The error is considered resolved when the file with the selfie changes.
type SecureValueErrorSelfie struct {
	Type     SecureValueType // One of secureValueTypePassport, secureValueTypeDriverLicense, secureValueTypeIdentityCard, secureValueTypeInternalPassport
	FileHash []byte          // File hash
	Text     string          // Error message
}

func (*SecureValueErrorSelfie) CRC() uint32 {
	return 0xe537ced6
}

func (*SecureValueErrorSelfie) ImplementsSecureValueError() {}

// Represents an issue with one of the files that constitute the translation of a document. The error is considered resolved when the file changes.
type SecureValueErrorTranslationFile struct {
	Type     SecureValueType // One of secureValueTypePersonalDetails, secureValueTypePassport, secureValueTypeDriverLicense, secureValueTypeIdentityCard, secureValueTypeInternalPassport, secureValueTypeUtilityBill, secureValueTypeBankStatement, secureValueTypeRentalAgreement, secureValueTypePassportRegistration, secureValueTypeTemporaryRegistration
	FileHash []byte          // File hash
	Text     string          // Error message
}

func (*SecureValueErrorTranslationFile) CRC() uint32 {
	return 0xa1144770
}

func (*SecureValueErrorTranslationFile) ImplementsSecureValueError() {}

// Represents an issue with the translated version of a document. The error is considered resolved when a file with the document translation changes.
type SecureValueErrorTranslationFiles struct {
	Type     SecureValueType // One of secureValueTypePersonalDetails, secureValueTypePassport, secureValueTypeDriverLicense, secureValueTypeIdentityCard, secureValueTypeInternalPassport, secureValueTypeUtilityBill, secureValueTypeBankStatement, secureValueTypeRentalAgreement, secureValueTypePassportRegistration, secureValueTypeTemporaryRegistration
	FileHash [][]byte        // Hash
	Text     string          // Error message
}

func (*SecureValueErrorTranslationFiles) CRC() uint32 {
	return 0x34636dd8
}

func (*SecureValueErrorTranslationFiles) ImplementsSecureValueError() {}

type SendMessageAction interface {
	tl.Object
	ImplementsSendMessageAction()
}

// Invalidate all previous action updates. E.g. when user deletes entered text or aborts a video upload.
type SendMessageCancelAction struct{}

func (*SendMessageCancelAction) CRC() uint32 {
	return 0xfd5ec8f5
}

func (*SendMessageCancelAction) ImplementsSendMessageAction() {}

// User is selecting a contact to share.
type SendMessageChooseContactAction struct{}

func (*SendMessageChooseContactAction) CRC() uint32 {
	return 0x628cbc6f
}

func (*SendMessageChooseContactAction) ImplementsSendMessageAction() {}

// User is choosing a sticker
type SendMessageChooseStickerAction struct{}

func (*SendMessageChooseStickerAction) CRC() uint32 {
	return 0xb05ac6b1
}

func (*SendMessageChooseStickerAction) ImplementsSendMessageAction() {}

// User has clicked on an animated emoji triggering a reaction, click here for more info ».
type SendMessageEmojiInteraction struct {
	Emoticon    string    // Emoji
	MsgID       int32     // Message ID of the animated emoji that was clicked
	Interaction *DataJson // A JSON object with interaction info, click here for more info
}

func (*SendMessageEmojiInteraction) CRC() uint32 {
	return 0x25972bcb
}

func (*SendMessageEmojiInteraction) ImplementsSendMessageAction() {}

// User is watching an animated emoji reaction triggered by another user, click here for more info ».
type SendMessageEmojiInteractionSeen struct {
	Emoticon string // Emoji
}

func (*SendMessageEmojiInteractionSeen) CRC() uint32 {
	return 0xb665902e
}

func (*SendMessageEmojiInteractionSeen) ImplementsSendMessageAction() {}

// User is playing a game
type SendMessageGamePlayAction struct{}

func (*SendMessageGamePlayAction) CRC() uint32 {
	return 0xdd6a8f48
}

func (*SendMessageGamePlayAction) ImplementsSendMessageAction() {}

// User is selecting a location to share.
type SendMessageGeoLocationAction struct{}

func (*SendMessageGeoLocationAction) CRC() uint32 {
	return 0x176f8ba1
}

func (*SendMessageGeoLocationAction) ImplementsSendMessageAction() {}

// Chat history is being imported
type SendMessageHistoryImportAction struct {
	Progress int32 // Progress percentage
}

func (*SendMessageHistoryImportAction) CRC() uint32 {
	return 0xdbda9246
}

func (*SendMessageHistoryImportAction) ImplementsSendMessageAction() {}

// User is recording a voice message.
type SendMessageRecordAudioAction struct{}

func (*SendMessageRecordAudioAction) CRC() uint32 {
	return 0xd52f73f7
}

func (*SendMessageRecordAudioAction) ImplementsSendMessageAction() {}

// User is recording a round video to share
type SendMessageRecordRoundAction struct{}

func (*SendMessageRecordRoundAction) CRC() uint32 {
	return 0x88f27fbc
}

func (*SendMessageRecordRoundAction) ImplementsSendMessageAction() {}

// User is recording a video.
type SendMessageRecordVideoAction struct{}

func (*SendMessageRecordVideoAction) CRC() uint32 {
	return 0xa187d66f
}

func (*SendMessageRecordVideoAction) ImplementsSendMessageAction() {}

type SendMessageTextDraftAction struct {
	RandomID int64
	Text     *TextWithEntities
}

func (*SendMessageTextDraftAction) CRC() uint32 {
	return 0x376d975c
}

func (*SendMessageTextDraftAction) ImplementsSendMessageAction() {}

// User is typing.
type SendMessageTypingAction struct{}

func (*SendMessageTypingAction) CRC() uint32 {
	return 0x16bf744e
}

func (*SendMessageTypingAction) ImplementsSendMessageAction() {}

// User is uploading a voice message.
type SendMessageUploadAudioAction struct {
	Progress int32 // Progress percentage
}

func (*SendMessageUploadAudioAction) CRC() uint32 {
	return 0xf351d7ab
}

func (*SendMessageUploadAudioAction) ImplementsSendMessageAction() {}

// User is uploading a file.
type SendMessageUploadDocumentAction struct {
	Progress int32 // Progress percentage
}

func (*SendMessageUploadDocumentAction) CRC() uint32 {
	return 0xaa0cd9e4
}

func (*SendMessageUploadDocumentAction) ImplementsSendMessageAction() {}

// User is uploading a photo.
type SendMessageUploadPhotoAction struct {
	Progress int32 // Progress percentage
}

func (*SendMessageUploadPhotoAction) CRC() uint32 {
	return 0xd1d34a26
}

func (*SendMessageUploadPhotoAction) ImplementsSendMessageAction() {}

// User is uploading a round video
type SendMessageUploadRoundAction struct {
	Progress int32 // Progress percentage
}

func (*SendMessageUploadRoundAction) CRC() uint32 {
	return 0x243e1c66
}

func (*SendMessageUploadRoundAction) ImplementsSendMessageAction() {}

// User is uploading a video.
type SendMessageUploadVideoAction struct {
	Progress int32 // Progress percentage
}

func (*SendMessageUploadVideoAction) CRC() uint32 {
	return 0xe9763aec
}

func (*SendMessageUploadVideoAction) ImplementsSendMessageAction() {}

// User is currently speaking in the group call
type SpeakingInGroupCallAction struct{}

func (*SpeakingInGroupCallAction) CRC() uint32 {
	return 0xd92c2285
}

func (*SpeakingInGroupCallAction) ImplementsSendMessageAction() {}

type StarGift interface {
	tl.Object
	ImplementsStarGift()
}

// Represents a star gift, see here » for more info.
type StarGiftObj struct {
	Limited             bool `tl:"flag:0,encoded_in_bitflags"`
	SoldOut             bool `tl:"flag:1,encoded_in_bitflags"`
	Birthday            bool `tl:"flag:2,encoded_in_bitflags"`
	CanUpgrade          bool `tl:"flag:3,encoded_in_bitflags"`
	RequirePremium      bool `tl:"flag:7,encoded_in_bitflags"`
	LimitedPerUser      bool `tl:"flag:8,encoded_in_bitflags"`
	PeerColorAvailable  bool `tl:"flag:10,encoded_in_bitflags"`
	ID                  int64
	Sticker             Document
	Stars               int64
	AvailabilityRemains int32 `tl:"flag:0"`
	AvailabilityTotal   int32 `tl:"flag:0"`
	AvailabilityResale  int64 `tl:"flag:4"`
	ConvertStars        int64
	FirstSaleDate       int32  `tl:"flag:1"`
	LastSaleDate        int32  `tl:"flag:1"`
	UpgradeStars        int64  `tl:"flag:3"`
	ResellMinStars      int64  `tl:"flag:4"`
	Title               string `tl:"flag:5"`
	ReleasedBy          Peer   `tl:"flag:6"`
	PerUserTotal        int32  `tl:"flag:8"`
	PerUserRemains      int32  `tl:"flag:8"`
	LockedUntilDate     int32  `tl:"flag:9"`
}

func (*StarGiftObj) CRC() uint32 {
	return 0x80ac53c3
}

func (*StarGiftObj) FlagIndex() int {
	return 0
}

func (*StarGiftObj) ImplementsStarGift() {}

// Represents a collectible star gift, see here » for more info.
type StarGiftUnique struct {
	RequirePremium     bool `tl:"flag:6,encoded_in_bitflags"`
	ResaleTonOnly      bool `tl:"flag:7,encoded_in_bitflags"`
	ThemeAvailable     bool `tl:"flag:9,encoded_in_bitflags"`
	ID                 int64
	GiftID             int64
	Title              string
	Slug               string
	Num                int32
	OwnerID            Peer   `tl:"flag:0"`
	OwnerName          string `tl:"flag:1"`
	OwnerAddress       string `tl:"flag:2"`
	Attributes         []StarGiftAttribute
	AvailabilityIssued int32
	AvailabilityTotal  int32
	GiftAddress        string        `tl:"flag:3"`
	ResellAmount       []StarsAmount `tl:"flag:4"`
	ReleasedBy         Peer          `tl:"flag:5"`
	ValueAmount        int64         `tl:"flag:8"`
	ValueCurrency      string        `tl:"flag:8"`
	ThemePeer          Peer          `tl:"flag:10"`
	PeerColor          PeerColor     `tl:"flag:11"`
	HostID             Peer          `tl:"flag:12"`
}

func (*StarGiftUnique) CRC() uint32 {
	return 0xb0bf741b
}

func (*StarGiftUnique) FlagIndex() int {
	return 0
}

func (*StarGiftUnique) ImplementsStarGift() {}

type StarGiftAttribute interface {
	tl.Object
	ImplementsStarGiftAttribute()
}

// The backdrop of a collectible gift ».
type StarGiftAttributeBackdrop struct {
	Name           string // Name of the backdrop
	BackdropID     int32  // Unique ID of the backdrop
	CenterColor    int32  // Color of the center of the backdrop in RGB24 format.
	EdgeColor      int32  // Color of the edges of the backdrop in RGB24 format.
	PatternColor   int32  // Color of the starGiftAttributePattern applied on the backdrop in RGB24 format.
	TextColor      int32  // Color of the text on the backdrop in RGB24 format.
	RarityPermille int32  // The number of upgraded gifts that receive this backdrop for each 1000 gifts upgraded.
}

func (*StarGiftAttributeBackdrop) CRC() uint32 {
	return 0xd93d859c
}

func (*StarGiftAttributeBackdrop) ImplementsStarGiftAttribute() {}

// The model of a collectible gift ».
type StarGiftAttributeModel struct {
	Name           string   // Name of the model
	Document       Document // The sticker representing the upgraded gift
	RarityPermille int32    // The number of upgraded gifts that receive this backdrop for each 1000 gifts upgraded.
}

func (*StarGiftAttributeModel) CRC() uint32 {
	return 0x39d99013
}

func (*StarGiftAttributeModel) ImplementsStarGiftAttribute() {}

// Info about the sender, receiver and message attached to the original gift », before it was upgraded to a collectible gift ».
type StarGiftAttributeOriginalDetails struct {
	SenderID    Peer              `tl:"flag:0"` // Original sender of the gift, absent if the gift was private.
	RecipientID Peer              // Original receiver of the gift.
	Date        int32             // When was the gift sent.
	Message     *TextWithEntities `tl:"flag:1"` // Original message attached to the gift, if present.
}

func (*StarGiftAttributeOriginalDetails) CRC() uint32 {
	return 0xe0bff26c
}

func (*StarGiftAttributeOriginalDetails) FlagIndex() int {
	return 0
}

func (*StarGiftAttributeOriginalDetails) ImplementsStarGiftAttribute() {}

// A sticker applied on the backdrop of a collectible gift » using a repeating pattern.
type StarGiftAttributePattern struct {
	Name           string   // Name of the symbol
	Document       Document // The symbol
	RarityPermille int32    // The number of upgraded gifts that receive this backdrop for each 1000 gifts upgraded.
}

func (*StarGiftAttributePattern) CRC() uint32 {
	return 0x13acff19
}

func (*StarGiftAttributePattern) ImplementsStarGiftAttribute() {}

type StarGiftAttributeID interface {
	tl.Object
	ImplementsStarGiftAttributeID()
}

// The ID of a backdrop of a collectible gift ».
type StarGiftAttributeIDBackdrop struct {
	BackdropID int32 // Unique ID of the backdrop.
}

func (*StarGiftAttributeIDBackdrop) CRC() uint32 {
	return 0x1f01c757
}

func (*StarGiftAttributeIDBackdrop) ImplementsStarGiftAttributeID() {}

// The ID of a model of a collectible gift ».
type StarGiftAttributeIDModel struct {
	DocumentID int64 // The sticker representing the upgraded gift
}

func (*StarGiftAttributeIDModel) CRC() uint32 {
	return 0x48aaae3c
}

func (*StarGiftAttributeIDModel) ImplementsStarGiftAttributeID() {}

// The ID of a pattern of a collectible gift ».
type StarGiftAttributeIDPattern struct {
	DocumentID int64 // The sticker representing the symbol
}

func (*StarGiftAttributeIDPattern) CRC() uint32 {
	return 0x4a162433
}

func (*StarGiftAttributeIDPattern) ImplementsStarGiftAttributeID() {}

type StarsAmount interface {
	tl.Object
	ImplementsStarsAmount()
}

// Describes a real (i.e. possibly decimal) amount of Telegram Stars.
type StarsAmountObj struct {
	Amount int64 // The integer amount of Telegram Stars.
	Nanos  int32 /*
		The decimal amount of Telegram Stars, expressed as nanostars (i.e. 1 nanostar is equal to 1/1'000'000'000th (one billionth) of a Telegram Star).
		This field may also be negative (the allowed range is -999999999 to 999999999).
	*/
}

func (*StarsAmountObj) CRC() uint32 {
	return 0xbbb6b4a3
}

func (*StarsAmountObj) ImplementsStarsAmount() {}

// Describes an amount of toncoin in nanotons (i.e. `1/1_000_000_000` of a toncoin).
type StarsTonAmount struct {
	Amount int64 // The amount in nanotons.
}

func (*StarsTonAmount) CRC() uint32 {
	return 0x74aee3e0
}

func (*StarsTonAmount) ImplementsStarsAmount() {}

type StarsTransactionPeer interface {
	tl.Object
	ImplementsStarsTransactionPeer()
}

// Describes a Telegram Star transaction with another peer.
type StarsTransactionPeerObj struct {
	Peer Peer // The peer.
}

func (*StarsTransactionPeerObj) CRC() uint32 {
	return 0xd80da15d
}

func (*StarsTransactionPeerObj) ImplementsStarsTransactionPeer() {}

// Describes a Telegram Star transaction used to pay for paid API usage, such as paid bot broadcasts.
type StarsTransactionPeerAPI struct{}

func (*StarsTransactionPeerAPI) CRC() uint32 {
	return 0xf9677aad
}

func (*StarsTransactionPeerAPI) ImplementsStarsTransactionPeer() {}

// Describes a Telegram Star transaction used to pay for Telegram ads as specified here ».
type StarsTransactionPeerAds struct{}

func (*StarsTransactionPeerAds) CRC() uint32 {
	return 0x60682812
}

func (*StarsTransactionPeerAds) ImplementsStarsTransactionPeer() {}

// Describes a Telegram Star transaction with the App Store, used when purchasing Telegram Stars through the App Store.
type StarsTransactionPeerAppStore struct{}

func (*StarsTransactionPeerAppStore) CRC() uint32 {
	return 0xb457b375
}

func (*StarsTransactionPeerAppStore) ImplementsStarsTransactionPeer() {}

// Describes a Telegram Star transaction with Fragment, used when purchasing Telegram Stars through Fragment.
type StarsTransactionPeerFragment struct{}

func (*StarsTransactionPeerFragment) CRC() uint32 {
	return 0xe92fd902
}

func (*StarsTransactionPeerFragment) ImplementsStarsTransactionPeer() {}

// Describes a Telegram Star transaction with the Play Store, used when purchasing Telegram Stars through the Play Store.
type StarsTransactionPeerPlayMarket struct{}

func (*StarsTransactionPeerPlayMarket) CRC() uint32 {
	return 0x7b560a0b
}

func (*StarsTransactionPeerPlayMarket) ImplementsStarsTransactionPeer() {}

// Describes a Telegram Star transaction made using @PremiumBot (i.e. using the inputInvoiceStars flow described here »).
type StarsTransactionPeerPremiumBot struct{}

func (*StarsTransactionPeerPremiumBot) CRC() uint32 {
	return 0x250dbaf8
}

func (*StarsTransactionPeerPremiumBot) ImplementsStarsTransactionPeer() {}

// Describes a Telegram Star transaction that cannot be described using the current layer.
type StarsTransactionPeerUnsupported struct{}

func (*StarsTransactionPeerUnsupported) CRC() uint32 {
	return 0x95f2bfe4
}

func (*StarsTransactionPeerUnsupported) ImplementsStarsTransactionPeer() {}

type StatsGraph interface {
	tl.Object
	ImplementsStatsGraph()
}

// Channel statistics graph
type StatsGraphObj struct {
	Json      *DataJson // Statistics data
	ZoomToken string    `tl:"flag:0"` // Zoom token
}

func (*StatsGraphObj) CRC() uint32 {
	return 0x8ea464b6
}

func (*StatsGraphObj) FlagIndex() int {
	return 0
}

func (*StatsGraphObj) ImplementsStatsGraph() {}

// This channel statistics graph must be generated asynchronously using stats.loadAsyncGraph to reduce server load
type StatsGraphAsync struct {
	Token string // Token to use for fetching the async graph
}

func (*StatsGraphAsync) CRC() uint32 {
	return 0x4a27eb2d
}

func (*StatsGraphAsync) ImplementsStatsGraph() {}

// An error occurred while generating the statistics graph
type StatsGraphError struct {
	Error string // The error
}

func (*StatsGraphError) CRC() uint32 {
	return 0xbedc9822
}

func (*StatsGraphError) ImplementsStatsGraph() {}

type StickerSetCovered interface {
	tl.Object
	ImplementsStickerSetCovered()
}

// Stickerset with a single sticker as preview
type StickerSetCoveredObj struct {
	Set   *StickerSet // Stickerset
	Cover Document    // Preview
}

func (*StickerSetCoveredObj) CRC() uint32 {
	return 0x6410a5d2
}

func (*StickerSetCoveredObj) ImplementsStickerSetCovered() {}

/*
Stickerset preview with all stickers of the stickerset included.<br>
Currently used only for custom emoji stickersets, to avoid a further call to messages.getStickerSet.
*/
type StickerSetFullCovered struct {
	Set       *StickerSet       // Stickerset
	Packs     []*StickerPack    // Emoji information about every sticker in the stickerset
	Keywords  []*StickerKeyword // Keywords for some or every sticker in the stickerset.
	Documents []Document        // Stickers
}

func (*StickerSetFullCovered) CRC() uint32 {
	return 0x40d13c0e
}

func (*StickerSetFullCovered) ImplementsStickerSetCovered() {}

// Stickerset, with multiple stickers as preview
type StickerSetMultiCovered struct {
	Set    *StickerSet // Stickerset
	Covers []Document  // Preview stickers
}

func (*StickerSetMultiCovered) CRC() uint32 {
	return 0x3407e51b
}

func (*StickerSetMultiCovered) ImplementsStickerSetCovered() {}

// Just the stickerset information, with no previews.
type StickerSetNoCovered struct {
	Set *StickerSet // Stickerset information.
}

func (*StickerSetNoCovered) CRC() uint32 {
	return 0x77b15d1c
}

func (*StickerSetNoCovered) ImplementsStickerSetCovered() {}

type StoryItem interface {
	tl.Object
	ImplementsStoryItem()
}

// Represents a story.
type StoryItemObj struct {
	Pinned           bool            `tl:"flag:5,encoded_in_bitflags"`  // Whether this story is pinned on the user's profile
	Public           bool            `tl:"flag:7,encoded_in_bitflags"`  // Whether this story is public and can be viewed by everyone
	CloseFriends     bool            `tl:"flag:8,encoded_in_bitflags"`  // Whether this story can only be viewed by our close friends
	Min              bool            `tl:"flag:9,encoded_in_bitflags"`  // Full information about this story was omitted for space and performance reasons; use stories.getStoriesByID to fetch full info about this story when and if needed.
	Noforwards       bool            `tl:"flag:10,encoded_in_bitflags"` // Whether this story is protected and thus cannot be forwarded; clients should also prevent users from saving attached media (i.e. videos should only be streamed, photos should be kept in RAM, et cetera).
	Edited           bool            `tl:"flag:11,encoded_in_bitflags"` // Indicates whether the story was edited.
	Contacts         bool            `tl:"flag:12,encoded_in_bitflags"` // Whether this story can only be viewed by our contacts
	SelectedContacts bool            `tl:"flag:13,encoded_in_bitflags"` // Whether this story can only be viewed by a select list of our contacts
	Out              bool            `tl:"flag:16,encoded_in_bitflags"` // indicates whether we sent this story.
	ID               int32           // ID of the story.
	Date             int32           // When was the story posted.
	FromID           Peer            `tl:"flag:18"` // Sender of the story.
	FwdFrom          *StoryFwdHeader `tl:"flag:17"` // For reposted stories , contains info about the original story.
	ExpireDate       int32           // When does the story expire.
	Caption          string          `tl:"flag:0"` // Story caption.
	Entities         []MessageEntity `tl:"flag:1"` // Message entities for styled text
	Media            MessageMedia    // Story media.
	MediaAreas       []MediaArea     `tl:"flag:14"` // List of media areas,.
	Privacy          []PrivacyRule   `tl:"flag:2"`  // Privacy rules indicating who can and can't view this story
	Views            *StoryViews     `tl:"flag:3"`  // View date and reaction information
	SentReaction     Reaction        `tl:"flag:15"` // The reaction we sent.
	Albums           []int32         `tl:"flag:19"` // Albums this story is part of.
}

func (*StoryItemObj) CRC() uint32 {
	return 0xedf164f1
}

func (*StoryItemObj) FlagIndex() int {
	return 0
}

func (*StoryItemObj) ImplementsStoryItem() {}

// Represents a previously active story, that was deleted
type StoryItemDeleted struct {
	ID int32 // Story ID
}

func (*StoryItemDeleted) CRC() uint32 {
	return 0x51e6ee4f
}

func (*StoryItemDeleted) ImplementsStoryItem() {}

// Represents an active story, whose full information was omitted for space and performance reasons; use stories.getStoriesByID to fetch full info about the skipped story when and if needed.
type StoryItemSkipped struct {
	CloseFriends bool  `tl:"flag:8,encoded_in_bitflags"` // Whether this story can only be viewed by our close friends
	ID           int32 // Story ID
	Date         int32 // When was the story posted.
	ExpireDate   int32 // When does the story expire.
}

func (*StoryItemSkipped) CRC() uint32 {
	return 0xffadc913
}

func (*StoryItemSkipped) FlagIndex() int {
	return 0
}

func (*StoryItemSkipped) ImplementsStoryItem() {}

type StoryReaction interface {
	tl.Object
	ImplementsStoryReaction()
}

// How a certain peer reacted to a story
type StoryReactionObj struct {
	PeerID   Peer     // The peer
	Date     int32    // Reaction date
	Reaction Reaction // The reaction
}

func (*StoryReactionObj) CRC() uint32 {
	return 0x6090d6d5
}

func (*StoryReactionObj) ImplementsStoryReaction() {}

// A certain peer has forwarded the story as a message to a public chat or channel.
type StoryReactionPublicForward struct {
	Message Message // The message with the forwarded story.
}

func (*StoryReactionPublicForward) CRC() uint32 {
	return 0xbbab2643
}

func (*StoryReactionPublicForward) ImplementsStoryReaction() {}

// A certain peer has reposted the story.
type StoryReactionPublicRepost struct {
	PeerID Peer      // The peer that reposted the story.
	Story  StoryItem // The reposted story.
}

func (*StoryReactionPublicRepost) CRC() uint32 {
	return 0xcfcd0f13
}

func (*StoryReactionPublicRepost) ImplementsStoryReaction() {}

type StoryView interface {
	tl.Object
	ImplementsStoryView()
}

// Story view date and reaction information
type StoryViewObj struct {
	Blocked              bool     `tl:"flag:0,encoded_in_bitflags"` // Whether we have completely blocked this user, including from viewing more of our stories.
	BlockedMyStoriesFrom bool     `tl:"flag:1,encoded_in_bitflags"` // Whether we have blocked this user from viewing more of our stories.
	UserID               int64    // The user that viewed the story
	Date                 int32    // When did the user view the story
	Reaction             Reaction `tl:"flag:2"` // If present, contains the reaction that the user left on the story
}

func (*StoryViewObj) CRC() uint32 {
	return 0xb0bdeac5
}

func (*StoryViewObj) FlagIndex() int {
	return 0
}

func (*StoryViewObj) ImplementsStoryView() {}

// A certain peer has forwarded the story as a message to a public chat or channel.
type StoryViewPublicForward struct {
	Blocked              bool    `tl:"flag:0,encoded_in_bitflags"` // Whether we have completely blocked this user, including from viewing more of our stories.
	BlockedMyStoriesFrom bool    `tl:"flag:1,encoded_in_bitflags"` // Whether we have blocked this user from viewing more of our stories.
	Message              Message // The message with the forwarded story.
}

func (*StoryViewPublicForward) CRC() uint32 {
	return 0x9083670b
}

func (*StoryViewPublicForward) FlagIndex() int {
	return 0
}

func (*StoryViewPublicForward) ImplementsStoryView() {}

// A certain peer has reposted the story.
type StoryViewPublicRepost struct {
	Blocked              bool      `tl:"flag:0,encoded_in_bitflags"` // Whether we have completely blocked this user, including from viewing more of our stories.
	BlockedMyStoriesFrom bool      `tl:"flag:1,encoded_in_bitflags"` // Whether we have blocked this user from viewing more of our stories.
	PeerID               Peer      // The peer that reposted the story.
	Story                StoryItem // The reposted story.
}

func (*StoryViewPublicRepost) CRC() uint32 {
	return 0xbd74cf49
}

func (*StoryViewPublicRepost) FlagIndex() int {
	return 0
}

func (*StoryViewPublicRepost) ImplementsStoryView() {}

type Update interface {
	tl.Object
	ImplementsUpdate()
}

// The list of installed attachment menu entries » has changed, use messages.getAttachMenuBots to fetch the updated list.
type UpdateAttachMenuBots struct{}

func (*UpdateAttachMenuBots) CRC() uint32 {
	return 0x17b7a20b
}

func (*UpdateAttachMenuBots) ImplementsUpdate() {}

// Media autosave settings have changed and must be refetched using account.getAutoSaveSettings.
type UpdateAutoSaveSettings struct{}

func (*UpdateAutoSaveSettings) CRC() uint32 {
	return 0xec05b097
}

func (*UpdateAutoSaveSettings) ImplementsUpdate() {}

// Connecting or disconnecting a business bot or changing the connection settings will emit an updateBotBusinessConnect update to the bot, with the new settings and a `connection_id` that will be used by the bot to handle updates from and send messages as the user.
type UpdateBotBusinessConnect struct {
	Connection *BotBusinessConnection // Business connection settings
	Qts        int32                  // New qts value, see updates  for more info.
}

func (*UpdateBotBusinessConnect) CRC() uint32 {
	return 0x8ae5c97a
}

func (*UpdateBotBusinessConnect) ImplementsUpdate() {}

// A callback button was pressed, and the button data was sent to the bot that created the button
type UpdateBotCallbackQuery struct {
	QueryID       int64  // Query ID
	UserID        int64  // ID of the user that pressed the button
	Peer          Peer   // Chat where the inline keyboard was sent
	MsgID         int32  // Message ID
	ChatInstance  int64  // Global identifier, uniquely corresponding to the chat to which the message with the callback button was sent. Useful for high scores in games.
	Data          []byte `tl:"flag:0"` // Callback data
	GameShortName string `tl:"flag:1"` // Short name of a Game to be returned, serves as the unique identifier for the game
}

func (*UpdateBotCallbackQuery) CRC() uint32 {
	return 0xb9cfc48d
}

func (*UpdateBotCallbackQuery) FlagIndex() int {
	return 0
}

func (*UpdateBotCallbackQuery) ImplementsUpdate() {}

// A channel/supergroup boost has changed (bots only)
type UpdateBotChatBoost struct {
	Peer  Peer   // Channel
	Boost *Boost // New boost information
	Qts   int32  // QTS event sequence identifier
}

func (*UpdateBotChatBoost) CRC() uint32 {
	return 0x904dd49c
}

func (*UpdateBotChatBoost) ImplementsUpdate() {}

// Someone has requested to join a chat or channel (bots only, users will receive an updatePendingJoinRequests, instead)
type UpdateBotChatInviteRequester struct {
	Peer   Peer               // The chat or channel in question
	Date   int32              // When was the join request  made
	UserID int64              // The user ID that is asking to join the chat or channel
	About  string             // Bio of the user
	Invite ExportedChatInvite // Chat invite link that was used by the user to send the join request
	Qts    int32              // QTS event sequence identifier
}

func (*UpdateBotChatInviteRequester) CRC() uint32 {
	return 0x11dfa986
}

func (*UpdateBotChatInviteRequester) ImplementsUpdate() {}

// The command set of a certain bot in a certain chat has changed.
type UpdateBotCommands struct {
	Peer     Peer          // The affected chat
	BotID    int64         // ID of the bot that changed its command set
	Commands []*BotCommand // New bot commands
}

func (*UpdateBotCommands) CRC() uint32 {
	return 0x4d712f2e
}

func (*UpdateBotCommands) ImplementsUpdate() {}

// A message was deleted in a connected business chat ».
type UpdateBotDeleteBusinessMessage struct {
	ConnectionID string  // Business connection ID.
	Peer         Peer    // Peer where the messages were deleted.
	Messages     []int32 // IDs of the messages that were deleted.
	Qts          int32   // New qts value, see updates  for more info.
}

func (*UpdateBotDeleteBusinessMessage) CRC() uint32 {
	return 0xa02a982e
}

func (*UpdateBotDeleteBusinessMessage) ImplementsUpdate() {}

// A message was edited in a connected business chat ».
type UpdateBotEditBusinessMessage struct {
	ConnectionID   string  // Business connection ID
	Message        Message // New message.
	ReplyToMessage Message `tl:"flag:0"` // The message that message is replying to.
	Qts            int32   // New qts value, see updates  for more info.
}

func (*UpdateBotEditBusinessMessage) CRC() uint32 {
	return 0x7df587c
}

func (*UpdateBotEditBusinessMessage) FlagIndex() int {
	return 0
}

func (*UpdateBotEditBusinessMessage) ImplementsUpdate() {}

// An incoming inline query
type UpdateBotInlineQuery struct {
	QueryID  int64               // Query ID
	UserID   int64               // User that sent the query
	Query    string              // Text of query
	Geo      GeoPoint            `tl:"flag:0"` // Attached geolocation
	PeerType InlineQueryPeerType `tl:"flag:1"` // Type of the chat from which the inline query was sent.
	Offset   string              // Offset to navigate through results
}

func (*UpdateBotInlineQuery) CRC() uint32 {
	return 0x496f379c
}

func (*UpdateBotInlineQuery) FlagIndex() int {
	return 0
}

func (*UpdateBotInlineQuery) ImplementsUpdate() {}

// The result of an inline query that was chosen by a user and sent to their chat partner. Please see our documentation on the feedback collecting for details on how to enable these updates for your bot.
type UpdateBotInlineSend struct {
	UserID int64                   // The user that chose the result
	Query  string                  // The query that was used to obtain the result
	Geo    GeoPoint                `tl:"flag:0"` // Optional. Sender location, only for bots that require user location
	ID     string                  // The unique identifier for the result that was chosen
	MsgID  InputBotInlineMessageID `tl:"flag:1"` // Identifier of the sent inline message. Available only if there is an inline keyboard attached to the message. Will be also received in callback queries and can be used to edit the message.
}

func (*UpdateBotInlineSend) CRC() uint32 {
	return 0x12f12a07
}

func (*UpdateBotInlineSend) FlagIndex() int {
	return 0
}

func (*UpdateBotInlineSend) ImplementsUpdate() {}

// The menu button behavior for the specified bot has changed
type UpdateBotMenuButton struct {
	BotID  int64         // Bot ID
	Button BotMenuButton // New menu button
}

func (*UpdateBotMenuButton) CRC() uint32 {
	return 0x14b85813
}

func (*UpdateBotMenuButton) ImplementsUpdate() {}

// Bots only: a user has changed their reactions on a message with public reactions.
type UpdateBotMessageReaction struct {
	Peer         Peer       // Peer of the reacted-to message.
	MsgID        int32      // ID of the reacted-to message.
	Date         int32      // Date of the change.
	Actor        Peer       // The user that (un)reacted to the message.
	OldReactions []Reaction // Old reactions
	NewReactions []Reaction // New reactions
	Qts          int32      // QTS event sequence identifier
}

func (*UpdateBotMessageReaction) CRC() uint32 {
	return 0xac21d3ce
}

func (*UpdateBotMessageReaction) ImplementsUpdate() {}

// Bots only: the number of reactions on a message with anonymous reactions has changed.
type UpdateBotMessageReactions struct {
	Peer      Peer             // Peer of the reacted-to message.
	MsgID     int32            // ID of the reacted-to message.
	Date      int32            // Date of the change.
	Reactions []*ReactionCount // New reaction counters.
	Qts       int32            // QTS event sequence identifier
}

func (*UpdateBotMessageReactions) CRC() uint32 {
	return 0x9cb7759
}

func (*UpdateBotMessageReactions) ImplementsUpdate() {}

// A message was received via a connected business chat ».
type UpdateBotNewBusinessMessage struct {
	ConnectionID   string  // Connection ID.
	Message        Message // New message.
	ReplyToMessage Message `tl:"flag:0"` // The message that message is replying to.
	Qts            int32   // New qts value, see updates  for more info.
}

func (*UpdateBotNewBusinessMessage) CRC() uint32 {
	return 0x9ddb347c
}

func (*UpdateBotNewBusinessMessage) FlagIndex() int {
	return 0
}

func (*UpdateBotNewBusinessMessage) ImplementsUpdate() {}

// This object contains information about an incoming pre-checkout query.
type UpdateBotPrecheckoutQuery struct {
	QueryID          int64                 // Unique query identifier
	UserID           int64                 // User who sent the query
	Payload          []byte                // Bot specified invoice payload
	Info             *PaymentRequestedInfo `tl:"flag:0"` // Order info provided by the user
	ShippingOptionID string                `tl:"flag:1"` // Identifier of the shipping option chosen by the user
	Currency         string                // Three-letter ISO 4217 currency code, or XTR for Telegram Stars.
	TotalAmount      int64                 // Total amount in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
}

func (*UpdateBotPrecheckoutQuery) CRC() uint32 {
	return 0x8caa9a96
}

func (*UpdateBotPrecheckoutQuery) FlagIndex() int {
	return 0
}

func (*UpdateBotPrecheckoutQuery) ImplementsUpdate() {}

// Bots only: a user has purchased a paid media.
type UpdateBotPurchasedPaidMedia struct {
	UserID  int64  // The user that bought the media
	Payload string // Payload passed by the bot in inputMediaPaidMedia.payload
	Qts     int32  // New qts value, see updates  for more info.
}

func (*UpdateBotPurchasedPaidMedia) CRC() uint32 {
	return 0x283bd312
}

func (*UpdateBotPurchasedPaidMedia) ImplementsUpdate() {}

// This object contains information about an incoming shipping query.
type UpdateBotShippingQuery struct {
	QueryID         int64        // Unique query identifier
	UserID          int64        // User who sent the query
	Payload         []byte       // Bot specified invoice payload
	ShippingAddress *PostAddress // User specified shipping address
}

func (*UpdateBotShippingQuery) CRC() uint32 {
	return 0xb5aefd7d
}

func (*UpdateBotShippingQuery) ImplementsUpdate() {}

// A bot was stopped or re-started.
type UpdateBotStopped struct {
	UserID  int64 // The user ID
	Date    int32 // When did this action occur
	Stopped bool  // Whether the bot was stopped or started
	Qts     int32 // New qts value, see updates  for more info.
}

func (*UpdateBotStopped) CRC() uint32 {
	return 0xc4870a49
}

func (*UpdateBotStopped) ImplementsUpdate() {}

type UpdateBotSubscriptionExpire struct {
	UserID    int64
	Payload   string
	UntilDate int32
	Qts       int32
}

func (*UpdateBotSubscriptionExpire) CRC() uint32 {
	return 0xa8ae3eb1
}

func (*UpdateBotSubscriptionExpire) ImplementsUpdate() {}

// A new incoming event; for bots only
type UpdateBotWebhookJson struct {
	Data *DataJson // The event
}

func (*UpdateBotWebhookJson) CRC() uint32 {
	return 0x8317c0c3
}

func (*UpdateBotWebhookJson) ImplementsUpdate() {}

// A new incoming query; for bots only
type UpdateBotWebhookJsonQuery struct {
	QueryID int64     // Query identifier
	Data    *DataJson // Query data
	Timeout int32     // Query timeout
}

func (*UpdateBotWebhookJsonQuery) CRC() uint32 {
	return 0x9b9240a6
}

func (*UpdateBotWebhookJsonQuery) ImplementsUpdate() {}

// A callback button sent via a business connection was pressed, and the button data was sent to the bot that created the button.
type UpdateBusinessBotCallbackQuery struct {
	QueryID        int64   // Query ID
	UserID         int64   // ID of the user that pressed the button
	ConnectionID   string  // Business connection ID
	Message        Message // Message that contains the keyboard (also contains info about the chat where the message was sent).
	ReplyToMessage Message `tl:"flag:2"` // The message that message is replying to.
	ChatInstance   int64   // Global identifier, uniquely corresponding to the chat to which the message with the callback button was sent. Useful for high scores in games.
	Data           []byte  `tl:"flag:0"` // Callback data
}

func (*UpdateBusinessBotCallbackQuery) CRC() uint32 {
	return 0x1ea2fda7
}

func (*UpdateBusinessBotCallbackQuery) FlagIndex() int {
	return 0
}

func (*UpdateBusinessBotCallbackQuery) ImplementsUpdate() {}

// Channel/supergroup (channel and/or channelFull) information was updated.
type UpdateChannel struct {
	ChannelID int64 // Channel ID
}

func (*UpdateChannel) CRC() uint32 {
	return 0x635b4c09
}

func (*UpdateChannel) ImplementsUpdate() {}

// The history of a channel/supergroup was hidden.
type UpdateChannelAvailableMessages struct {
	ChannelID      int64 // Channel/supergroup ID
	AvailableMinID int32 // Identifier of a maximum unavailable message in a channel due to hidden history.
}

func (*UpdateChannelAvailableMessages) CRC() uint32 {
	return 0xb23fc698
}

func (*UpdateChannelAvailableMessages) ImplementsUpdate() {}

// The forward counter of a message in a channel has changed
type UpdateChannelMessageForwards struct {
	ChannelID int64 // Channel ID
	ID        int32 // ID of the message
	Forwards  int32 // New forward counter
}

func (*UpdateChannelMessageForwards) CRC() uint32 {
	return 0xd29a27f4
}

func (*UpdateChannelMessageForwards) ImplementsUpdate() {}

// The view counter of a message in a channel has changed
type UpdateChannelMessageViews struct {
	ChannelID int64 // Channel ID
	ID        int32 // ID of the message
	Views     int32 // New view counter
}

func (*UpdateChannelMessageViews) CRC() uint32 {
	return 0xf226ac08
}

func (*UpdateChannelMessageViews) ImplementsUpdate() {}

// A participant has left, joined, was banned or admined in a channel or supergroup.
type UpdateChannelParticipant struct {
	ViaChatlist     bool               `tl:"flag:3,encoded_in_bitflags"` // Whether the participant joined using a chat folder deep link.
	ChannelID       int64              // Channel ID
	Date            int32              // Date of the event
	ActorID         int64              // User that triggered the change (inviter, admin that kicked the user, or the even the user_id itself)
	UserID          int64              // User that was affected by the change
	PrevParticipant ChannelParticipant `tl:"flag:0"` // Previous participant status
	NewParticipant  ChannelParticipant `tl:"flag:1"` // New participant status
	Invite          ExportedChatInvite `tl:"flag:2"` // Chat invite used to join the channel/supergroup
	Qts             int32              // New qts value, see updates  for more info.
}

func (*UpdateChannelParticipant) CRC() uint32 {
	return 0x985d3abb
}

func (*UpdateChannelParticipant) FlagIndex() int {
	return 0
}

func (*UpdateChannelParticipant) ImplementsUpdate() {}

// A forum topic » was pinned or unpinned.
type UpdateChannelPinnedTopic struct {
	Pinned    bool  `tl:"flag:0,encoded_in_bitflags"` // Whether the topic was pinned or unpinned
	ChannelID int64 // The forum ID
	TopicID   int32 // The topic ID
}

func (*UpdateChannelPinnedTopic) CRC() uint32 {
	return 0x192efbe3
}

func (*UpdateChannelPinnedTopic) FlagIndex() int {
	return 0
}

func (*UpdateChannelPinnedTopic) ImplementsUpdate() {}

// The pinned topics of a forum have changed.
type UpdateChannelPinnedTopics struct {
	ChannelID int64   // Forum ID.
	Order     []int32 `tl:"flag:0"` // Ordered list containing the IDs of all pinned topics.
}

func (*UpdateChannelPinnedTopics) CRC() uint32 {
	return 0xfe198602
}

func (*UpdateChannelPinnedTopics) FlagIndex() int {
	return 0
}

func (*UpdateChannelPinnedTopics) ImplementsUpdate() {}

// The specified channel/supergroup messages were read (emitted specifically for messages like voice messages or video, only once the media is watched and marked as read using channels.readMessageContents)
type UpdateChannelReadMessagesContents struct {
	ChannelID   int64   // Channel/supergroup ID
	TopMsgID    int32   `tl:"flag:0"` // Forum topic ID.
	SavedPeerID Peer    `tl:"flag:1"` // If set, the messages were read within the specified monoforum topic.
	Messages    []int32 // IDs of messages that were read
}

func (*UpdateChannelReadMessagesContents) CRC() uint32 {
	return 0x25f324f7
}

func (*UpdateChannelReadMessagesContents) FlagIndex() int {
	return 0
}

func (*UpdateChannelReadMessagesContents) ImplementsUpdate() {}

/*
There are new updates in the specified channel, the client must fetch them.<br>
If the difference is too long or if the channel isn't currently in the states, start fetching from the specified pts.
*/
type UpdateChannelTooLong struct {
	ChannelID int64 // The channel
	Pts       int32 `tl:"flag:0"` // The PTS.
}

func (*UpdateChannelTooLong) CRC() uint32 {
	return 0x108d941f
}

func (*UpdateChannelTooLong) FlagIndex() int {
	return 0
}

func (*UpdateChannelTooLong) ImplementsUpdate() {}

// A user is typing in a supergroup, channel or message thread
type UpdateChannelUserTyping struct {
	ChannelID int64             // Channel ID
	TopMsgID  int32             `tl:"flag:0"` // Thread ID
	FromID    Peer              // The peer that is typing
	Action    SendMessageAction // Whether the user is typing, sending a media or doing something else
}

func (*UpdateChannelUserTyping) CRC() uint32 {
	return 0x8c88c923
}

func (*UpdateChannelUserTyping) FlagIndex() int {
	return 0
}

func (*UpdateChannelUserTyping) ImplementsUpdate() {}

/*
Users may also choose to display messages from all topics as if they were sent to a normal group, using a "View as messages" setting in the local client.<br>
This setting only affects the current account, and is synced to other logged in sessions using the channels.toggleViewForumAsMessages method; invoking this method will update the value of the `view_forum_as_messages` flag of channelFull or dialog and emit an updateChannelViewForumAsMessages.
*/
type UpdateChannelViewForumAsMessages struct {
	ChannelID int64 // The forum ID
	Enabled   bool  // The new value of the toggle.
}

func (*UpdateChannelViewForumAsMessages) CRC() uint32 {
	return 0x7b68920
}

func (*UpdateChannelViewForumAsMessages) ImplementsUpdate() {}

// A webpage preview of a link in a channel/supergroup message was generated
type UpdateChannelWebPage struct {
	ChannelID int64   // Channel/supergroup ID
	Webpage   WebPage // Generated webpage preview
	Pts       int32   // Event count after generation
	PtsCount  int32   // Number of events that were generated
}

func (*UpdateChannelWebPage) CRC() uint32 {
	return 0x2f2ba99f
}

func (*UpdateChannelWebPage) ImplementsUpdate() {}

// Chat (chat and/or chatFull) information was updated.
type UpdateChat struct {
	ChatID int64 // Chat ID
}

func (*UpdateChat) CRC() uint32 {
	return 0xf89a6a4e
}

func (*UpdateChat) ImplementsUpdate() {}

// Default banned rights in a normal chat were updated
type UpdateChatDefaultBannedRights struct {
	Peer                Peer              // The chat
	DefaultBannedRights *ChatBannedRights // New default banned rights
	Version             int32             // Version
}

func (*UpdateChatDefaultBannedRights) CRC() uint32 {
	return 0x54c01850
}

func (*UpdateChatDefaultBannedRights) ImplementsUpdate() {}

// A user has joined or left a specific chat
type UpdateChatParticipant struct {
	ChatID          int64              // Chat ID
	Date            int32              // When did this event occur
	ActorID         int64              // User that triggered the change (inviter, admin that kicked the user, or the even the user_id itself)
	UserID          int64              // User that was affected by the change
	PrevParticipant ChatParticipant    `tl:"flag:0"` // Previous participant info (empty if this participant just joined)
	NewParticipant  ChatParticipant    `tl:"flag:1"` // New participant info (empty if this participant just left)
	Invite          ExportedChatInvite `tl:"flag:2"` // The invite that was used to join the group
	Qts             int32              // New qts value, see updates  for more info.
}

func (*UpdateChatParticipant) CRC() uint32 {
	return 0xd087663a
}

func (*UpdateChatParticipant) FlagIndex() int {
	return 0
}

func (*UpdateChatParticipant) ImplementsUpdate() {}

// New group member.
type UpdateChatParticipantAdd struct {
	ChatID    int64 // Group ID
	UserID    int64 // ID of the new member
	InviterID int64 // ID of the user, who added member to the group
	Date      int32 // When was the participant added
	Version   int32 // Chat version number
}

func (*UpdateChatParticipantAdd) CRC() uint32 {
	return 0x3dda5451
}

func (*UpdateChatParticipantAdd) ImplementsUpdate() {}

// Admin permissions of a user in a basic group were changed
type UpdateChatParticipantAdmin struct {
	ChatID  int64 // Chat ID
	UserID  int64 // ID of the (de)admined user
	IsAdmin bool  // Whether the user was rendered admin
	Version int32 // Used in basic groups to reorder updates and make sure that all of them was received.
}

func (*UpdateChatParticipantAdmin) CRC() uint32 {
	return 0xd7ca61a2
}

func (*UpdateChatParticipantAdmin) ImplementsUpdate() {}

// A member has left the group.
type UpdateChatParticipantDelete struct {
	ChatID  int64 // Group ID
	UserID  int64 // ID of the user
	Version int32 // Used in basic groups to reorder updates and make sure that all of them was received.
}

func (*UpdateChatParticipantDelete) CRC() uint32 {
	return 0xe32f3d77
}

func (*UpdateChatParticipantDelete) ImplementsUpdate() {}

// Composition of chat participants changed.
type UpdateChatParticipants struct {
	Participants ChatParticipants // Updated chat participants
}

func (*UpdateChatParticipants) CRC() uint32 {
	return 0x7761198
}

func (*UpdateChatParticipants) ImplementsUpdate() {}

// The user is preparing a message in a group; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing
type UpdateChatUserTyping struct {
	ChatID int64             // Group id
	FromID Peer              // Peer that started typing (can be the chat itself, in case of anonymous admins).
	Action SendMessageAction // Type of action
}

func (*UpdateChatUserTyping) CRC() uint32 {
	return 0x83487af0
}

func (*UpdateChatUserTyping) ImplementsUpdate() {}

// The server-side configuration has changed; the client should re-fetch the config using help.getConfig and help.getAppConfig.
type UpdateConfig struct{}

func (*UpdateConfig) CRC() uint32 {
	return 0xa229dd06
}

func (*UpdateConfig) ImplementsUpdate() {}

// All contacts were deleted
type UpdateContactsReset struct{}

func (*UpdateContactsReset) CRC() uint32 {
	return 0x7084a7be
}

func (*UpdateContactsReset) ImplementsUpdate() {}

// Changes in the data center configuration options.
type UpdateDcOptions struct {
	DcOptions []*DcOption // New connection options
}

func (*UpdateDcOptions) CRC() uint32 {
	return 0x8e5e9873
}

func (*UpdateDcOptions) ImplementsUpdate() {}

// Some messages in a supergroup/channel were deleted
type UpdateDeleteChannelMessages struct {
	ChannelID int64   // Channel ID
	Messages  []int32 // IDs of messages that were deleted
	Pts       int32   // Event count after generation
	PtsCount  int32   // Number of events that were generated
}

func (*UpdateDeleteChannelMessages) CRC() uint32 {
	return 0xc32d5b12
}

func (*UpdateDeleteChannelMessages) ImplementsUpdate() {}

// Messages were deleted.
type UpdateDeleteMessages struct {
	Messages []int32 // List of identifiers of deleted messages
	Pts      int32   // New quality of actions in a message box
	PtsCount int32   // Number of generated events
}

func (*UpdateDeleteMessages) CRC() uint32 {
	return 0xa20db0e5
}

func (*UpdateDeleteMessages) ImplementsUpdate() {}

// A quick reply shortcut » was deleted. This will <strong>not</strong> emit updateDeleteQuickReplyMessages updates, even if all the messages in the shortcut are also deleted by this update.
type UpdateDeleteQuickReply struct {
	ShortcutID int32 // ID of the quick reply shortcut that was deleted.
}

func (*UpdateDeleteQuickReply) CRC() uint32 {
	return 0x53e6f1ec
}

func (*UpdateDeleteQuickReply) ImplementsUpdate() {}

// One or more messages in a quick reply shortcut » were deleted.
type UpdateDeleteQuickReplyMessages struct {
	ShortcutID int32   // Quick reply shortcut ID.
	Messages   []int32 // IDs of the deleted messages.
}

func (*UpdateDeleteQuickReplyMessages) CRC() uint32 {
	return 0x566fe7cd
}

func (*UpdateDeleteQuickReplyMessages) ImplementsUpdate() {}

// Some scheduled messages were deleted (or sent) from the schedule queue of a chat
type UpdateDeleteScheduledMessages struct {
	Peer         Peer    // Peer
	Messages     []int32 // Deleted scheduled messages
	SentMessages []int32 `tl:"flag:0"` /*
		If set, this update indicates that some scheduled messages were sent (not simply deleted from the schedule queue).
		In this case, the messages field will contain the scheduled message IDs for the sent messages (initially returned in updateNewScheduledMessage), and sent_messages will contain the real message IDs for the sent messages.
	*/
}

func (*UpdateDeleteScheduledMessages) CRC() uint32 {
	return 0xf2a71983
}

func (*UpdateDeleteScheduledMessages) FlagIndex() int {
	return 0
}

func (*UpdateDeleteScheduledMessages) ImplementsUpdate() {}

// A new folder was added
type UpdateDialogFilter struct {
	ID     int32        // Folder ID
	Filter DialogFilter `tl:"flag:0"` // Folder info
}

func (*UpdateDialogFilter) CRC() uint32 {
	return 0x26ffde7d
}

func (*UpdateDialogFilter) FlagIndex() int {
	return 0
}

func (*UpdateDialogFilter) ImplementsUpdate() {}

// New folder order
type UpdateDialogFilterOrder struct {
	Order []int32 // Ordered folder IDs
}

func (*UpdateDialogFilterOrder) CRC() uint32 {
	return 0xa5d72105
}

func (*UpdateDialogFilterOrder) ImplementsUpdate() {}

// Clients should update folder info
type UpdateDialogFilters struct{}

func (*UpdateDialogFilters) CRC() uint32 {
	return 0x3504914f
}

func (*UpdateDialogFilters) ImplementsUpdate() {}

// A dialog was pinned/unpinned
type UpdateDialogPinned struct {
	Pinned   bool       `tl:"flag:0,encoded_in_bitflags"` // Whether the dialog was pinned
	FolderID int32      `tl:"flag:1"`                     // Peer folder ID, for more info click here
	Peer     DialogPeer // The dialog
}

func (*UpdateDialogPinned) CRC() uint32 {
	return 0x6e6fe51c
}

func (*UpdateDialogPinned) FlagIndex() int {
	return 0
}

func (*UpdateDialogPinned) ImplementsUpdate() {}

// The manual unread mark of a chat was changed
type UpdateDialogUnreadMark struct {
	Unread      bool       `tl:"flag:0,encoded_in_bitflags"` // Was the chat marked or unmarked as read
	Peer        DialogPeer // The dialog
	SavedPeerID Peer       `tl:"flag:1"` // If set, the mark is related to the specified monoforum topic ID.
}

func (*UpdateDialogUnreadMark) CRC() uint32 {
	return 0xb658f23e
}

func (*UpdateDialogUnreadMark) FlagIndex() int {
	return 0
}

func (*UpdateDialogUnreadMark) ImplementsUpdate() {}

// Notifies a change of a message draft.
type UpdateDraftMessage struct {
	Peer        Peer         // The peer to which the draft is associated
	TopMsgID    int32        `tl:"flag:0"` // ID of the forum topic to which the draft is associated
	SavedPeerID Peer         `tl:"flag:1"` // If set, the draft is related to the specified monoforum topic ID.
	Draft       DraftMessage // The draft
}

func (*UpdateDraftMessage) CRC() uint32 {
	return 0xedfc111e
}

func (*UpdateDraftMessage) FlagIndex() int {
	return 0
}

func (*UpdateDraftMessage) ImplementsUpdate() {}

// A message was edited in a channel/supergroup
type UpdateEditChannelMessage struct {
	Message  Message // The new message
	Pts      int32   // Event count after generation
	PtsCount int32   // Number of events that were generated
}

func (*UpdateEditChannelMessage) CRC() uint32 {
	return 0x1b3f4df7
}

func (*UpdateEditChannelMessage) ImplementsUpdate() {}

// A message was edited
type UpdateEditMessage struct {
	Message  Message // The new edited message
	Pts      int32   // PTS
	PtsCount int32   // PTS count
}

func (*UpdateEditMessage) CRC() uint32 {
	return 0xe40370a3
}

func (*UpdateEditMessage) ImplementsUpdate() {}

// Interlocutor is typing a message in an encrypted chat. Update period is 6 second. If upon this time there is no repeated update, it shall be considered that the interlocutor stopped typing.
type UpdateEncryptedChatTyping struct {
	ChatID int32 // Chat ID
}

func (*UpdateEncryptedChatTyping) CRC() uint32 {
	return 0x1710f156
}

func (*UpdateEncryptedChatTyping) ImplementsUpdate() {}

// Communication history in an encrypted chat was marked as read.
type UpdateEncryptedMessagesRead struct {
	ChatID  int32 // Chat ID
	MaxDate int32 // Maximum value of data for read messages
	Date    int32 // Time when messages were read
}

func (*UpdateEncryptedMessagesRead) CRC() uint32 {
	return 0x38fe25b7
}

func (*UpdateEncryptedMessagesRead) ImplementsUpdate() {}

// Change of state in an encrypted chat.
type UpdateEncryption struct {
	Chat EncryptedChat // Encrypted chat
	Date int32         // Date of change
}

func (*UpdateEncryption) CRC() uint32 {
	return 0xb4a2e88d
}

func (*UpdateEncryption) ImplementsUpdate() {}

// The list of favorited stickers was changed, the client should call messages.getFavedStickers to refetch the new list
type UpdateFavedStickers struct{}

func (*UpdateFavedStickers) CRC() uint32 {
	return 0xe511996d
}

func (*UpdateFavedStickers) ImplementsUpdate() {}

// The peer list of a peer folder was updated
type UpdateFolderPeers struct {
	FolderPeers []*FolderPeer // New peer list
	Pts         int32         // Event count after generation
	PtsCount    int32         // Number of events that were generated
}

func (*UpdateFolderPeers) CRC() uint32 {
	return 0x19360dc0
}

func (*UpdateFolderPeers) ImplementsUpdate() {}

// Live geoposition message was viewed
type UpdateGeoLiveViewed struct {
	Peer  Peer  // The user that viewed the live geoposition
	MsgID int32 // Message ID of geoposition message
}

func (*UpdateGeoLiveViewed) CRC() uint32 {
	return 0x871fb939
}

func (*UpdateGeoLiveViewed) ImplementsUpdate() {}

// A new groupcall was started
type UpdateGroupCall struct {
	ChatID int64     `tl:"flag:0"` // The channel/supergroup where this group call or livestream takes place
	Call   GroupCall // Info about the group call or livestream
}

func (*UpdateGroupCall) CRC() uint32 {
	return 0x97d64341
}

func (*UpdateGroupCall) FlagIndex() int {
	return 0
}

func (*UpdateGroupCall) ImplementsUpdate() {}

// Contains updates to the blockchain of a conference call, see here » for more info.
type UpdateGroupCallChainBlocks struct {
	Call       InputGroupCall // The conference call.
	SubChainID int32          // Subchain ID.
	Blocks     [][]byte       // Blocks.
	NextOffset int32          // Offset of the next block.
}

func (*UpdateGroupCallChainBlocks) CRC() uint32 {
	return 0xa477288f
}

func (*UpdateGroupCallChainBlocks) ImplementsUpdate() {}

// New WebRTC parameters
type UpdateGroupCallConnection struct {
	Presentation bool      `tl:"flag:0,encoded_in_bitflags"` // Are these parameters related to the screen capture session currently in progress?
	Params       *DataJson // WebRTC parameters
}

func (*UpdateGroupCallConnection) CRC() uint32 {
	return 0xb783982
}

func (*UpdateGroupCallConnection) FlagIndex() int {
	return 0
}

func (*UpdateGroupCallConnection) ImplementsUpdate() {}

type UpdateGroupCallEncryptedMessage struct {
	Call             InputGroupCall
	FromID           Peer
	EncryptedMessage []byte
}

func (*UpdateGroupCallEncryptedMessage) CRC() uint32 {
	return 0xc957a766
}

func (*UpdateGroupCallEncryptedMessage) ImplementsUpdate() {}

type UpdateGroupCallMessage struct {
	Call     InputGroupCall
	FromID   Peer
	RandomID int64
	Message  *TextWithEntities
}

func (*UpdateGroupCallMessage) CRC() uint32 {
	return 0x78c314e0
}

func (*UpdateGroupCallMessage) ImplementsUpdate() {}

// The participant list of a certain group call has changed
type UpdateGroupCallParticipants struct {
	Call         InputGroupCall          // Group call
	Participants []*GroupCallParticipant // New participant list
	Version      int32                   // Version
}

func (*UpdateGroupCallParticipants) CRC() uint32 {
	return 0xf2ebdb4e
}

func (*UpdateGroupCallParticipants) ImplementsUpdate() {}

// This notification is received by bots when a button is pressed
type UpdateInlineBotCallbackQuery struct {
	QueryID       int64                   // Query ID
	UserID        int64                   // ID of the user that pressed the button
	MsgID         InputBotInlineMessageID // ID of the inline message with the button
	ChatInstance  int64                   // Global identifier, uniquely corresponding to the chat to which the message with the callback button was sent. Useful for high scores in games.
	Data          []byte                  `tl:"flag:0"` // Data associated with the callback button. Be aware that a bad client can send arbitrary data in this field.
	GameShortName string                  `tl:"flag:1"` // Short name of a Game to be returned, serves as the unique identifier for the game
}

func (*UpdateInlineBotCallbackQuery) CRC() uint32 {
	return 0x691e9052
}

func (*UpdateInlineBotCallbackQuery) FlagIndex() int {
	return 0
}

func (*UpdateInlineBotCallbackQuery) ImplementsUpdate() {}

// Language pack updated
type UpdateLangPack struct {
	Difference *LangPackDifference // Changed strings
}

func (*UpdateLangPack) CRC() uint32 {
	return 0x56022f4d
}

func (*UpdateLangPack) ImplementsUpdate() {}

// A language pack has changed, the client should manually fetch the changed strings using langpack.getDifference
type UpdateLangPackTooLong struct {
	LangCode string // Language code
}

func (*UpdateLangPackTooLong) CRC() uint32 {
	return 0x46560264
}

func (*UpdateLangPackTooLong) ImplementsUpdate() {}

// A login token (for login via QR code) was accepted.
type UpdateLoginToken struct{}

func (*UpdateLoginToken) CRC() uint32 {
	return 0x564fe691
}

func (*UpdateLoginToken) ImplementsUpdate() {}

// You bought a paid media »: this update contains the revealed media.
type UpdateMessageExtendedMedia struct {
	Peer          Peer                   // Peer where the paid media was posted
	MsgID         int32                  // ID of the message containing the paid media
	ExtendedMedia []MessageExtendedMedia // Revealed media, contains only messageExtendedMedia constructors.
}

func (*UpdateMessageExtendedMedia) CRC() uint32 {
	return 0xd5a41724
}

func (*UpdateMessageExtendedMedia) ImplementsUpdate() {}

// Sent message with <strong>random_id</strong> client identifier was assigned an identifier.
type UpdateMessageID struct {
	ID       int32 // id identifier of a respective Message
	RandomID int64 // Previously transferred client random_id identifier
}

func (*UpdateMessageID) CRC() uint32 {
	return 0x4e90bfd6
}

func (*UpdateMessageID) ImplementsUpdate() {}

// The results of a poll have changed
type UpdateMessagePoll struct {
	PollID  int64        // Poll ID
	Poll    *Poll        `tl:"flag:0"` // If the server knows the client hasn't cached this poll yet, the poll itself
	Results *PollResults // New poll results
}

func (*UpdateMessagePoll) CRC() uint32 {
	return 0xaca1657b
}

func (*UpdateMessagePoll) FlagIndex() int {
	return 0
}

func (*UpdateMessagePoll) ImplementsUpdate() {}

// A specific peer has voted in a poll
type UpdateMessagePollVote struct {
	PollID  int64    // Poll ID
	Peer    Peer     // The peer that voted in the poll
	Options [][]byte // Chosen option(s)
	Qts     int32    // New qts value, see updates  for more info.
}

func (*UpdateMessagePollVote) CRC() uint32 {
	return 0x24f40e77
}

func (*UpdateMessagePollVote) ImplementsUpdate() {}

// New message reactions » are available
type UpdateMessageReactions struct {
	Peer        Peer              // Peer
	MsgID       int32             // Message ID
	TopMsgID    int32             `tl:"flag:0"` // Forum topic ID
	SavedPeerID Peer              `tl:"flag:1"` // If set, the reactions are in the specified monoforum topic.
	Reactions   *MessageReactions // Reactions
}

func (*UpdateMessageReactions) CRC() uint32 {
	return 0x1e297bfa
}

func (*UpdateMessageReactions) FlagIndex() int {
	return 0
}

func (*UpdateMessageReactions) ImplementsUpdate() {}

// An admin has (un)exempted this monoforum topic » from payment to send messages using account.toggleNoPaidMessagesException.
type UpdateMonoForumNoPaidException struct {
	Exception   bool  `tl:"flag:0,encoded_in_bitflags"` // If set, an admin has exempted this peer, otherwise the peer was unexempted.
	ChannelID   int64 // The monoforum ID.
	SavedPeerID Peer  // The peer/topic ID.
}

func (*UpdateMonoForumNoPaidException) CRC() uint32 {
	return 0x9f812b08
}

func (*UpdateMonoForumNoPaidException) FlagIndex() int {
	return 0
}

func (*UpdateMonoForumNoPaidException) ImplementsUpdate() {}

// A stickerset was just moved to top, see here for more info »
type UpdateMoveStickerSetToTop struct {
	Masks      bool  `tl:"flag:0,encoded_in_bitflags"` // This update is referring to a mask stickerset
	Emojis     bool  `tl:"flag:1,encoded_in_bitflags"` // This update is referring to a custom emoji stickerset
	Stickerset int64 // Stickerset ID
}

func (*UpdateMoveStickerSetToTop) CRC() uint32 {
	return 0x86fccf85
}

func (*UpdateMoveStickerSetToTop) FlagIndex() int {
	return 0
}

func (*UpdateMoveStickerSetToTop) ImplementsUpdate() {}

// A new session logged into the current user's account through an unknown device.
type UpdateNewAuthorization struct {
	Unconfirmed bool   `tl:"flag:0,encoded_in_bitflags"` // Whether the session is unconfirmed,.
	Hash        int64  // Hash used for caching, for more info click here
	Date        int32  `tl:"flag:0"` // Authorization date
	Device      string `tl:"flag:0"` // Name of device, for example <em>Android</em>
	Location    string `tl:"flag:0"` // Location, for example <em>USA, NY (IP=1.2.3.4)</em>
}

func (*UpdateNewAuthorization) CRC() uint32 {
	return 0x8951abef
}

func (*UpdateNewAuthorization) FlagIndex() int {
	return 0
}

func (*UpdateNewAuthorization) ImplementsUpdate() {}

// A new message was sent in a channel/supergroup
type UpdateNewChannelMessage struct {
	Message  Message // New message
	Pts      int32   // Event count after generation
	PtsCount int32   // Number of events that were generated
}

func (*UpdateNewChannelMessage) CRC() uint32 {
	return 0x62ba04d9
}

func (*UpdateNewChannelMessage) ImplementsUpdate() {}

// New encrypted message.
type UpdateNewEncryptedMessage struct {
	Message EncryptedMessage // Message
	Qts     int32            // New qts value, see updates  for more info.
}

func (*UpdateNewEncryptedMessage) CRC() uint32 {
	return 0x12bcbd9a
}

func (*UpdateNewEncryptedMessage) ImplementsUpdate() {}

// New message in a private chat or in a basic group.
type UpdateNewMessage struct {
	Message  Message // Message
	Pts      int32   // New quantity of actions in a message box
	PtsCount int32   // Number of generated events
}

func (*UpdateNewMessage) CRC() uint32 {
	return 0x1f2b0afd
}

func (*UpdateNewMessage) ImplementsUpdate() {}

// A new quick reply shortcut » was created.
type UpdateNewQuickReply struct {
	QuickReply *QuickReply // Quick reply shortcut.
}

func (*UpdateNewQuickReply) CRC() uint32 {
	return 0xf53da717
}

func (*UpdateNewQuickReply) ImplementsUpdate() {}

// A message was added to the schedule queue of a chat
type UpdateNewScheduledMessage struct {
	Message Message // Message
}

func (*UpdateNewScheduledMessage) CRC() uint32 {
	return 0x39a51dfb
}

func (*UpdateNewScheduledMessage) ImplementsUpdate() {}

// A new stickerset was installed
type UpdateNewStickerSet struct {
	Stickerset MessagesStickerSet // The installed stickerset
}

func (*UpdateNewStickerSet) CRC() uint32 {
	return 0x688a30aa
}

func (*UpdateNewStickerSet) ImplementsUpdate() {}

// Represents a new reaction to a story.
type UpdateNewStoryReaction struct {
	StoryID  int32    // Story ID.
	Peer     Peer     // The peer where the story was posted.
	Reaction Reaction // The reaction.
}

func (*UpdateNewStoryReaction) CRC() uint32 {
	return 0x1824e40b
}

func (*UpdateNewStoryReaction) ImplementsUpdate() {}

// Changes in notification settings.
type UpdateNotifySettings struct {
	Peer           NotifyPeer          // Notification source
	NotifySettings *PeerNotifySettings // New notification settings
}

func (*UpdateNotifySettings) CRC() uint32 {
	return 0xbec268ef
}

func (*UpdateNotifySettings) ImplementsUpdate() {}

// Contains the current default paid reaction privacy, see here » for more info.
type UpdatePaidReactionPrivacy struct {
	Private PaidReactionPrivacy // Paid reaction privacy settings.
}

func (*UpdatePaidReactionPrivacy) CRC() uint32 {
	return 0x8b725fce
}

func (*UpdatePaidReactionPrivacy) ImplementsUpdate() {}

// We blocked a peer, see here » for more info on blocklists.
type UpdatePeerBlocked struct {
	Blocked              bool `tl:"flag:0,encoded_in_bitflags"` // Whether the peer was blocked or unblocked
	BlockedMyStoriesFrom bool `tl:"flag:1,encoded_in_bitflags"` // Whether the peer was added/removed to/from the story blocklist; if not set, this update affects the main blocklist,.
	PeerID               Peer // The (un)blocked peer
}

func (*UpdatePeerBlocked) CRC() uint32 {
	return 0xebe07752
}

func (*UpdatePeerBlocked) FlagIndex() int {
	return 0
}

func (*UpdatePeerBlocked) ImplementsUpdate() {}

// The Time-To-Live for messages sent by the current user in a specific chat has changed
type UpdatePeerHistoryTtl struct {
	Peer      Peer  // The chat
	TtlPeriod int32 `tl:"flag:0"` // The new Time-To-Live
}

func (*UpdatePeerHistoryTtl) CRC() uint32 {
	return 0xbb9bb9a5
}

func (*UpdatePeerHistoryTtl) FlagIndex() int {
	return 0
}

func (*UpdatePeerHistoryTtl) ImplementsUpdate() {}

// List of peers near you was updated
type UpdatePeerLocated struct {
	Peers []PeerLocated // Geolocated peer list update
}

func (*UpdatePeerLocated) CRC() uint32 {
	return 0xb4afcfb0
}

func (*UpdatePeerLocated) ImplementsUpdate() {}

// Settings of a certain peer have changed
type UpdatePeerSettings struct {
	Peer     Peer          // The peer
	Settings *PeerSettings // Associated peer settings
}

func (*UpdatePeerSettings) CRC() uint32 {
	return 0x6a7e7366
}

func (*UpdatePeerSettings) ImplementsUpdate() {}

// The wallpaper » of a given peer has changed.
type UpdatePeerWallpaper struct {
	WallpaperOverridden bool      `tl:"flag:1,encoded_in_bitflags"` // Whether the other user has chosen a custom wallpaper for us using messages.setChatWallPaper and the for_both flag,.
	Peer                Peer      // The peer where the wallpaper has changed.
	Wallpaper           WallPaper `tl:"flag:0"` // The new wallpaper, if none the wallpaper was removed and the default wallpaper should be used.
}

func (*UpdatePeerWallpaper) CRC() uint32 {
	return 0xae3f101d
}

func (*UpdatePeerWallpaper) FlagIndex() int {
	return 0
}

func (*UpdatePeerWallpaper) ImplementsUpdate() {}

// Someone has requested to join a chat or channel
type UpdatePendingJoinRequests struct {
	Peer             Peer    // Chat or channel
	RequestsPending  int32   // Number of pending join requests  for the chat or channel
	RecentRequesters []int64 // IDs of users that have recently requested to join
}

func (*UpdatePendingJoinRequests) CRC() uint32 {
	return 0x7063c3db
}

func (*UpdatePendingJoinRequests) ImplementsUpdate() {}

// An incoming phone call
type UpdatePhoneCall struct {
	PhoneCall PhoneCall // Phone call
}

func (*UpdatePhoneCall) CRC() uint32 {
	return 0xab0f6b1e
}

func (*UpdatePhoneCall) ImplementsUpdate() {}

// Incoming phone call signaling payload
type UpdatePhoneCallSignalingData struct {
	PhoneCallID int64  // Phone call ID
	Data        []byte // Signaling payload
}

func (*UpdatePhoneCallSignalingData) CRC() uint32 {
	return 0x2661bf09
}

func (*UpdatePhoneCallSignalingData) ImplementsUpdate() {}

// Messages were pinned/unpinned in a channel/supergroup
type UpdatePinnedChannelMessages struct {
	Pinned    bool    `tl:"flag:0,encoded_in_bitflags"` // Whether the messages were pinned or unpinned
	ChannelID int64   // Channel ID
	Messages  []int32 // Messages
	Pts       int32   // Event count after generation
	PtsCount  int32   // Number of events that were generated
}

func (*UpdatePinnedChannelMessages) CRC() uint32 {
	return 0x5bb98608
}

func (*UpdatePinnedChannelMessages) FlagIndex() int {
	return 0
}

func (*UpdatePinnedChannelMessages) ImplementsUpdate() {}

// Pinned dialogs were updated
type UpdatePinnedDialogs struct {
	FolderID int32        `tl:"flag:1"` // Peer folder ID, for more info click here
	Order    []DialogPeer `tl:"flag:0"` // New order of pinned dialogs
}

func (*UpdatePinnedDialogs) CRC() uint32 {
	return 0xfa0f3ca2
}

func (*UpdatePinnedDialogs) FlagIndex() int {
	return 0
}

func (*UpdatePinnedDialogs) ImplementsUpdate() {}

type UpdatePinnedForumTopic struct {
	Pinned  int32 `tl:"flag:0"`
	Peer    Peer
	TopicID int32
}

func (*UpdatePinnedForumTopic) CRC() uint32 {
	return 0x683b2c52
}

func (*UpdatePinnedForumTopic) FlagIndex() int {
	return 0
}

func (*UpdatePinnedForumTopic) ImplementsUpdate() {}

type UpdatePinnedForumTopics struct {
	Peer  Peer
	Order []int32 `tl:"flag:0"`
}

func (*UpdatePinnedForumTopics) CRC() uint32 {
	return 0xdef143d0
}

func (*UpdatePinnedForumTopics) FlagIndex() int {
	return 0
}

func (*UpdatePinnedForumTopics) ImplementsUpdate() {}

// Some messages were pinned in a chat
type UpdatePinnedMessages struct {
	Pinned   bool    `tl:"flag:0,encoded_in_bitflags"` // Whether the messages were pinned or unpinned
	Peer     Peer    // Peer
	Messages []int32 // Message IDs
	Pts      int32   // Event count after generation
	PtsCount int32   // Number of events that were generated
}

func (*UpdatePinnedMessages) CRC() uint32 {
	return 0xed85eab5
}

func (*UpdatePinnedMessages) FlagIndex() int {
	return 0
}

func (*UpdatePinnedMessages) ImplementsUpdate() {}

// Pinned saved dialogs » were updated
type UpdatePinnedSavedDialogs struct {
	Order []DialogPeer `tl:"flag:0"` // New order of pinned saved dialogs
}

func (*UpdatePinnedSavedDialogs) CRC() uint32 {
	return 0x686c85a6
}

func (*UpdatePinnedSavedDialogs) FlagIndex() int {
	return 0
}

func (*UpdatePinnedSavedDialogs) ImplementsUpdate() {}

// Privacy rules were changed
type UpdatePrivacy struct {
	Key   PrivacyKey    // Peers to which the privacy rules apply
	Rules []PrivacyRule // New privacy rules
}

func (*UpdatePrivacy) CRC() uint32 {
	return 0xee3b272a
}

func (*UpdatePrivacy) ImplementsUpdate() {}

// Common message box sequence PTS has changed, state has to be refetched using updates.getState
type UpdatePtsChanged struct{}

func (*UpdatePtsChanged) CRC() uint32 {
	return 0x3354678f
}

func (*UpdatePtsChanged) ImplementsUpdate() {}

// Info about or the order of quick reply shortcuts » was changed.
type UpdateQuickReplies struct {
	QuickReplies []*QuickReply // New quick reply shortcut order and information.
}

func (*UpdateQuickReplies) CRC() uint32 {
	return 0xf9470ab2
}

func (*UpdateQuickReplies) ImplementsUpdate() {}

// A new message was added to a quick reply shortcut ».
type UpdateQuickReplyMessage struct {
	Message Message // The message that was added (the message.quick_reply_shortcut_id field will contain the shortcut ID).
}

func (*UpdateQuickReplyMessage) CRC() uint32 {
	return 0x3e050d0f
}

func (*UpdateQuickReplyMessage) ImplementsUpdate() {}

// Incoming comments in a discussion thread were marked as read
type UpdateReadChannelDiscussionInbox struct {
	ChannelID     int64 // Discussion group ID
	TopMsgID      int32 // ID of the group message that started the thread (message in linked discussion group)
	ReadMaxID     int32 // Message ID of latest read incoming message for this thread
	BroadcastID   int64 `tl:"flag:0"` // If set, contains the ID of the channel that contains the post that started the comment thread in the discussion group (channel_id)
	BroadcastPost int32 `tl:"flag:0"` // If set, contains the ID of the channel post that started the comment thread
}

func (*UpdateReadChannelDiscussionInbox) CRC() uint32 {
	return 0xd6b19546
}

func (*UpdateReadChannelDiscussionInbox) FlagIndex() int {
	return 0
}

func (*UpdateReadChannelDiscussionInbox) ImplementsUpdate() {}

// Outgoing comments in a discussion thread were marked as read
type UpdateReadChannelDiscussionOutbox struct {
	ChannelID int64 // Supergroup ID
	TopMsgID  int32 // ID of the group message that started the thread
	ReadMaxID int32 // Message ID of latest read outgoing message for this thread
}

func (*UpdateReadChannelDiscussionOutbox) CRC() uint32 {
	return 0x695c9e7c
}

func (*UpdateReadChannelDiscussionOutbox) ImplementsUpdate() {}

// Incoming messages in a channel/supergroup were read
type UpdateReadChannelInbox struct {
	FolderID         int32 `tl:"flag:0"` // Peer folder ID, for more info click here
	ChannelID        int64 // Channel/supergroup ID
	MaxID            int32 // Position up to which all incoming messages are read.
	StillUnreadCount int32 // Count of messages weren't read yet
	Pts              int32 // Event count after generation
}

func (*UpdateReadChannelInbox) CRC() uint32 {
	return 0x922e6e10
}

func (*UpdateReadChannelInbox) FlagIndex() int {
	return 0
}

func (*UpdateReadChannelInbox) ImplementsUpdate() {}

// Outgoing messages in a channel/supergroup were read
type UpdateReadChannelOutbox struct {
	ChannelID int64 // Channel/supergroup ID
	MaxID     int32 // Position up to which all outgoing messages are read.
}

func (*UpdateReadChannelOutbox) CRC() uint32 {
	return 0xb75f99a9
}

func (*UpdateReadChannelOutbox) ImplementsUpdate() {}

// Some featured custom emoji stickers were marked as read
type UpdateReadFeaturedEmojiStickers struct{}

func (*UpdateReadFeaturedEmojiStickers) CRC() uint32 {
	return 0xfb4c496c
}

func (*UpdateReadFeaturedEmojiStickers) ImplementsUpdate() {}

// Some featured stickers were marked as read
type UpdateReadFeaturedStickers struct{}

func (*UpdateReadFeaturedStickers) CRC() uint32 {
	return 0x571d2742
}

func (*UpdateReadFeaturedStickers) ImplementsUpdate() {}

// Incoming messages were read
type UpdateReadHistoryInbox struct {
	FolderID         int32 `tl:"flag:0"`
	Peer             Peer
	TopMsgID         int32 `tl:"flag:1"`
	MaxID            int32
	StillUnreadCount int32
	Pts              int32
	PtsCount         int32
}

func (*UpdateReadHistoryInbox) CRC() uint32 {
	return 0x9e84bc99
}

func (*UpdateReadHistoryInbox) FlagIndex() int {
	return 0
}

func (*UpdateReadHistoryInbox) ImplementsUpdate() {}

// Outgoing messages were read
type UpdateReadHistoryOutbox struct {
	Peer     Peer  // Peer
	MaxID    int32 // Maximum ID of read outgoing messages
	Pts      int32 // Event count after generation
	PtsCount int32 // Number of events that were generated
}

func (*UpdateReadHistoryOutbox) CRC() uint32 {
	return 0x2f2f21bf
}

func (*UpdateReadHistoryOutbox) ImplementsUpdate() {}

// Contents of messages in the common message box were read (emitted specifically for messages like voice messages or video, only once the media is watched and marked as read using messages.readMessageContents).
type UpdateReadMessagesContents struct {
	Messages []int32 // IDs of read messages
	Pts      int32   // Event count after generation
	PtsCount int32   // Number of events that were generated
	Date     int32   `tl:"flag:0"` // When was the last message in messages marked as read.
}

func (*UpdateReadMessagesContents) CRC() uint32 {
	return 0xf8227181
}

func (*UpdateReadMessagesContents) FlagIndex() int {
	return 0
}

func (*UpdateReadMessagesContents) ImplementsUpdate() {}

// Incoming messages in a monoforum topic were read
type UpdateReadMonoForumInbox struct {
	ChannelID   int64 // ID of the monoforum.
	SavedPeerID Peer  // Topic ID.
	ReadMaxID   int32 // Position up to which all incoming messages are read.
}

func (*UpdateReadMonoForumInbox) CRC() uint32 {
	return 0x77b0e372
}

func (*UpdateReadMonoForumInbox) ImplementsUpdate() {}

// Outgoing messages in a monoforum were read.
type UpdateReadMonoForumOutbox struct {
	ChannelID   int64 // ID of the monoforum.
	SavedPeerID Peer  // Topic ID.
	ReadMaxID   int32 // Position up to which all outgoing messages are read.
}

func (*UpdateReadMonoForumOutbox) CRC() uint32 {
	return 0xa4a79376
}

func (*UpdateReadMonoForumOutbox) ImplementsUpdate() {}

// Stories of a specific peer were marked as read.
type UpdateReadStories struct {
	Peer  Peer  // The peer
	MaxID int32 // ID of the last story that was marked as read
}

func (*UpdateReadStories) CRC() uint32 {
	return 0xf74e932b
}

func (*UpdateReadStories) ImplementsUpdate() {}

// The list of recent emoji statuses has changed
type UpdateRecentEmojiStatuses struct{}

func (*UpdateRecentEmojiStatuses) CRC() uint32 {
	return 0x30f443db
}

func (*UpdateRecentEmojiStatuses) ImplementsUpdate() {}

// The list of recent message reactions has changed
type UpdateRecentReactions struct{}

func (*UpdateRecentReactions) CRC() uint32 {
	return 0x6f7863f4
}

func (*UpdateRecentReactions) ImplementsUpdate() {}

// The recent sticker list was updated
type UpdateRecentStickers struct{}

func (*UpdateRecentStickers) CRC() uint32 {
	return 0x9a422c20
}

func (*UpdateRecentStickers) ImplementsUpdate() {}

// A saved message dialog was pinned/unpinned
type UpdateSavedDialogPinned struct {
	Pinned bool       `tl:"flag:0,encoded_in_bitflags"` // Whether the dialog was pinned
	Peer   DialogPeer // The dialog
}

func (*UpdateSavedDialogPinned) CRC() uint32 {
	return 0xaeaf9e74
}

func (*UpdateSavedDialogPinned) FlagIndex() int {
	return 0
}

func (*UpdateSavedDialogPinned) ImplementsUpdate() {}

// The saved gif list has changed, the client should refetch it using messages.getSavedGifs
type UpdateSavedGifs struct{}

func (*UpdateSavedGifs) CRC() uint32 {
	return 0x9375341e
}

func (*UpdateSavedGifs) ImplementsUpdate() {}

// The list of reaction tag » names assigned by the user has changed and should be refetched using messages.getSavedReactionTags ».
type UpdateSavedReactionTags struct{}

func (*UpdateSavedReactionTags) CRC() uint32 {
	return 0x39c67432
}

func (*UpdateSavedReactionTags) ImplementsUpdate() {}

// The list of saved notification sounds has changed, use account.getSavedRingtones to fetch the new list.
type UpdateSavedRingtones struct{}

func (*UpdateSavedRingtones) CRC() uint32 {
	return 0x74d8be99
}

func (*UpdateSavedRingtones) ImplementsUpdate() {}

// A paid login SMS code was successfully sent.
type UpdateSentPhoneCode struct {
	SentCode AuthSentCode // Info about the sent code.
}

func (*UpdateSentPhoneCode) CRC() uint32 {
	return 0x504aa18f
}

func (*UpdateSentPhoneCode) ImplementsUpdate() {}

// Indicates we reacted to a story ».
type UpdateSentStoryReaction struct {
	Peer     Peer     // The peer that sent the story
	StoryID  int32    // ID of the story we reacted to
	Reaction Reaction // The reaction that was sent
}

func (*UpdateSentStoryReaction) CRC() uint32 {
	return 0x7d627683
}

func (*UpdateSentStoryReaction) ImplementsUpdate() {}

// A service message for the user.
type UpdateServiceNotification struct {
	Popup       bool  `tl:"flag:0,encoded_in_bitflags"` // If set, the message must be displayed in a popup.
	InvertMedia bool  `tl:"flag:2,encoded_in_bitflags"` // If set, any eventual webpage preview will be shown on top of the message instead of at the bottom.
	InboxDate   int32 `tl:"flag:1"`                     /*
		When was the notification received
		The message must also be stored locally as part of the message history with the user id 777000 (Telegram Notifications).
	*/
	Type     string          // String, identical in format and contents to the <a href="/api/errors#error-type">type</a> field in API errors. Describes type of service message. It is acceptable to ignore repeated messages of the same type within a short period of time (15 minutes).
	Message  string          // Message text
	Media    MessageMedia    // Media content (optional)
	Entities []MessageEntity // Message entities for styled text
}

func (*UpdateServiceNotification) CRC() uint32 {
	return 0xebe46819
}

func (*UpdateServiceNotification) FlagIndex() int {
	return 0
}

func (*UpdateServiceNotification) ImplementsUpdate() {}

// A new SMS job was received
type UpdateSmsJob struct {
	JobID string // SMS job ID
}

func (*UpdateSmsJob) CRC() uint32 {
	return 0xf16269d4
}

func (*UpdateSmsJob) ImplementsUpdate() {}

// The current account's Telegram Stars balance » has changed.
type UpdateStarsBalance struct {
	Balance StarsAmount // New balance.
}

func (*UpdateStarsBalance) CRC() uint32 {
	return 0x4e80a379
}

func (*UpdateStarsBalance) ImplementsUpdate() {}

// The Telegram Star balance of a channel/bot we own has changed ».
type UpdateStarsRevenueStatus struct {
	Peer   Peer                // Channel/bot
	Status *StarsRevenueStatus // New Telegram Star balance.
}

func (*UpdateStarsRevenueStatus) CRC() uint32 {
	return 0xa584b019
}

func (*UpdateStarsRevenueStatus) ImplementsUpdate() {}

// Installed stickersets have changed, the client should refetch them as described in the docs.
type UpdateStickerSets struct {
	Masks  bool `tl:"flag:0,encoded_in_bitflags"` // Whether mask stickersets have changed
	Emojis bool `tl:"flag:1,encoded_in_bitflags"` // Whether the list of installed custom emoji stickersets has changed
}

func (*UpdateStickerSets) CRC() uint32 {
	return 0x31c24808
}

func (*UpdateStickerSets) FlagIndex() int {
	return 0
}

func (*UpdateStickerSets) ImplementsUpdate() {}

// The order of stickersets was changed
type UpdateStickerSetsOrder struct {
	Masks  bool    `tl:"flag:0,encoded_in_bitflags"` // Whether the updated stickers are mask stickers
	Emojis bool    `tl:"flag:1,encoded_in_bitflags"` // Whether the updated stickers are custom emoji stickers
	Order  []int64 // New sticker order by sticker ID
}

func (*UpdateStickerSetsOrder) CRC() uint32 {
	return 0xbb2d201
}

func (*UpdateStickerSetsOrder) FlagIndex() int {
	return 0
}

func (*UpdateStickerSetsOrder) ImplementsUpdate() {}

// Indicates that stories stealth mode was activated.
type UpdateStoriesStealthMode struct {
	StealthMode *StoriesStealthMode // Information about the current stealth mode session.
}

func (*UpdateStoriesStealthMode) CRC() uint32 {
	return 0x2c084dc1
}

func (*UpdateStoriesStealthMode) ImplementsUpdate() {}

// A new story was posted.
type UpdateStory struct {
	Peer  Peer      // ID of the poster.
	Story StoryItem // The story that was posted.
}

func (*UpdateStory) CRC() uint32 {
	return 0x75b3b798
}

func (*UpdateStory) ImplementsUpdate() {}

// A story was successfully uploaded.
type UpdateStoryID struct {
	ID       int32 // The id that was attributed to the story.
	RandomID int64 // The random_id that was passed to stories.sendStory.
}

func (*UpdateStoryID) CRC() uint32 {
	return 0x1bf335b9
}

func (*UpdateStoryID) ImplementsUpdate() {}

// A cloud theme was updated
type UpdateTheme struct {
	Theme *Theme // Theme
}

func (*UpdateTheme) CRC() uint32 {
	return 0x8216fba3
}

func (*UpdateTheme) ImplementsUpdate() {}

type UpdateTranscribeAudio struct {
	Final           bool `tl:"flag:0,encoded_in_bitflags"`
	TranscriptionID int64
	Text            string
}

func (*UpdateTranscribeAudio) CRC() uint32 {
	return 0x88617090
}

func (*UpdateTranscribeAudio) FlagIndex() int {
	return 0
}

func (*UpdateTranscribeAudio) ImplementsUpdate() {}

// A pending voice message transcription » initiated with messages.transcribeAudio was updated.
type UpdateTranscribedAudio struct {
	Pending         bool   `tl:"flag:0,encoded_in_bitflags"` // Whether this transcription is still pending and further updateTranscribedAudio about it will be sent in the future.
	Peer            Peer   // Peer of the transcribed message
	MsgID           int32  // Transcribed message ID
	TranscriptionID int64  // Transcription ID
	Text            string // Transcribed text
}

func (*UpdateTranscribedAudio) CRC() uint32 {
	return 0x84cd5a
}

func (*UpdateTranscribedAudio) FlagIndex() int {
	return 0
}

func (*UpdateTranscribedAudio) ImplementsUpdate() {}

// User (user and/or userFull) information was updated.
type UpdateUser struct {
	UserID int64 // User ID
}

func (*UpdateUser) CRC() uint32 {
	return 0x20529438
}

func (*UpdateUser) ImplementsUpdate() {}

// The emoji status of a certain user has changed
type UpdateUserEmojiStatus struct {
	UserID      int64       // User ID
	EmojiStatus EmojiStatus // New emoji status
}

func (*UpdateUserEmojiStatus) CRC() uint32 {
	return 0x28373599
}

func (*UpdateUserEmojiStatus) ImplementsUpdate() {}

// Changes the user's first name, last name and username.
type UpdateUserName struct {
	UserID    int64       // User identifier
	FirstName string      // New first name. Corresponds to the new value of real_first_name field of the userFull constructor.
	LastName  string      // New last name. Corresponds to the new value of real_last_name field of the userFull constructor.
	Usernames []*Username // Usernames.
}

func (*UpdateUserName) CRC() uint32 {
	return 0xa7848924
}

func (*UpdateUserName) ImplementsUpdate() {}

// A user's phone number was changed
type UpdateUserPhone struct {
	UserID int64  // User ID
	Phone  string // New phone number
}

func (*UpdateUserPhone) CRC() uint32 {
	return 0x5492a13
}

func (*UpdateUserPhone) ImplementsUpdate() {}

// Contact status update.
type UpdateUserStatus struct {
	UserID int64      // User identifier
	Status UserStatus // New status
}

func (*UpdateUserStatus) CRC() uint32 {
	return 0xe5bdf8de
}

func (*UpdateUserStatus) ImplementsUpdate() {}

// The user is preparing a message; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing
type UpdateUserTyping struct {
	UserID   int64
	TopMsgID int32 `tl:"flag:0"`
	Action   SendMessageAction
}

func (*UpdateUserTyping) CRC() uint32 {
	return 0x2a17bf5c
}

func (*UpdateUserTyping) FlagIndex() int {
	return 0
}

func (*UpdateUserTyping) ImplementsUpdate() {}

// An instant view webpage preview was generated
type UpdateWebPage struct {
	Webpage  WebPage // Webpage preview
	Pts      int32   // Event count after generation
	PtsCount int32   // Number of events that were generated
}

func (*UpdateWebPage) CRC() uint32 {
	return 0x7f891213
}

func (*UpdateWebPage) ImplementsUpdate() {}

// Indicates to a bot that a webview was closed and an inline message was sent on behalf of the user using messages.sendWebViewResultMessage
type UpdateWebViewResultSent struct {
	QueryID int64 // Web app interaction ID
}

func (*UpdateWebViewResultSent) CRC() uint32 {
	return 0x1592b79d
}

func (*UpdateWebViewResultSent) ImplementsUpdate() {}

type Updates interface {
	tl.Object
	ImplementsUpdates()
}

// Shortened constructor containing info on one update not requiring auxiliary data
type UpdateShort struct {
	Update Update // Update
	Date   int32  // Date of event
}

func (*UpdateShort) CRC() uint32 {
	return 0x78d4dec1
}

func (*UpdateShort) ImplementsUpdates() {}

// Shortened constructor containing info on one new incoming text message from a chat
type UpdateShortChatMessage struct {
	Out         bool               `tl:"flag:1,encoded_in_bitflags"`  // Whether the message is outgoing
	Mentioned   bool               `tl:"flag:4,encoded_in_bitflags"`  // Whether we were mentioned in this message
	MediaUnread bool               `tl:"flag:5,encoded_in_bitflags"`  // Whether the message contains some unread mentions
	Silent      bool               `tl:"flag:13,encoded_in_bitflags"` // If true, the message is a silent message, no notifications should be triggered
	ID          int32              // ID of the message
	FromID      int64              // ID of the sender of the message
	ChatID      int64              // ID of the chat where the message was sent
	Message     string             // Message
	Pts         int32              // PTS
	PtsCount    int32              // PTS count
	Date        int32              // date
	FwdFrom     *MessageFwdHeader  `tl:"flag:2"`  // Info about a forwarded message
	ViaBotID    int64              `tl:"flag:11"` // Info about the inline bot used to generate this message
	ReplyTo     MessageReplyHeader `tl:"flag:3"`  // Reply (thread) information
	Entities    []MessageEntity    `tl:"flag:7"`  // Entities for styled text
	TtlPeriod   int32              `tl:"flag:25"` // Time To Live of the message, once updateShortChatMessage.date+updateShortChatMessage.ttl_period === time(), the message will be deleted on the server, and must be deleted locally as well.
}

func (*UpdateShortChatMessage) CRC() uint32 {
	return 0x4d6deea5
}

func (*UpdateShortChatMessage) FlagIndex() int {
	return 0
}

func (*UpdateShortChatMessage) ImplementsUpdates() {}

// Info about a message sent to (received from) another user
type UpdateShortMessage struct {
	Out         bool               `tl:"flag:1,encoded_in_bitflags"`  // Whether the message is outgoing
	Mentioned   bool               `tl:"flag:4,encoded_in_bitflags"`  // Whether we were mentioned in the message
	MediaUnread bool               `tl:"flag:5,encoded_in_bitflags"`  // Whether there are some unread mentions in this message
	Silent      bool               `tl:"flag:13,encoded_in_bitflags"` // If true, the message is a silent message, no notifications should be triggered
	ID          int32              // The message ID
	UserID      int64              // The ID of the sender (if outgoing will be the ID of the destination) of the message
	Message     string             // The message
	Pts         int32              // PTS
	PtsCount    int32              // PTS count
	Date        int32              // date
	FwdFrom     *MessageFwdHeader  `tl:"flag:2"`  // Info about a forwarded message
	ViaBotID    int64              `tl:"flag:11"` // Info about the inline bot used to generate this message
	ReplyTo     MessageReplyHeader `tl:"flag:3"`  // Reply and thread information
	Entities    []MessageEntity    `tl:"flag:7"`  // Entities for styled text
	TtlPeriod   int32              `tl:"flag:25"` // Time To Live of the message, once message.date+message.ttl_period === time(), the message will be deleted on the server, and must be deleted locally as well.
}

func (*UpdateShortMessage) CRC() uint32 {
	return 0x313bc7f8
}

func (*UpdateShortMessage) FlagIndex() int {
	return 0
}

func (*UpdateShortMessage) ImplementsUpdates() {}

// Shortened constructor containing info on one outgoing message to a contact (the destination chat has to be extracted from the method call that returned this object).
type UpdateShortSentMessage struct {
	Out       bool            `tl:"flag:1,encoded_in_bitflags"` // Whether the message is outgoing
	ID        int32           // ID of the sent message
	Pts       int32           // PTS
	PtsCount  int32           // PTS count
	Date      int32           // date
	Media     MessageMedia    `tl:"flag:9"`  // Attached media
	Entities  []MessageEntity `tl:"flag:7"`  // Entities for styled text
	TtlPeriod int32           `tl:"flag:25"` // Time To Live of the message, once message.date+message.ttl_period === time(), the message will be deleted on the server, and must be deleted locally as well.
}

func (*UpdateShortSentMessage) CRC() uint32 {
	return 0x9015e101
}

func (*UpdateShortSentMessage) FlagIndex() int {
	return 0
}

func (*UpdateShortSentMessage) ImplementsUpdates() {}

// Full constructor of updates
type UpdatesObj struct {
	Updates []Update // List of updates
	Users   []User   // List of users mentioned in updates
	Chats   []Chat   // List of chats mentioned in updates
	Date    int32    // Current date
	Seq     int32    // Total number of sent updates
}

func (*UpdatesObj) CRC() uint32 {
	return 0x74ae4240
}

func (*UpdatesObj) ImplementsUpdates() {}

// Constructor for a group of updates.
type UpdatesCombined struct {
	Updates  []Update // List of updates
	Users    []User   // List of users mentioned in updates
	Chats    []Chat   // List of chats mentioned in updates
	Date     int32    // Current date
	SeqStart int32    // Value seq for the earliest update in a group
	Seq      int32    // Value seq for the latest update in a group
}

func (*UpdatesCombined) CRC() uint32 {
	return 0x725b04c3
}

func (*UpdatesCombined) ImplementsUpdates() {}

// Too many updates, it is necessary to execute updates.getDifference.
type UpdatesTooLong struct{}

func (*UpdatesTooLong) CRC() uint32 {
	return 0xe317af7e
}

func (*UpdatesTooLong) ImplementsUpdates() {}

type URLAuthResult interface {
	tl.Object
	ImplementsURLAuthResult()
}

// Details about an accepted authorization request, for more info click here »
type URLAuthResultAccepted struct {
	URL string // The URL name of the website on which the user has logged in.
}

func (*URLAuthResultAccepted) CRC() uint32 {
	return 0x8f8c0e4e
}

func (*URLAuthResultAccepted) ImplementsURLAuthResult() {}

// Details about an accepted authorization request, for more info click here »
type URLAuthResultDefault struct{}

func (*URLAuthResultDefault) CRC() uint32 {
	return 0xa9d6db1f
}

func (*URLAuthResultDefault) ImplementsURLAuthResult() {}

// Details about the authorization request, for more info click here »
type URLAuthResultRequest struct {
	RequestWriteAccess bool   `tl:"flag:0,encoded_in_bitflags"` // Whether the bot would like to send messages to the user
	Bot                User   // Username of a bot, which will be used for user authorization. If not specified, the current bot's username will be assumed. The url's domain must be the same as the domain linked with the bot. See Linking your domain to the bot for more details.
	Domain             string // The domain name of the website on which the user will log in.
}

func (*URLAuthResultRequest) CRC() uint32 {
	return 0x92d33a0e
}

func (*URLAuthResultRequest) FlagIndex() int {
	return 0
}

func (*URLAuthResultRequest) ImplementsURLAuthResult() {}

type User interface {
	tl.Object
	ImplementsUser()
}

// Indicates info about a certain user.
type UserObj struct {
	Self                  bool `tl:"flag:10,encoded_in_bitflags"`
	Contact               bool `tl:"flag:11,encoded_in_bitflags"`
	MutualContact         bool `tl:"flag:12,encoded_in_bitflags"`
	Deleted               bool `tl:"flag:13,encoded_in_bitflags"`
	Bot                   bool `tl:"flag:14,encoded_in_bitflags"`
	BotChatHistory        bool `tl:"flag:15,encoded_in_bitflags"`
	BotNochats            bool `tl:"flag:16,encoded_in_bitflags"`
	Verified              bool `tl:"flag:17,encoded_in_bitflags"`
	Restricted            bool `tl:"flag:18,encoded_in_bitflags"`
	Min                   bool `tl:"flag:20,encoded_in_bitflags"`
	BotInlineGeo          bool `tl:"flag:21,encoded_in_bitflags"`
	Support               bool `tl:"flag:23,encoded_in_bitflags"`
	Scam                  bool `tl:"flag:24,encoded_in_bitflags"`
	ApplyMinPhoto         bool `tl:"flag:25,encoded_in_bitflags"`
	Fake                  bool `tl:"flag:26,encoded_in_bitflags"`
	BotAttachMenu         bool `tl:"flag:27,encoded_in_bitflags"`
	Premium               bool `tl:"flag:28,encoded_in_bitflags"`
	AttachMenuEnabled     bool `tl:"flag:29,encoded_in_bitflags"`
	BotCanEdit            bool `tl:"flag2:1,encoded_in_bitflags"`
	CloseFriend           bool `tl:"flag2:2,encoded_in_bitflags"`
	StoriesHidden         bool `tl:"flag2:3,encoded_in_bitflags"`
	StoriesUnavailable    bool `tl:"flag2:4,encoded_in_bitflags"`
	ContactRequirePremium bool `tl:"flag2:10,encoded_in_bitflags"`
	BotBusiness           bool `tl:"flag2:11,encoded_in_bitflags"`
	BotHasMainApp         bool `tl:"flag2:13,encoded_in_bitflags"`
	BotForumView          bool `tl:"flag2:16,encoded_in_bitflags"`
	ID                    int64
	AccessHash            int64                `tl:"flag:0"`
	FirstName             string               `tl:"flag:1"`
	LastName              string               `tl:"flag:2"`
	Username              string               `tl:"flag:3"`
	Phone                 string               `tl:"flag:4"`
	Photo                 UserProfilePhoto     `tl:"flag:5"`
	Status                UserStatus           `tl:"flag:6"`
	BotInfoVersion        int32                `tl:"flag:14"`
	RestrictionReason     []*RestrictionReason `tl:"flag:18"`
	BotInlinePlaceholder  string               `tl:"flag:19"`
	LangCode              string               `tl:"flag:22"`
	EmojiStatus           EmojiStatus          `tl:"flag:30"`
	Usernames             []*Username          `tl:"flag2:0"`
	StoriesMaxID          int32                `tl:"flag2:5"`
	Color                 PeerColor            `tl:"flag2:8"`
	ProfileColor          PeerColor            `tl:"flag2:9"`
	BotActiveUsers        int32                `tl:"flag2:12"`
	BotVerificationIcon   int64                `tl:"flag2:14"`
	SendPaidMessagesStars int64                `tl:"flag2:15"`
}

func (*UserObj) CRC() uint32 {
	return 0x20b1422
}

func (*UserObj) FlagIndex() int {
	return 19
}

func (*UserObj) ImplementsUser() {}

// Empty constructor, non-existent user.
type UserEmpty struct {
	ID int64 // User identifier or 0
}

func (*UserEmpty) CRC() uint32 {
	return 0xd3bc4b7a
}

func (*UserEmpty) ImplementsUser() {}

type UserProfilePhoto interface {
	tl.Object
	ImplementsUserProfilePhoto()
}

// User profile photo.
type UserProfilePhotoObj struct {
	HasVideo      bool   `tl:"flag:0,encoded_in_bitflags"` // Whether an animated profile picture is available for this user
	Personal      bool   `tl:"flag:2,encoded_in_bitflags"` // Whether this profile photo is only visible to us (i.e. it was set using photos.uploadContactProfilePhoto).
	PhotoID       int64  // Identifier of the respective photo
	StrippedThumb []byte `tl:"flag:1"` // Stripped thumbnail
	DcID          int32  // DC ID where the photo is stored
}

func (*UserProfilePhotoObj) CRC() uint32 {
	return 0x82d1f706
}

func (*UserProfilePhotoObj) FlagIndex() int {
	return 0
}

func (*UserProfilePhotoObj) ImplementsUserProfilePhoto() {}

// Profile photo has not been set, or was hidden.
type UserProfilePhotoEmpty struct{}

func (*UserProfilePhotoEmpty) CRC() uint32 {
	return 0x4f11bae1
}

func (*UserProfilePhotoEmpty) ImplementsUserProfilePhoto() {}

type UserStatus interface {
	tl.Object
	ImplementsUserStatus()
}

// User status has not been set yet.
type UserStatusEmpty struct{}

func (*UserStatusEmpty) CRC() uint32 {
	return 0x9d05049
}

func (*UserStatusEmpty) ImplementsUserStatus() {}

type UserStatusHidden struct{}

func (*UserStatusHidden) CRC() uint32 {
	return 0xcf7d64b1
}

func (*UserStatusHidden) ImplementsUserStatus() {}

// Online status: last seen last month
type UserStatusLastMonth struct {
	ByMe bool `tl:"flag:0,encoded_in_bitflags"` // If set, the exact user status of this user is actually available to us, but to view it we must first purchase a Premium subscription, or allow this user to see <em>our</em> exact last online status..
}

func (*UserStatusLastMonth) CRC() uint32 {
	return 0x65899777
}

func (*UserStatusLastMonth) FlagIndex() int {
	return 0
}

func (*UserStatusLastMonth) ImplementsUserStatus() {}

// Online status: last seen last week
type UserStatusLastWeek struct {
	ByMe bool `tl:"flag:0,encoded_in_bitflags"` // If set, the exact user status of this user is actually available to us, but to view it we must first purchase a Premium subscription, or allow this user to see <em>our</em> exact last online status..
}

func (*UserStatusLastWeek) CRC() uint32 {
	return 0x541a1d1a
}

func (*UserStatusLastWeek) FlagIndex() int {
	return 0
}

func (*UserStatusLastWeek) ImplementsUserStatus() {}

// The user's offline status.
type UserStatusOffline struct {
	WasOnline int32 // Time the user was last seen online
}

func (*UserStatusOffline) CRC() uint32 {
	return 0x8c703f
}

func (*UserStatusOffline) ImplementsUserStatus() {}

// Online status of the user.
type UserStatusOnline struct {
	Expires int32 // Time to expiration of the current online status
}

func (*UserStatusOnline) CRC() uint32 {
	return 0xedb93949
}

func (*UserStatusOnline) ImplementsUserStatus() {}

// Online status: last seen recently
type UserStatusRecently struct {
	ByMe bool `tl:"flag:0,encoded_in_bitflags"` // If set, the exact user status of this user is actually available to us, but to view it we must first purchase a Premium subscription, or allow this user to see <em>our</em> exact last online status..
}

func (*UserStatusRecently) CRC() uint32 {
	return 0x7b197dc8
}

func (*UserStatusRecently) FlagIndex() int {
	return 0
}

func (*UserStatusRecently) ImplementsUserStatus() {}

type VideoSize interface {
	tl.Object
	ImplementsVideoSize()
}

// An animated profile picture in MPEG4 format
type VideoSizeObj struct {
	Type         string  // u for animated profile pictures, and v for trimmed and downscaled video previews
	W            int32   // Video width
	H            int32   // Video height
	Size         int32   // File size
	VideoStartTs float64 `tl:"flag:0"` // Timestamp that should be shown as static preview to the user (seconds)
}

func (*VideoSizeObj) CRC() uint32 {
	return 0xde33b094
}

func (*VideoSizeObj) FlagIndex() int {
	return 0
}

func (*VideoSizeObj) ImplementsVideoSize() {}

// An animated profile picture based on a custom emoji sticker.
type VideoSizeEmojiMarkup struct {
	EmojiID          int64   // Custom emoji ID: the custom emoji sticker is shown at the center of the profile picture and occupies at most 67% of it.
	BackgroundColors []int32 // 1, 2, 3 or 4 RBG-24 colors used to generate a solid (1), gradient (2) or freeform gradient (3, 4) background, similar to how fill wallpapers are generated. The rotation angle for gradient backgrounds is 0.
}

func (*VideoSizeEmojiMarkup) CRC() uint32 {
	return 0xf85c413c
}

func (*VideoSizeEmojiMarkup) ImplementsVideoSize() {}

// An animated profile picture based on a sticker.
type VideoSizeStickerMarkup struct {
	Stickerset       InputStickerSet // Stickerset
	StickerID        int64           // Sticker ID
	BackgroundColors []int32         // 1, 2, 3 or 4 RBG-24 colors used to generate a solid (1), gradient (2) or freeform gradient (3, 4) background, similar to how fill wallpapers are generated. The rotation angle for gradient backgrounds is 0.
}

func (*VideoSizeStickerMarkup) CRC() uint32 {
	return 0xda082fe
}

func (*VideoSizeStickerMarkup) ImplementsVideoSize() {}

type WallPaper interface {
	tl.Object
	ImplementsWallPaper()
}

// Represents a wallpaper based on an image.
type WallPaperObj struct {
	ID         int64              // Identifier
	Creator    bool               `tl:"flag:0,encoded_in_bitflags"` // Whether we created this wallpaper
	Default    bool               `tl:"flag:1,encoded_in_bitflags"` // Whether this is the default wallpaper
	Pattern    bool               `tl:"flag:3,encoded_in_bitflags"` // Whether this is a pattern wallpaper
	Dark       bool               `tl:"flag:4,encoded_in_bitflags"` // Whether this wallpaper should be used in dark mode.
	AccessHash int64              // Access hash
	Slug       string             // Unique wallpaper ID, used when generating wallpaper links or importing wallpaper links.
	Document   Document           // The actual wallpaper
	Settings   *WallPaperSettings `tl:"flag:2"` // Info on how to generate the wallpaper, according to these instructions.
}

func (*WallPaperObj) CRC() uint32 {
	return 0xa437c3ed
}

func (*WallPaperObj) FlagIndex() int {
	return 1
}

func (*WallPaperObj) ImplementsWallPaper() {}

// Represents a wallpaper only based on colors/gradients.
type WallPaperNoFile struct {
	ID       int64              // Wallpaper ID
	Default  bool               `tl:"flag:1,encoded_in_bitflags"` // Whether this is the default wallpaper
	Dark     bool               `tl:"flag:4,encoded_in_bitflags"` // Whether this wallpaper should be used in dark mode.
	Settings *WallPaperSettings `tl:"flag:2"`                     // Info on how to generate the wallpaper.
}

func (*WallPaperNoFile) CRC() uint32 {
	return 0xe0804116
}

func (*WallPaperNoFile) FlagIndex() int {
	return 1
}

func (*WallPaperNoFile) ImplementsWallPaper() {}

type WebDocument interface {
	tl.Object
	ImplementsWebDocument()
}

// Remote document
type WebDocumentObj struct {
	URL        string              // Document URL
	AccessHash int64               // Access hash
	Size       int32               // File size
	MimeType   string              // MIME type
	Attributes []DocumentAttribute // Attributes for media types
}

func (*WebDocumentObj) CRC() uint32 {
	return 0x1c570ed1
}

func (*WebDocumentObj) ImplementsWebDocument() {}

// Remote document that can be downloaded without proxying through telegram
type WebDocumentNoProxy struct {
	URL        string              // Document URL
	Size       int32               // File size
	MimeType   string              // MIME type
	Attributes []DocumentAttribute // Attributes for media types
}

func (*WebDocumentNoProxy) CRC() uint32 {
	return 0xf9c8bcc6
}

func (*WebDocumentNoProxy) ImplementsWebDocument() {}

type WebPage interface {
	tl.Object
	ImplementsWebPage()
}

// Webpage preview
type WebPageObj struct {
	HasLargeMedia   bool   `tl:"flag:13,encoded_in_bitflags"` // Whether the size of the media in the preview can be changed.
	VideoCoverPhoto bool   `tl:"flag:14,encoded_in_bitflags"` // Represents a custom video cover.
	ID              int64  // Preview ID
	URL             string // URL of previewed webpage
	DisplayURL      string // Webpage URL to be displayed to the user
	Hash            int32  // Hash used for caching, for more info click here
	Type            string `tl:"flag:0"` /*
		Type of the web page. One of the following: <!-- start type -->

		- app
		- article
		- document
		- gif
		- photo
		- profile
		- telegram_album
		- telegram_background
		- telegram_bot
		- telegram_botapp
		- telegram_call
		- telegram_channel
		- telegram_channel_boost
		- telegram_channel_direct
		- telegram_channel_request
		- telegram_chat
		- telegram_chat_request
		- telegram_chatlist
		- telegram_collection
		- telegram_community
		- telegram_giftcode
		- telegram_group_boost
		- telegram_livestream
		- telegram_megagroup
		- telegram_megagroup_request
		- telegram_message
		- telegram_nft
		- telegram_stickerset
		- telegram_story
		- telegram_story_album
		- telegram_theme
		- telegram_user
		- telegram_videochat
		- telegram_voicechat
		- video

		<!-- end type -->
	*/
	SiteName    string             `tl:"flag:1"`  // Short name of the site (e.g., Google Docs, App Store)
	Title       string             `tl:"flag:2"`  // Title of the content
	Description string             `tl:"flag:3"`  // Content description
	Photo       Photo              `tl:"flag:4"`  // Image representing the content
	EmbedURL    string             `tl:"flag:5"`  // URL to show in the embedded preview
	EmbedType   string             `tl:"flag:5"`  // MIME type of the embedded preview, (e.g., text/html or video/mp4)
	EmbedWidth  int32              `tl:"flag:6"`  // Width of the embedded preview
	EmbedHeight int32              `tl:"flag:6"`  // Height of the embedded preview
	Duration    int32              `tl:"flag:7"`  // Duration of the content, in seconds
	Author      string             `tl:"flag:8"`  // Author of the content
	Document    Document           `tl:"flag:9"`  // Preview of the content as a media file
	CachedPage  *Page              `tl:"flag:10"` // Page contents in instant view format
	Attributes  []WebPageAttribute `tl:"flag:12"` // Webpage attributes
}

func (*WebPageObj) CRC() uint32 {
	return 0xe89c45b2
}

func (*WebPageObj) FlagIndex() int {
	return 0
}

func (*WebPageObj) ImplementsWebPage() {}

// No preview is available for the webpage
type WebPageEmpty struct {
	ID  int64  // Preview ID
	URL string `tl:"flag:0"` // URL of the webpage.
}

func (*WebPageEmpty) CRC() uint32 {
	return 0x211a1788
}

func (*WebPageEmpty) FlagIndex() int {
	return 0
}

func (*WebPageEmpty) ImplementsWebPage() {}

// The preview of the webpage hasn't changed
type WebPageNotModified struct {
	CachedPageViews int32 `tl:"flag:0"` // Page view count
}

func (*WebPageNotModified) CRC() uint32 {
	return 0x7311ca11
}

func (*WebPageNotModified) FlagIndex() int {
	return 0
}

func (*WebPageNotModified) ImplementsWebPage() {}

// A preview of the webpage is currently being generated
type WebPagePending struct {
	ID   int64  // ID of preview
	URL  string `tl:"flag:0"` // URL of the webpage
	Date int32  // When was the processing started
}

func (*WebPagePending) CRC() uint32 {
	return 0xb0d13e47
}

func (*WebPagePending) FlagIndex() int {
	return 0
}

func (*WebPagePending) ImplementsWebPage() {}

type WebPageURLPending struct {
	URL string
}

func (*WebPageURLPending) CRC() uint32 {
	return 0xd41a5167
}

func (*WebPageURLPending) ImplementsWebPage() {}

type WebPageAttribute interface {
	tl.Object
	ImplementsWebPageAttribute()
}

// Contains info about a gift collection » for a webPage preview of a gift collection » (the webPage will have a `type` of `telegram_collection`).
type WebPageAttributeStarGiftCollection struct {
	Icons []Document // Gifts in the collection.
}

func (*WebPageAttributeStarGiftCollection) CRC() uint32 {
	return 0x31cad303
}

func (*WebPageAttributeStarGiftCollection) ImplementsWebPageAttribute() {}

// Contains info about a stickerset », for a webPage preview of a stickerset deep link » (the webPage will have a `type` of `telegram_stickerset`).
type WebPageAttributeStickerSet struct {
	Emojis    bool       `tl:"flag:0,encoded_in_bitflags"` // Whether this i s a custom emoji stickerset.
	TextColor bool       `tl:"flag:1,encoded_in_bitflags"` // Whether the color of this TGS custom emoji stickerset should be changed to the text color when used in messages, the accent color if used as emoji status, white on chat photos, or another appropriate color based on context.
	Stickers  []Document // A subset of the stickerset in the stickerset.
}

func (*WebPageAttributeStickerSet) CRC() uint32 {
	return 0x50cc03d3
}

func (*WebPageAttributeStickerSet) FlagIndex() int {
	return 0
}

func (*WebPageAttributeStickerSet) ImplementsWebPageAttribute() {}

// Webpage preview of a Telegram story
type WebPageAttributeStory struct {
	Peer  Peer      // Peer that posted the story
	ID    int32     // Story ID
	Story StoryItem `tl:"flag:0"` // May contain the story, if not the story should be fetched when and if needed using stories.getStoriesByID with the above id and peer.
}

func (*WebPageAttributeStory) CRC() uint32 {
	return 0x2e94c3e7
}

func (*WebPageAttributeStory) FlagIndex() int {
	return 0
}

func (*WebPageAttributeStory) ImplementsWebPageAttribute() {}

// Page theme
type WebPageAttributeTheme struct {
	Documents []Document     `tl:"flag:0"` // Theme files
	Settings  *ThemeSettings `tl:"flag:1"` // Theme settings
}

func (*WebPageAttributeTheme) CRC() uint32 {
	return 0x54b56617
}

func (*WebPageAttributeTheme) FlagIndex() int {
	return 0
}

func (*WebPageAttributeTheme) ImplementsWebPageAttribute() {}

// Contains info about collectible gift » for a webPage preview of a collectible gift » (the webPage will have a `type` of `telegram_nft`).
type WebPageAttributeUniqueStarGift struct {
	Gift StarGift // The starGiftUnique constructor.
}

func (*WebPageAttributeUniqueStarGift) CRC() uint32 {
	return 0xcf6f6db8
}

func (*WebPageAttributeUniqueStarGift) ImplementsWebPageAttribute() {}

type AccountEmailVerified interface {
	tl.Object
	ImplementsAccountEmailVerified()
}

// The email was verified correctly.
type AccountEmailVerifiedObj struct {
	Email string // The verified email address.
}

func (*AccountEmailVerifiedObj) CRC() uint32 {
	return 0x2b96cd1b
}

func (*AccountEmailVerifiedObj) ImplementsAccountEmailVerified() {}

// The email was verified correctly, and a login code was just sent to it.
type AccountEmailVerifiedLogin struct {
	Email    string       // The verified email address.
	SentCode AuthSentCode // Info about the sent login code
}

func (*AccountEmailVerifiedLogin) CRC() uint32 {
	return 0xe1bb0d61
}

func (*AccountEmailVerifiedLogin) ImplementsAccountEmailVerified() {}

type AccountEmojiStatuses interface {
	tl.Object
	ImplementsAccountEmojiStatuses()
}

// A list of emoji statuses
type AccountEmojiStatusesObj struct {
	Hash     int64         // Hash used for caching, for more info click here
	Statuses []EmojiStatus // Emoji statuses
}

func (*AccountEmojiStatusesObj) CRC() uint32 {
	return 0x90c467d1
}

func (*AccountEmojiStatusesObj) ImplementsAccountEmojiStatuses() {}

// The server-side list of emoji statuses hasn't changed
type AccountEmojiStatusesNotModified struct{}

func (*AccountEmojiStatusesNotModified) CRC() uint32 {
	return 0xd08ce645
}

func (*AccountEmojiStatusesNotModified) ImplementsAccountEmojiStatuses() {}

type AccountResetPasswordResult interface {
	tl.Object
	ImplementsAccountResetPasswordResult()
}

// You recently requested a password reset that was canceled, please wait until the specified date before requesting another reset.
type AccountResetPasswordFailedWait struct {
	RetryDate int32 // Wait until this date before requesting another reset.
}

func (*AccountResetPasswordFailedWait) CRC() uint32 {
	return 0xe3779861
}

func (*AccountResetPasswordFailedWait) ImplementsAccountResetPasswordResult() {}

// The 2FA password was reset successfully.
type AccountResetPasswordOk struct{}

func (*AccountResetPasswordOk) CRC() uint32 {
	return 0xe926d63e
}

func (*AccountResetPasswordOk) ImplementsAccountResetPasswordResult() {}

// You successfully requested a password reset, please wait until the specified date before finalizing the reset.
type AccountResetPasswordRequestedWait struct {
	UntilDate int32 // Wait until this date before finalizing the reset.
}

func (*AccountResetPasswordRequestedWait) CRC() uint32 {
	return 0xe9effc7d
}

func (*AccountResetPasswordRequestedWait) ImplementsAccountResetPasswordResult() {}

type AccountSavedMusicIds interface {
	tl.Object
	ImplementsAccountSavedMusicIds()
}

// List of IDs of songs (document.`id`s) currently pinned on our profile, see here » for more info.
type AccountSavedMusicIdsObj struct {
	Ids []int64 // Full list of document.ids
}

func (*AccountSavedMusicIdsObj) CRC() uint32 {
	return 0x998d6636
}

func (*AccountSavedMusicIdsObj) ImplementsAccountSavedMusicIds() {}

// The list of IDs of songs (document.`id`s) currently pinned on our profile hasn't changed.
type AccountSavedMusicIdsNotModified struct{}

func (*AccountSavedMusicIdsNotModified) CRC() uint32 {
	return 0x4fc81d6e
}

func (*AccountSavedMusicIdsNotModified) ImplementsAccountSavedMusicIds() {}

type AccountSavedRingtone interface {
	tl.Object
	ImplementsAccountSavedRingtone()
}

// The notification sound was already in MP3 format and was saved without any modification
type AccountSavedRingtoneObj struct{}

func (*AccountSavedRingtoneObj) CRC() uint32 {
	return 0xb7263f6d
}

func (*AccountSavedRingtoneObj) ImplementsAccountSavedRingtone() {}

// The notification sound was not in MP3 format and was successfully converted and saved, use the returned Document to refer to the notification sound from now on
type AccountSavedRingtoneConverted struct {
	Document Document // The converted notification sound
}

func (*AccountSavedRingtoneConverted) CRC() uint32 {
	return 0x1f307eb7
}

func (*AccountSavedRingtoneConverted) ImplementsAccountSavedRingtone() {}

type AccountSavedRingtones interface {
	tl.Object
	ImplementsAccountSavedRingtones()
}

// A list of saved notification sounds
type AccountSavedRingtonesObj struct {
	Hash      int64      // Hash used for caching, for more info click here
	Ringtones []Document // Saved notification sounds
}

func (*AccountSavedRingtonesObj) CRC() uint32 {
	return 0xc1e92cc5
}

func (*AccountSavedRingtonesObj) ImplementsAccountSavedRingtones() {}

// The notification sound list hasn't changed.
type AccountSavedRingtonesNotModified struct{}

func (*AccountSavedRingtonesNotModified) CRC() uint32 {
	return 0xfbf6e8b1
}

func (*AccountSavedRingtonesNotModified) ImplementsAccountSavedRingtones() {}

type AccountThemes interface {
	tl.Object
	ImplementsAccountThemes()
}

// Installed themes
type AccountThemesObj struct {
	Hash   int64    // Hash used for caching, for more info click here
	Themes []*Theme // Themes
}

func (*AccountThemesObj) CRC() uint32 {
	return 0x9a3d8c6d
}

func (*AccountThemesObj) ImplementsAccountThemes() {}

// No new themes were installed
type AccountThemesNotModified struct{}

func (*AccountThemesNotModified) CRC() uint32 {
	return 0xf41eb622
}

func (*AccountThemesNotModified) ImplementsAccountThemes() {}

type AccountWallPapers interface {
	tl.Object
	ImplementsAccountWallPapers()
}

// Installed wallpapers
type AccountWallPapersObj struct {
	Hash       int64       // Hash used for caching, for more info click here
	Wallpapers []WallPaper // Wallpapers
}

func (*AccountWallPapersObj) CRC() uint32 {
	return 0xcdc3858c
}

func (*AccountWallPapersObj) ImplementsAccountWallPapers() {}

// No new wallpapers were found
type AccountWallPapersNotModified struct{}

func (*AccountWallPapersNotModified) CRC() uint32 {
	return 0x1c199183
}

func (*AccountWallPapersNotModified) ImplementsAccountWallPapers() {}

type AuthAuthorization interface {
	tl.Object
	ImplementsAuthAuthorization()
}

// Contains user authorization info.
type AuthAuthorizationObj struct {
	SetupPasswordRequired bool   `tl:"flag:1,encoded_in_bitflags"` // Suggests the user to set up a 2-step verification password to be able to log in again
	OtherwiseReloginDays  int32  `tl:"flag:1"`                     // If and only if setup_password_required is set and the user declines to set a 2-step verification password, they will be able to log into their account via SMS again only after this many days pass.
	TmpSessions           int32  `tl:"flag:0"`                     // Temporary passport sessions
	FutureAuthToken       []byte `tl:"flag:2"`                     // A future auth token
	User                  User   // Info on authorized user
}

func (*AuthAuthorizationObj) CRC() uint32 {
	return 0x2ea2c0d4
}

func (*AuthAuthorizationObj) FlagIndex() int {
	return 0
}

func (*AuthAuthorizationObj) ImplementsAuthAuthorization() {}

// An account with this phone number doesn't exist on telegram: the user has to enter basic information and sign up
type AuthAuthorizationSignUpRequired struct {
	TermsOfService *HelpTermsOfService `tl:"flag:0"` // Telegram's terms of service: the user must read and accept the terms of service before signing up to telegram
}

func (*AuthAuthorizationSignUpRequired) CRC() uint32 {
	return 0x44747e9a
}

func (*AuthAuthorizationSignUpRequired) FlagIndex() int {
	return 0
}

func (*AuthAuthorizationSignUpRequired) ImplementsAuthAuthorization() {}

type AuthLoginToken interface {
	tl.Object
	ImplementsAuthLoginToken()
}

// Login token (for QR code login)
type AuthLoginTokenObj struct {
	Expires int32  // Expiration date of QR code
	Token   []byte // Token to render in QR code
}

func (*AuthLoginTokenObj) CRC() uint32 {
	return 0x629f1980
}

func (*AuthLoginTokenObj) ImplementsAuthLoginToken() {}

// Repeat the query to the specified DC
type AuthLoginTokenMigrateTo struct {
	DcID  int32  // DC ID
	Token []byte // Token to use for login
}

func (*AuthLoginTokenMigrateTo) CRC() uint32 {
	return 0x68e9916
}

func (*AuthLoginTokenMigrateTo) ImplementsAuthLoginToken() {}

// Login via token (QR code) succeeded!
type AuthLoginTokenSuccess struct {
	Authorization AuthAuthorization // Authorization info
}

func (*AuthLoginTokenSuccess) CRC() uint32 {
	return 0x390d5c5e
}

func (*AuthLoginTokenSuccess) ImplementsAuthLoginToken() {}

type AuthSentCode interface {
	tl.Object
	ImplementsAuthSentCode()
}

// Contains info about a sent verification code.
type AuthSentCodeObj struct {
	Type          AuthSentCodeType // Phone code type
	PhoneCodeHash string           // Phone code hash, to be stored and later re-used with auth.signIn
	NextType      AuthCodeType     `tl:"flag:1"` // Phone code type that will be sent next, if the phone code is not received within timeout seconds: to send it use auth.resendCode
	Timeout       int32            `tl:"flag:2"` // Timeout for reception of the phone code
}

func (*AuthSentCodeObj) CRC() uint32 {
	return 0x5e002502
}

func (*AuthSentCodeObj) FlagIndex() int {
	return 0
}

func (*AuthSentCodeObj) ImplementsAuthSentCode() {}

// Official apps may receive this constructor, indicating that due to the high cost of SMS verification codes for the user's country/provider, the user must purchase a Telegram Premium subscription in order to proceed with the login/signup.
type AuthSentCodePaymentRequired struct {
	StoreProduct        string
	PhoneCodeHash       string
	SupportEmailAddress string
	SupportEmailSubject string
	Currency            string
	Amount              int64
}

func (*AuthSentCodePaymentRequired) CRC() uint32 {
	return 0xe0955a3c
}

func (*AuthSentCodePaymentRequired) ImplementsAuthSentCode() {}

// The user successfully authorized using future auth tokens
type AuthSentCodeSuccess struct {
	Authorization AuthAuthorization // Authorization info
}

func (*AuthSentCodeSuccess) CRC() uint32 {
	return 0x2390fe44
}

func (*AuthSentCodeSuccess) ImplementsAuthSentCode() {}

type AuthSentCodeType interface {
	tl.Object
	ImplementsAuthSentCodeType()
}

// The code was sent through the telegram app
type AuthSentCodeTypeApp struct {
	Length int32 // Length of the code in bytes
}

func (*AuthSentCodeTypeApp) CRC() uint32 {
	return 0x3dbb5986
}

func (*AuthSentCodeTypeApp) ImplementsAuthSentCodeType() {}

// The code will be sent via a phone call: a synthesized voice will tell the user which verification code to input.
type AuthSentCodeTypeCall struct {
	Length int32 // Length of the verification code
}

func (*AuthSentCodeTypeCall) CRC() uint32 {
	return 0x5353e5a7
}

func (*AuthSentCodeTypeCall) ImplementsAuthSentCodeType() {}

// The code was sent via the previously configured login email »
type AuthSentCodeTypeEmailCode struct {
	AppleSigninAllowed   bool   `tl:"flag:0,encoded_in_bitflags"` // Whether authorization through Apple ID is allowed
	GoogleSigninAllowed  bool   `tl:"flag:1,encoded_in_bitflags"` // Whether authorization through Google ID is allowed
	EmailPattern         string // Pattern of the email
	Length               int32  // Length of the sent verification code
	ResetAvailablePeriod int32  `tl:"flag:3"` // Clients should wait for the specified amount of seconds before allowing the user to invoke auth.resetLoginEmail (will be 0 for Premium users).
	ResetPendingDate     int32  `tl:"flag:4"` // An email reset was already requested, and will occur at the specified date.
}

func (*AuthSentCodeTypeEmailCode) CRC() uint32 {
	return 0xf450f59b
}

func (*AuthSentCodeTypeEmailCode) FlagIndex() int {
	return 0
}

func (*AuthSentCodeTypeEmailCode) ImplementsAuthSentCodeType() {}

// An authentication code should be delivered via SMS after Firebase attestation, as described in the auth documentation ».
type AuthSentCodeTypeFirebaseSms struct {
	Nonce                  []byte `tl:"flag:0"` // On Android, the nonce to be used as described in the auth documentation
	PlayIntegrityProjectID int64  `tl:"flag:2"` // Google Play Integrity project ID
	PlayIntegrityNonce     []byte `tl:"flag:2"` // Play Integrity API nonce
	Receipt                string `tl:"flag:1"` // On iOS, must be compared with the receipt extracted from the received push notification.
	PushTimeout            int32  `tl:"flag:1"` // On iOS: if a push notification with the ios_push_secret isn't received within push_timeout seconds, the next_type authentication method must be used, with auth.resendCode.
	Length                 int32  // Length of the code that will be delivered.
}

func (*AuthSentCodeTypeFirebaseSms) CRC() uint32 {
	return 0x9fd736
}

func (*AuthSentCodeTypeFirebaseSms) FlagIndex() int {
	return 0
}

func (*AuthSentCodeTypeFirebaseSms) ImplementsAuthSentCodeType() {}

// The code will be sent via a flash phone call, that will be closed immediately. The phone code will then be the phone number itself, just make sure that the phone number matches the specified pattern.
type AuthSentCodeTypeFlashCall struct {
	Pattern string // pattern to match
}

func (*AuthSentCodeTypeFlashCall) CRC() uint32 {
	return 0xab03c6d9
}

func (*AuthSentCodeTypeFlashCall) ImplementsAuthSentCodeType() {}

// The code was delivered via fragment.com.
type AuthSentCodeTypeFragmentSms struct {
	URL    string // Open the specified URL to log into fragment.com with the wallet that owns the specified phone number and view the code.
	Length int32  // Length of the delivered code.
}

func (*AuthSentCodeTypeFragmentSms) CRC() uint32 {
	return 0xd9565c39
}

func (*AuthSentCodeTypeFragmentSms) ImplementsAuthSentCodeType() {}

// The code will be sent via a flash phone call, that will be closed immediately. The last digits of the phone number that calls are the code that must be entered manually by the user.
type AuthSentCodeTypeMissedCall struct {
	Prefix string // Prefix of the phone number from which the call will be made
	Length int32  // Length of the verification code
}

func (*AuthSentCodeTypeMissedCall) CRC() uint32 {
	return 0x82006484
}

func (*AuthSentCodeTypeMissedCall) ImplementsAuthSentCodeType() {}

// The user should add and verify an email address in order to login as described here ».
type AuthSentCodeTypeSetUpEmailRequired struct {
	AppleSigninAllowed  bool `tl:"flag:0,encoded_in_bitflags"` // Whether authorization through Apple ID is allowed
	GoogleSigninAllowed bool `tl:"flag:1,encoded_in_bitflags"` // Whether authorization through Google ID is allowed
}

func (*AuthSentCodeTypeSetUpEmailRequired) CRC() uint32 {
	return 0xa5491dea
}

func (*AuthSentCodeTypeSetUpEmailRequired) FlagIndex() int {
	return 0
}

func (*AuthSentCodeTypeSetUpEmailRequired) ImplementsAuthSentCodeType() {}

// The code was sent via SMS
type AuthSentCodeTypeSms struct {
	Length int32 // Length of the code in bytes
}

func (*AuthSentCodeTypeSms) CRC() uint32 {
	return 0xc000bba2
}

func (*AuthSentCodeTypeSms) ImplementsAuthSentCodeType() {}

// The code was sent via SMS as a secret phrase starting with the word specified in `beginning`
type AuthSentCodeTypeSmsPhrase struct {
	Beginning string `tl:"flag:0"` // If set, the secret phrase (and the SMS) starts with this word.
}

func (*AuthSentCodeTypeSmsPhrase) CRC() uint32 {
	return 0xb37794af
}

func (*AuthSentCodeTypeSmsPhrase) FlagIndex() int {
	return 0
}

func (*AuthSentCodeTypeSmsPhrase) ImplementsAuthSentCodeType() {}

// The code was sent via SMS as a secret word, starting with the letter specified in `beginning`
type AuthSentCodeTypeSmsWord struct {
	Beginning string `tl:"flag:0"` // If set, the secret word in the sent SMS (which may contain multiple words) starts with this letter.
}

func (*AuthSentCodeTypeSmsWord) CRC() uint32 {
	return 0xa416ac81
}

func (*AuthSentCodeTypeSmsWord) FlagIndex() int {
	return 0
}

func (*AuthSentCodeTypeSmsWord) ImplementsAuthSentCodeType() {}

type ChannelsChannelParticipants interface {
	tl.Object
	ImplementsChannelsChannelParticipants()
}

// Represents multiple channel participants
type ChannelsChannelParticipantsObj struct {
	Count        int32                // Total number of participants that correspond to the given query
	Participants []ChannelParticipant // Participants
	Chats        []Chat               // Mentioned chats
	Users        []User               // Users mentioned in participant info
}

func (*ChannelsChannelParticipantsObj) CRC() uint32 {
	return 0x9ab0feaf
}

func (*ChannelsChannelParticipantsObj) ImplementsChannelsChannelParticipants() {}

// No new participant info could be found
type ChannelsChannelParticipantsNotModified struct{}

func (*ChannelsChannelParticipantsNotModified) CRC() uint32 {
	return 0xf0173fe9
}

func (*ChannelsChannelParticipantsNotModified) ImplementsChannelsChannelParticipants() {}

type ChannelsSponsoredMessageReportResult interface {
	tl.Object
	ImplementsChannelsSponsoredMessageReportResult()
}

// Sponsored messages were hidden for the user in all chats.
type ChannelsSponsoredMessageReportResultAdsHidden struct{}

func (*ChannelsSponsoredMessageReportResultAdsHidden) CRC() uint32 {
	return 0x3e3bcf2f
}

func (*ChannelsSponsoredMessageReportResultAdsHidden) ImplementsChannelsSponsoredMessageReportResult() {
}

// The user must choose a report option from the localized options available in `options`, and after selection, channels.reportSponsoredMessage must be invoked again, passing the option's `option` field to the `option` param of the method.
type ChannelsSponsoredMessageReportResultChooseOption struct {
	Title   string                          // Title of the option selection popup.
	Options []*SponsoredMessageReportOption // Localized list of options.
}

func (*ChannelsSponsoredMessageReportResultChooseOption) CRC() uint32 {
	return 0x846f9e42
}

func (*ChannelsSponsoredMessageReportResultChooseOption) ImplementsChannelsSponsoredMessageReportResult() {
}

// The sponsored message was reported successfully.
type ChannelsSponsoredMessageReportResultReported struct{}

func (*ChannelsSponsoredMessageReportResultReported) CRC() uint32 {
	return 0xad798849
}

func (*ChannelsSponsoredMessageReportResultReported) ImplementsChannelsSponsoredMessageReportResult() {
}

type ChatlistsChatlistInvite interface {
	tl.Object
	ImplementsChatlistsChatlistInvite()
}

// Info about a chat folder deep link ».
type ChatlistsChatlistInviteObj struct {
	TitleNoanimate bool              `tl:"flag:1,encoded_in_bitflags"` // If set, any animated emojis present in title should not be animated and should be instead frozen on the first frame.
	Title          *TextWithEntities // Name of the link
	Emoticon       string            `tl:"flag:0"` // Emoji to use as icon for the folder.
	Peers          []Peer            // Supergroups and channels to join
	Chats          []Chat            // Related chat information
	Users          []User            // Related user information
}

func (*ChatlistsChatlistInviteObj) CRC() uint32 {
	return 0xf10ece2f
}

func (*ChatlistsChatlistInviteObj) FlagIndex() int {
	return 0
}

func (*ChatlistsChatlistInviteObj) ImplementsChatlistsChatlistInvite() {}

// Updated info about a chat folder deep link » we already imported.
type ChatlistsChatlistInviteAlready struct {
	FilterID     int32  // ID of the imported folder
	MissingPeers []Peer // New peers to be imported
	AlreadyPeers []Peer // Peers that were already imported
	Chats        []Chat // Related chat information
	Users        []User // Related user information
}

func (*ChatlistsChatlistInviteAlready) CRC() uint32 {
	return 0xfa87f659
}

func (*ChatlistsChatlistInviteAlready) ImplementsChatlistsChatlistInvite() {}

type ContactsBlocked interface {
	tl.Object
	ImplementsContactsBlocked()
}

// Full list of blocked users.
type ContactsBlockedObj struct {
	Blocked []*PeerBlocked // List of blocked users
	Chats   []Chat         // Blocked chats
	Users   []User         // List of users
}

func (*ContactsBlockedObj) CRC() uint32 {
	return 0xade1591
}

func (*ContactsBlockedObj) ImplementsContactsBlocked() {}

// Incomplete list of blocked users.
type ContactsBlockedSlice struct {
	Count   int32          // Total number of elements in the list
	Blocked []*PeerBlocked // List of blocked users
	Chats   []Chat         // Blocked chats
	Users   []User         // List of users
}

func (*ContactsBlockedSlice) CRC() uint32 {
	return 0xe1664194
}

func (*ContactsBlockedSlice) ImplementsContactsBlocked() {}

type ContactsContacts interface {
	tl.Object
	ImplementsContactsContacts()
}

// The current user's contact list and info on users.
type ContactsContactsObj struct {
	Contacts   []*Contact // Contact list
	SavedCount int32      // Number of contacts that were saved successfully
	Users      []User     // User list
}

func (*ContactsContactsObj) CRC() uint32 {
	return 0xeae87e42
}

func (*ContactsContactsObj) ImplementsContactsContacts() {}

// Contact list on the server is the same as the list on the client.
type ContactsContactsNotModified struct{}

func (*ContactsContactsNotModified) CRC() uint32 {
	return 0xb74ba9d2
}

func (*ContactsContactsNotModified) ImplementsContactsContacts() {}

type ContactsSponsoredPeers interface {
	tl.Object
	ImplementsContactsSponsoredPeers()
}

// Sponsored peers.
type ContactsSponsoredPeersObj struct {
	Peers []*SponsoredPeer // Sponsored peers.
	Chats []Chat           // Info about sponsored chats and channels
	Users []User           // Info about sponsored users
}

func (*ContactsSponsoredPeersObj) CRC() uint32 {
	return 0xeb032884
}

func (*ContactsSponsoredPeersObj) ImplementsContactsSponsoredPeers() {}

// There are no sponsored peers for this query.
type ContactsSponsoredPeersEmpty struct{}

func (*ContactsSponsoredPeersEmpty) CRC() uint32 {
	return 0xea32b4b1
}

func (*ContactsSponsoredPeersEmpty) ImplementsContactsSponsoredPeers() {}

type ContactsTopPeers interface {
	tl.Object
	ImplementsContactsTopPeers()
}

// Top peers
type ContactsTopPeersObj struct {
	Categories []*TopPeerCategoryPeers // Top peers by top peer category
	Chats      []Chat                  // Chats
	Users      []User                  // Users
}

func (*ContactsTopPeersObj) CRC() uint32 {
	return 0x70b772a8
}

func (*ContactsTopPeersObj) ImplementsContactsTopPeers() {}

// Top peers disabled
type ContactsTopPeersDisabled struct{}

func (*ContactsTopPeersDisabled) CRC() uint32 {
	return 0xb52c939d
}

func (*ContactsTopPeersDisabled) ImplementsContactsTopPeers() {}

// Top peer info hasn't changed
type ContactsTopPeersNotModified struct{}

func (*ContactsTopPeersNotModified) CRC() uint32 {
	return 0xde266ef5
}

func (*ContactsTopPeersNotModified) ImplementsContactsTopPeers() {}

type HelpAppConfig interface {
	tl.Object
	ImplementsHelpAppConfig()
}

// Contains various client configuration parameters
type HelpAppConfigObj struct {
	Hash   int32     // Hash used for caching, for more info click here
	Config JsonValue // Client configuration parameters
}

func (*HelpAppConfigObj) CRC() uint32 {
	return 0xdd18782e
}

func (*HelpAppConfigObj) ImplementsHelpAppConfig() {}

// The client configuration parameters haven't changed
type HelpAppConfigNotModified struct{}

func (*HelpAppConfigNotModified) CRC() uint32 {
	return 0x7cde641d
}

func (*HelpAppConfigNotModified) ImplementsHelpAppConfig() {}

type HelpAppUpdate interface {
	tl.Object
	ImplementsHelpAppUpdate()
}

// An update is available for the application.
type HelpAppUpdateObj struct {
	CanNotSkip bool            `tl:"flag:0,encoded_in_bitflags"` // Unskippable, the new info must be shown to the user (with a popup or something else)
	ID         int32           // Update ID
	Version    string          // New version name
	Text       string          // Text description of the update
	Entities   []MessageEntity // Message entities for styled text
	Document   Document        `tl:"flag:1"` // Application binary
	URL        string          `tl:"flag:2"` // Application download URL
	Sticker    Document        `tl:"flag:3"` // Associated sticker
}

func (*HelpAppUpdateObj) CRC() uint32 {
	return 0xccbbce30
}

func (*HelpAppUpdateObj) FlagIndex() int {
	return 0
}

func (*HelpAppUpdateObj) ImplementsHelpAppUpdate() {}

// No updates are available for the application.
type HelpNoAppUpdate struct{}

func (*HelpNoAppUpdate) CRC() uint32 {
	return 0xc45a6536
}

func (*HelpNoAppUpdate) ImplementsHelpAppUpdate() {}

type HelpCountriesList interface {
	tl.Object
	ImplementsHelpCountriesList()
}

// Name, ISO code, localized name and phone codes/patterns of all available countries
type HelpCountriesListObj struct {
	Countries []*HelpCountry // Name, ISO code, localized name and phone codes/patterns of all available countries
	Hash      int32          // Hash used for caching, for more info click here
}

func (*HelpCountriesListObj) CRC() uint32 {
	return 0x87d0759e
}

func (*HelpCountriesListObj) ImplementsHelpCountriesList() {}

// The country list has not changed
type HelpCountriesListNotModified struct{}

func (*HelpCountriesListNotModified) CRC() uint32 {
	return 0x93cc1f32
}

func (*HelpCountriesListNotModified) ImplementsHelpCountriesList() {}

type HelpDeepLinkInfo interface {
	tl.Object
	ImplementsHelpDeepLinkInfo()
}

// Deep link info, see the here for more details
type HelpDeepLinkInfoObj struct {
	UpdateApp bool            `tl:"flag:0,encoded_in_bitflags"` // An update of the app is required to parse this link
	Message   string          // Message to show to the user
	Entities  []MessageEntity `tl:"flag:1"` // Message entities for styled text
}

func (*HelpDeepLinkInfoObj) CRC() uint32 {
	return 0x6a4ee832
}

func (*HelpDeepLinkInfoObj) FlagIndex() int {
	return 0
}

func (*HelpDeepLinkInfoObj) ImplementsHelpDeepLinkInfo() {}

// Deep link info empty
type HelpDeepLinkInfoEmpty struct{}

func (*HelpDeepLinkInfoEmpty) CRC() uint32 {
	return 0x66afa166
}

func (*HelpDeepLinkInfoEmpty) ImplementsHelpDeepLinkInfo() {}

type HelpPassportConfig interface {
	tl.Object
	ImplementsHelpPassportConfig()
}

// Telegram passport configuration
type HelpPassportConfigObj struct {
	Hash           int32     // Hash used for caching, for more info click here
	CountriesLangs *DataJson // Localization
}

func (*HelpPassportConfigObj) CRC() uint32 {
	return 0xa098d6af
}

func (*HelpPassportConfigObj) ImplementsHelpPassportConfig() {}

// Password configuration not modified
type HelpPassportConfigNotModified struct{}

func (*HelpPassportConfigNotModified) CRC() uint32 {
	return 0xbfb9f457
}

func (*HelpPassportConfigNotModified) ImplementsHelpPassportConfig() {}

type HelpPeerColorSet interface {
	tl.Object
	ImplementsHelpPeerColorSet()
}

// Represents a color palette that can be used in profile pages ».
type HelpPeerColorProfileSet struct {
	PaletteColors []int32 // A list of 1-2 colors in RGB format, shown in the color palette settings to describe the current palette.
	BgColors      []int32 // A list of 1-2 colors in RGB format describing the colors used to generate the actual background used in the profile page.
	StoryColors   []int32 // A list of 2 colors in RGB format describing the colors of the gradient used for the unread active story indicator around the profile photo.
}

func (*HelpPeerColorProfileSet) CRC() uint32 {
	return 0x767d61eb
}

func (*HelpPeerColorProfileSet) ImplementsHelpPeerColorSet() {}

// Represents a color palette that can be used in message accents ».
type HelpPeerColorSetObj struct {
	Colors []int32 // A list of 1-3 colors in RGB format, describing the accent color.
}

func (*HelpPeerColorSetObj) CRC() uint32 {
	return 0x26219a58
}

func (*HelpPeerColorSetObj) ImplementsHelpPeerColorSet() {}

type HelpPeerColors interface {
	tl.Object
	ImplementsHelpPeerColors()
}

// Contains info about multiple color palettes ».
type HelpPeerColorsObj struct {
	Hash   int32                  // Hash used for caching, for more info click here
	Colors []*HelpPeerColorOption // Usable color palettes.
}

func (*HelpPeerColorsObj) CRC() uint32 {
	return 0xf8ed08
}

func (*HelpPeerColorsObj) ImplementsHelpPeerColors() {}

// The list of color palettes has not changed.
type HelpPeerColorsNotModified struct{}

func (*HelpPeerColorsNotModified) CRC() uint32 {
	return 0x2ba1f5ce
}

func (*HelpPeerColorsNotModified) ImplementsHelpPeerColors() {}

type HelpPromoData interface {
	tl.Object
	ImplementsHelpPromoData()
}

// A set of useful suggestions and a PSA/MTProxy sponsored peer, see here » for more info.
type HelpPromoDataObj struct {
	Proxy                   bool               `tl:"flag:0,encoded_in_bitflags"` // Set when connecting using an MTProxy that has configured an associated peer (that will be passed in peer, i.e. the channel that sponsored the MTProxy) that should be pinned on top of the chat list.
	Expires                 int32              // Unixtime when to re-invoke help.getPromoData.
	Peer                    Peer               `tl:"flag:3"` // MTProxy/PSA peer
	PsaType                 string             `tl:"flag:1"` // For Public Service Announcement peers, indicates the type of the PSA.
	PsaMessage              string             `tl:"flag:2"` // For Public Service Announcement peers, contains the PSA itself.
	PendingSuggestions      []string           // Contains a list of pending suggestions.
	DismissedSuggestions    []string           // Contains a list of inverted suggestions.
	CustomPendingSuggestion *PendingSuggestion `tl:"flag:4"` // Contains a list of custom pending suggestions.
	Chats                   []Chat             // Chat info
	Users                   []User             // User info
}

func (*HelpPromoDataObj) CRC() uint32 {
	return 0x8a4d87a
}

func (*HelpPromoDataObj) FlagIndex() int {
	return 0
}

func (*HelpPromoDataObj) ImplementsHelpPromoData() {}

// No PSA/MTProxy info is available
type HelpPromoDataEmpty struct {
	Expires int32 // Re-fetch PSA/MTProxy info after the specified number of seconds
}

func (*HelpPromoDataEmpty) CRC() uint32 {
	return 0x98f6ac75
}

func (*HelpPromoDataEmpty) ImplementsHelpPromoData() {}

type HelpTermsOfServiceUpdate interface {
	tl.Object
	ImplementsHelpTermsOfServiceUpdate()
}

// Info about an update of telegram's terms of service. If the terms of service are declined, then the account.deleteAccount method should be called with the reason "Decline ToS update"
type HelpTermsOfServiceUpdateObj struct {
	Expires        int32               // New TOS updates will have to be queried using help.getTermsOfServiceUpdate in expires seconds
	TermsOfService *HelpTermsOfService // New terms of service
}

func (*HelpTermsOfServiceUpdateObj) CRC() uint32 {
	return 0x28ecf961
}

func (*HelpTermsOfServiceUpdateObj) ImplementsHelpTermsOfServiceUpdate() {}

// No changes were made to telegram's terms of service
type HelpTermsOfServiceUpdateEmpty struct {
	Expires int32 // New TOS updates will have to be queried using help.getTermsOfServiceUpdate in expires seconds
}

func (*HelpTermsOfServiceUpdateEmpty) CRC() uint32 {
	return 0xe3309f7f
}

func (*HelpTermsOfServiceUpdateEmpty) ImplementsHelpTermsOfServiceUpdate() {}

type HelpTimezonesList interface {
	tl.Object
	ImplementsHelpTimezonesList()
}

// Timezone information that may be used elsewhere in the API, such as to set Telegram Business opening hours ».
type HelpTimezonesListObj struct {
	Timezones []*Timezone // Timezones
	Hash      int32       // Hash used for caching, for more info click here
}

func (*HelpTimezonesListObj) CRC() uint32 {
	return 0x7b74ed71
}

func (*HelpTimezonesListObj) ImplementsHelpTimezonesList() {}

// The timezone list has not changed.
type HelpTimezonesListNotModified struct{}

func (*HelpTimezonesListNotModified) CRC() uint32 {
	return 0x970708cc
}

func (*HelpTimezonesListNotModified) ImplementsHelpTimezonesList() {}

type HelpUserInfo interface {
	tl.Object
	ImplementsHelpUserInfo()
}

// Internal use
type HelpUserInfoObj struct {
	Message  string          // Info
	Entities []MessageEntity // Message entities for styled text
	Author   string          // Author
	Date     int32           // Date
}

func (*HelpUserInfoObj) CRC() uint32 {
	return 0x1eb3758
}

func (*HelpUserInfoObj) ImplementsHelpUserInfo() {}

// Internal use
type HelpUserInfoEmpty struct{}

func (*HelpUserInfoEmpty) CRC() uint32 {
	return 0xf3ae2eed
}

func (*HelpUserInfoEmpty) ImplementsHelpUserInfo() {}

type MessagesAllStickers interface {
	tl.Object
	ImplementsMessagesAllStickers()
}

// Info about all installed stickers
type MessagesAllStickersObj struct {
	Hash int64         // Hash used for caching, for more info click here
	Sets []*StickerSet // All stickersets
}

func (*MessagesAllStickersObj) CRC() uint32 {
	return 0xcdbbcebb
}

func (*MessagesAllStickersObj) ImplementsMessagesAllStickers() {}

// Info about all installed stickers hasn't changed
type MessagesAllStickersNotModified struct{}

func (*MessagesAllStickersNotModified) CRC() uint32 {
	return 0xe86602c3
}

func (*MessagesAllStickersNotModified) ImplementsMessagesAllStickers() {}

type MessagesAvailableEffects interface {
	tl.Object
	ImplementsMessagesAvailableEffects()
}

// The full list of usable animated message effects ».
type MessagesAvailableEffectsObj struct {
	Hash      int32              // Hash used for caching, for more info click here
	Effects   []*AvailableEffect // Message effects
	Documents []Document         // Documents specified in the effects constructors.
}

func (*MessagesAvailableEffectsObj) CRC() uint32 {
	return 0xbddb616e
}

func (*MessagesAvailableEffectsObj) ImplementsMessagesAvailableEffects() {}

// The full list of usable animated message effects » hasn't changed.
type MessagesAvailableEffectsNotModified struct{}

func (*MessagesAvailableEffectsNotModified) CRC() uint32 {
	return 0xd1ed9a5b
}

func (*MessagesAvailableEffectsNotModified) ImplementsMessagesAvailableEffects() {}

type MessagesAvailableReactions interface {
	tl.Object
	ImplementsMessagesAvailableReactions()
}

// Animations and metadata associated with message reactions »
type MessagesAvailableReactionsObj struct {
	Hash      int32                // Hash used for caching, for more info click here
	Reactions []*AvailableReaction // Animations and metadata associated with message reactions
}

func (*MessagesAvailableReactionsObj) CRC() uint32 {
	return 0x768e3aad
}

func (*MessagesAvailableReactionsObj) ImplementsMessagesAvailableReactions() {}

// No new reactions are available
type MessagesAvailableReactionsNotModified struct{}

func (*MessagesAvailableReactionsNotModified) CRC() uint32 {
	return 0x9f071957
}

func (*MessagesAvailableReactionsNotModified) ImplementsMessagesAvailableReactions() {}

type MessagesChats interface {
	tl.Object
	ImplementsMessagesChats()
}

// List of chats with auxiliary data.
type MessagesChatsObj struct {
	Chats []Chat // List of chats
}

func (*MessagesChatsObj) CRC() uint32 {
	return 0x64ff9fd5
}

func (*MessagesChatsObj) ImplementsMessagesChats() {}

// Partial list of chats, more would have to be fetched with pagination
type MessagesChatsSlice struct {
	Count int32  // Total number of results that were found server-side (not all are included in chats)
	Chats []Chat // Chats
}

func (*MessagesChatsSlice) CRC() uint32 {
	return 0x9cd81144
}

func (*MessagesChatsSlice) ImplementsMessagesChats() {}

type MessagesDhConfig interface {
	tl.Object
	ImplementsMessagesDhConfig()
}

// New set of configuring parameters.
type MessagesDhConfigObj struct {
	G       int32  // New value prime, see Wikipedia
	P       []byte // New value primitive root, see Wikipedia
	Version int32  // Version of set of parameters
	Random  []byte // Random sequence of bytes of assigned length
}

func (*MessagesDhConfigObj) CRC() uint32 {
	return 0x2c221edd
}

func (*MessagesDhConfigObj) ImplementsMessagesDhConfig() {}

// Configuring parameters did not change.
type MessagesDhConfigNotModified struct {
	Random []byte // Random sequence of bytes of assigned length
}

func (*MessagesDhConfigNotModified) CRC() uint32 {
	return 0xc0e24635
}

func (*MessagesDhConfigNotModified) ImplementsMessagesDhConfig() {}

type MessagesDialogs interface {
	tl.Object
	ImplementsMessagesDialogs()
}

// Full list of chats with messages and auxiliary data.
type MessagesDialogsObj struct {
	Dialogs  []Dialog  // List of chats
	Messages []Message // List of last messages from each chat
	Chats    []Chat    // List of groups mentioned in the chats
	Users    []User    // List of users mentioned in messages and groups
}

func (*MessagesDialogsObj) CRC() uint32 {
	return 0x15ba6c40
}

func (*MessagesDialogsObj) ImplementsMessagesDialogs() {}

// Dialogs haven't changed
type MessagesDialogsNotModified struct {
	Count int32 // Number of dialogs found server-side by the query
}

func (*MessagesDialogsNotModified) CRC() uint32 {
	return 0xf0e3e596
}

func (*MessagesDialogsNotModified) ImplementsMessagesDialogs() {}

// Incomplete list of dialogs with messages and auxiliary data.
type MessagesDialogsSlice struct {
	Count    int32     // Total number of dialogs
	Dialogs  []Dialog  // List of dialogs
	Messages []Message // List of last messages from dialogs
	Chats    []Chat    // List of chats mentioned in dialogs
	Users    []User    // List of users mentioned in messages and chats
}

func (*MessagesDialogsSlice) CRC() uint32 {
	return 0x71e094f3
}

func (*MessagesDialogsSlice) ImplementsMessagesDialogs() {}

type MessagesEmojiGroups interface {
	tl.Object
	ImplementsMessagesEmojiGroups()
}

// Represents a list of emoji categories.
type MessagesEmojiGroupsObj struct {
	Hash   int32        // Hash used for caching, for more info click here
	Groups []EmojiGroup // A list of emoji categories.
}

func (*MessagesEmojiGroupsObj) CRC() uint32 {
	return 0x881fb94b
}

func (*MessagesEmojiGroupsObj) ImplementsMessagesEmojiGroups() {}

// The list of emoji categories hasn't changed.
type MessagesEmojiGroupsNotModified struct{}

func (*MessagesEmojiGroupsNotModified) CRC() uint32 {
	return 0x6fb4ad87
}

func (*MessagesEmojiGroupsNotModified) ImplementsMessagesEmojiGroups() {}

type MessagesExportedChatInvite interface {
	tl.Object
	ImplementsMessagesExportedChatInvite()
}

// Info about a chat invite
type MessagesExportedChatInviteObj struct {
	Invite ExportedChatInvite // Info about the chat invite
	Users  []User             // Mentioned users
}

func (*MessagesExportedChatInviteObj) CRC() uint32 {
	return 0x1871be50
}

func (*MessagesExportedChatInviteObj) ImplementsMessagesExportedChatInvite() {}

// The specified chat invite was replaced with another one
type MessagesExportedChatInviteReplaced struct {
	Invite    ExportedChatInvite // The replaced chat invite
	NewInvite ExportedChatInvite // The invite that replaces the previous invite
	Users     []User             // Mentioned users
}

func (*MessagesExportedChatInviteReplaced) CRC() uint32 {
	return 0x222600ef
}

func (*MessagesExportedChatInviteReplaced) ImplementsMessagesExportedChatInvite() {}

type MessagesFavedStickers interface {
	tl.Object
	ImplementsMessagesFavedStickers()
}

// Favorited stickers
type MessagesFavedStickersObj struct {
	Hash     int64          // Hash used for caching, for more info click here
	Packs    []*StickerPack // Emojis associated to stickers
	Stickers []Document     // Favorited stickers
}

func (*MessagesFavedStickersObj) CRC() uint32 {
	return 0x2cb51097
}

func (*MessagesFavedStickersObj) ImplementsMessagesFavedStickers() {}

// No new favorited stickers were found
type MessagesFavedStickersNotModified struct{}

func (*MessagesFavedStickersNotModified) CRC() uint32 {
	return 0x9e8fa6d3
}

func (*MessagesFavedStickersNotModified) ImplementsMessagesFavedStickers() {}

type MessagesFeaturedStickers interface {
	tl.Object
	ImplementsMessagesFeaturedStickers()
}

// Featured stickersets
type MessagesFeaturedStickersObj struct {
	Premium bool                `tl:"flag:0,encoded_in_bitflags"` // Whether this is a premium stickerset
	Hash    int64               // Hash used for caching, for more info click here
	Count   int32               // Total number of featured stickers
	Sets    []StickerSetCovered // Featured stickersets
	Unread  []int64             // IDs of new featured stickersets
}

func (*MessagesFeaturedStickersObj) CRC() uint32 {
	return 0xbe382906
}

func (*MessagesFeaturedStickersObj) FlagIndex() int {
	return 0
}

func (*MessagesFeaturedStickersObj) ImplementsMessagesFeaturedStickers() {}

// Featured stickers haven't changed
type MessagesFeaturedStickersNotModified struct {
	Count int32 // Total number of featured stickers
}

func (*MessagesFeaturedStickersNotModified) CRC() uint32 {
	return 0xc6dc0c66
}

func (*MessagesFeaturedStickersNotModified) ImplementsMessagesFeaturedStickers() {}

type MessagesFoundStickerSets interface {
	tl.Object
	ImplementsMessagesFoundStickerSets()
}

// Found stickersets
type MessagesFoundStickerSetsObj struct {
	Hash int64               // Hash used for caching, for more info click here
	Sets []StickerSetCovered // Found stickersets
}

func (*MessagesFoundStickerSetsObj) CRC() uint32 {
	return 0x8af09dd2
}

func (*MessagesFoundStickerSetsObj) ImplementsMessagesFoundStickerSets() {}

// No further results were found
type MessagesFoundStickerSetsNotModified struct{}

func (*MessagesFoundStickerSetsNotModified) CRC() uint32 {
	return 0xd54b65d
}

func (*MessagesFoundStickerSetsNotModified) ImplementsMessagesFoundStickerSets() {}

type MessagesFoundStickers interface {
	tl.Object
	ImplementsMessagesFoundStickers()
}

// Found stickers
type MessagesFoundStickersObj struct {
	NextOffset int32      `tl:"flag:0"` // Offset for pagination
	Hash       int64      // Hash used for caching, for more info click here
	Stickers   []Document // Found stickers
}

func (*MessagesFoundStickersObj) CRC() uint32 {
	return 0x82c9e290
}

func (*MessagesFoundStickersObj) FlagIndex() int {
	return 0
}

func (*MessagesFoundStickersObj) ImplementsMessagesFoundStickers() {}

// No new stickers were found for the specified query
type MessagesFoundStickersNotModified struct {
	NextOffset int32 `tl:"flag:0"` // Offset for pagination
}

func (*MessagesFoundStickersNotModified) CRC() uint32 {
	return 0x6010c534
}

func (*MessagesFoundStickersNotModified) FlagIndex() int {
	return 0
}

func (*MessagesFoundStickersNotModified) ImplementsMessagesFoundStickers() {}

type MessagesMessages interface {
	tl.Object
	ImplementsMessagesMessages()
}

// Channel messages
type MessagesChannelMessages struct {
	Inexact        bool  `tl:"flag:1,encoded_in_bitflags"` // If set, returned results may be inexact
	Pts            int32 // Event count after generation
	Count          int32 // Total number of results were found server-side (may not be all included here)
	OffsetIDOffset int32 `tl:"flag:2"` /*
		Indicates the absolute position of messages[0] within the total result set with count count.
		This is useful, for example, if the result was fetched using offset_id, and we need to display a progress/total counter (like photo 134 of 200, for all media in a chat, we could simply use photo ${offset_id_offset} of ${count}.
	*/
	Messages []Message    // Found messages
	Topics   []ForumTopic // Forum topic information
	Chats    []Chat       // Chats
	Users    []User       // Users
}

func (*MessagesChannelMessages) CRC() uint32 {
	return 0xc776ba4e
}

func (*MessagesChannelMessages) FlagIndex() int {
	return 0
}

func (*MessagesChannelMessages) ImplementsMessagesMessages() {}

// Full list of messages with auxiliary data.
type MessagesMessagesObj struct {
	Messages []Message
	Topics   []ForumTopic
	Chats    []Chat
	Users    []User
}

func (*MessagesMessagesObj) CRC() uint32 {
	return 0x1d73e7ea
}

func (*MessagesMessagesObj) ImplementsMessagesMessages() {}

// No new messages matching the query were found
type MessagesMessagesNotModified struct {
	Count int32 // Number of results found server-side by the given query
}

func (*MessagesMessagesNotModified) CRC() uint32 {
	return 0x74535f21
}

func (*MessagesMessagesNotModified) ImplementsMessagesMessages() {}

// Incomplete list of messages and auxiliary data.
type MessagesMessagesSlice struct {
	Inexact        bool `tl:"flag:1,encoded_in_bitflags"`
	Count          int32
	NextRate       int32             `tl:"flag:0"`
	OffsetIDOffset int32             `tl:"flag:2"`
	SearchFlood    *SearchPostsFlood `tl:"flag:3"`
	Messages       []Message
	Topics         []ForumTopic
	Chats          []Chat
	Users          []User
}

func (*MessagesMessagesSlice) CRC() uint32 {
	return 0x5f206716
}

func (*MessagesMessagesSlice) FlagIndex() int {
	return 0
}

func (*MessagesMessagesSlice) ImplementsMessagesMessages() {}

type MessagesQuickReplies interface {
	tl.Object
	ImplementsMessagesQuickReplies()
}

// Info about quick reply shortcuts ».
type MessagesQuickRepliesObj struct {
	QuickReplies []*QuickReply // Quick reply shortcuts.
	Messages     []Message     // Messages mentioned in quick_replies.
	Chats        []Chat        // Mentioned chats
	Users        []User        // Mentioned users
}

func (*MessagesQuickRepliesObj) CRC() uint32 {
	return 0xc68d6695
}

func (*MessagesQuickRepliesObj) ImplementsMessagesQuickReplies() {}

// Info about quick reply shortcuts » hasn't changed.
type MessagesQuickRepliesNotModified struct{}

func (*MessagesQuickRepliesNotModified) CRC() uint32 {
	return 0x5f91eb5b
}

func (*MessagesQuickRepliesNotModified) ImplementsMessagesQuickReplies() {}

type MessagesReactions interface {
	tl.Object
	ImplementsMessagesReactions()
}

// List of message reactions
type MessagesReactionsObj struct {
	Hash      int64      // Hash used for caching, can also be locally regenerated using the algorithm specified here.
	Reactions []Reaction // Reactions
}

func (*MessagesReactionsObj) CRC() uint32 {
	return 0xeafdf716
}

func (*MessagesReactionsObj) ImplementsMessagesReactions() {}

// The server-side list of message reactions hasn't changed
type MessagesReactionsNotModified struct{}

func (*MessagesReactionsNotModified) CRC() uint32 {
	return 0xb06fdbdf
}

func (*MessagesReactionsNotModified) ImplementsMessagesReactions() {}

type MessagesRecentStickers interface {
	tl.Object
	ImplementsMessagesRecentStickers()
}

// Recently used stickers
type MessagesRecentStickersObj struct {
	Hash     int64          // Hash used for caching, for more info click here
	Packs    []*StickerPack // Emojis associated to stickers
	Stickers []Document     // Recent stickers
	Dates    []int32        // When was each sticker last used
}

func (*MessagesRecentStickersObj) CRC() uint32 {
	return 0x88d37c56
}

func (*MessagesRecentStickersObj) ImplementsMessagesRecentStickers() {}

// No new recent sticker was found
type MessagesRecentStickersNotModified struct{}

func (*MessagesRecentStickersNotModified) CRC() uint32 {
	return 0xb17f890
}

func (*MessagesRecentStickersNotModified) ImplementsMessagesRecentStickers() {}

type MessagesSavedDialogs interface {
	tl.Object
	ImplementsMessagesSavedDialogs()
}

// Represents some saved message dialogs ».
type MessagesSavedDialogsObj struct {
	Dialogs  []SavedDialog // Saved message dialogs.
	Messages []Message     // List of last messages from each saved dialog
	Chats    []Chat        // Mentioned chats
	Users    []User        // Mentioned users
}

func (*MessagesSavedDialogsObj) CRC() uint32 {
	return 0xf83ae221
}

func (*MessagesSavedDialogsObj) ImplementsMessagesSavedDialogs() {}

// The saved dialogs haven't changed
type MessagesSavedDialogsNotModified struct {
	Count int32 // Number of saved dialogs found server-side by the query
}

func (*MessagesSavedDialogsNotModified) CRC() uint32 {
	return 0xc01f6fe8
}

func (*MessagesSavedDialogsNotModified) ImplementsMessagesSavedDialogs() {}

// Incomplete list of saved message dialogs » with messages and auxiliary data.
type MessagesSavedDialogsSlice struct {
	Count    int32         // Total number of saved message dialogs
	Dialogs  []SavedDialog // List of saved message dialogs
	Messages []Message     // List of last messages from dialogs
	Chats    []Chat        // Mentioned chats
	Users    []User        // Mentioned users
}

func (*MessagesSavedDialogsSlice) CRC() uint32 {
	return 0x44ba9dd9
}

func (*MessagesSavedDialogsSlice) ImplementsMessagesSavedDialogs() {}

type MessagesSavedGifs interface {
	tl.Object
	ImplementsMessagesSavedGifs()
}

// Saved gifs
type MessagesSavedGifsObj struct {
	Hash int64      // Hash used for caching, for more info click here
	Gifs []Document // List of saved gifs
}

func (*MessagesSavedGifsObj) CRC() uint32 {
	return 0x84a02a0d
}

func (*MessagesSavedGifsObj) ImplementsMessagesSavedGifs() {}

// No new saved gifs were found
type MessagesSavedGifsNotModified struct{}

func (*MessagesSavedGifsNotModified) CRC() uint32 {
	return 0xe8025ca2
}

func (*MessagesSavedGifsNotModified) ImplementsMessagesSavedGifs() {}

type MessagesSavedReactionTags interface {
	tl.Object
	ImplementsMessagesSavedReactionTags()
}

// List of reaction tag » names assigned by the user.
type MessagesSavedReactionTagsObj struct {
	Tags []*SavedReactionTag // Saved reaction tags.
	Hash int64               // Hash used for caching, for more info click here. Can also be manually regenerated, if needed, using the custom algorithm specified here.
}

func (*MessagesSavedReactionTagsObj) CRC() uint32 {
	return 0x3259950a
}

func (*MessagesSavedReactionTagsObj) ImplementsMessagesSavedReactionTags() {}

// The list of reaction tag » names assigned by the user hasn't changed.
type MessagesSavedReactionTagsNotModified struct{}

func (*MessagesSavedReactionTagsNotModified) CRC() uint32 {
	return 0x889b59ef
}

func (*MessagesSavedReactionTagsNotModified) ImplementsMessagesSavedReactionTags() {}

type MessagesSentEncryptedMessage interface {
	tl.Object
	ImplementsMessagesSentEncryptedMessage()
}

// Message with a file enclosure sent to a protected chat
type MessagesSentEncryptedFile struct {
	Date int32         // Sending date
	File EncryptedFile // Attached file
}

func (*MessagesSentEncryptedFile) CRC() uint32 {
	return 0x9493ff32
}

func (*MessagesSentEncryptedFile) ImplementsMessagesSentEncryptedMessage() {}

// Message without file attachments sent to an encrypted file.
type MessagesSentEncryptedMessageObj struct {
	Date int32 // Date of sending
}

func (*MessagesSentEncryptedMessageObj) CRC() uint32 {
	return 0x560f8935
}

func (*MessagesSentEncryptedMessageObj) ImplementsMessagesSentEncryptedMessage() {}

type MessagesSponsoredMessages interface {
	tl.Object
	ImplementsMessagesSponsoredMessages()
}

// A set of sponsored messages associated to a channel
type MessagesSponsoredMessagesObj struct {
	PostsBetween int32               `tl:"flag:0"` // If set, specifies the minimum number of messages between shown sponsored messages; otherwise, only one sponsored message must be shown after all ordinary messages.
	StartDelay   int32               `tl:"flag:1"` // For sponsored messages to show on channel videos , the number of seconds to wait before showing the first ad.
	BetweenDelay int32               `tl:"flag:2"` // For sponsored messages to show on channel videos , the number of seconds to wait after the previous ad is hidden, before showing the next ad.
	Messages     []*SponsoredMessage // Sponsored messages
	Chats        []Chat              // Chats mentioned in the sponsored messages
	Users        []User              // Users mentioned in the sponsored messages
}

func (*MessagesSponsoredMessagesObj) CRC() uint32 {
	return 0xffda656d
}

func (*MessagesSponsoredMessagesObj) FlagIndex() int {
	return 0
}

func (*MessagesSponsoredMessagesObj) ImplementsMessagesSponsoredMessages() {}

// No sponsored messages are available.
type MessagesSponsoredMessagesEmpty struct{}

func (*MessagesSponsoredMessagesEmpty) CRC() uint32 {
	return 0x1839490f
}

func (*MessagesSponsoredMessagesEmpty) ImplementsMessagesSponsoredMessages() {}

type MessagesStickerSet interface {
	tl.Object
	ImplementsMessagesStickerSet()
}

// Stickerset and stickers inside it
type MessagesStickerSetObj struct {
	Set       *StickerSet       // The stickerset
	Packs     []*StickerPack    // Emoji info for stickers
	Keywords  []*StickerKeyword // Keywords for some or every sticker in the stickerset.
	Documents []Document        // Stickers in stickerset
}

func (*MessagesStickerSetObj) CRC() uint32 {
	return 0x6e153f16
}

func (*MessagesStickerSetObj) ImplementsMessagesStickerSet() {}

// The stickerset hasn't changed
type MessagesStickerSetNotModified struct{}

func (*MessagesStickerSetNotModified) CRC() uint32 {
	return 0xd3f924eb
}

func (*MessagesStickerSetNotModified) ImplementsMessagesStickerSet() {}

type MessagesStickerSetInstallResult interface {
	tl.Object
	ImplementsMessagesStickerSetInstallResult()
}

// The stickerset was installed, but since there are too many stickersets some were archived
type MessagesStickerSetInstallResultArchive struct {
	Sets []StickerSetCovered // Archived stickersets
}

func (*MessagesStickerSetInstallResultArchive) CRC() uint32 {
	return 0x35e410a8
}

func (*MessagesStickerSetInstallResultArchive) ImplementsMessagesStickerSetInstallResult() {}

// The stickerset was installed successfully
type MessagesStickerSetInstallResultSuccess struct{}

func (*MessagesStickerSetInstallResultSuccess) CRC() uint32 {
	return 0x38641628
}

func (*MessagesStickerSetInstallResultSuccess) ImplementsMessagesStickerSetInstallResult() {}

type MessagesStickers interface {
	tl.Object
	ImplementsMessagesStickers()
}

// Found stickers
type MessagesStickersObj struct {
	Hash     int64      // Hash used for caching, for more info click here
	Stickers []Document // Stickers
}

func (*MessagesStickersObj) CRC() uint32 {
	return 0x30a6ec7e
}

func (*MessagesStickersObj) ImplementsMessagesStickers() {}

// No new stickers were found for the given query
type MessagesStickersNotModified struct{}

func (*MessagesStickersNotModified) CRC() uint32 {
	return 0xf1749a22
}

func (*MessagesStickersNotModified) ImplementsMessagesStickers() {}

type PaymentsCheckCanSendGiftResult interface {
	tl.Object
	ImplementsPaymentsCheckCanSendGiftResult()
}

// The specified gift cannot be sent yet for the specified reason.
type PaymentsCheckCanSendGiftResultFail struct {
	Reason *TextWithEntities // The reason why it can't be sent yet.
}

func (*PaymentsCheckCanSendGiftResultFail) CRC() uint32 {
	return 0xd5e58274
}

func (*PaymentsCheckCanSendGiftResultFail) ImplementsPaymentsCheckCanSendGiftResult() {}

// The specified gift can be sent.
type PaymentsCheckCanSendGiftResultOk struct{}

func (*PaymentsCheckCanSendGiftResultOk) CRC() uint32 {
	return 0x374fa7ad
}

func (*PaymentsCheckCanSendGiftResultOk) ImplementsPaymentsCheckCanSendGiftResult() {}

type PaymentsGiveawayInfo interface {
	tl.Object
	ImplementsPaymentsGiveawayInfo()
}

// Contains info about an ongoing giveaway.
type PaymentsGiveawayInfoObj struct {
	Participating         bool   `tl:"flag:0,encoded_in_bitflags"` // The current user is participating in the giveaway.
	PreparingResults      bool   `tl:"flag:3,encoded_in_bitflags"` // If set, the giveaway has ended and the results are being prepared.
	StartDate             int32  // When was the giveaway started
	JoinedTooEarlyDate    int32  `tl:"flag:1"` // The current user can't participate in the giveaway, because they were already a member of the channel when the giveaway started, and the only_new_subscribers was set when starting the giveaway.
	AdminDisallowedChatID int64  `tl:"flag:2"` // If set, the current user can't participate in the giveaway, because they are an administrator in one of the channels (ID specified in this flag) that created the giveaway.
	DisallowedCountry     string `tl:"flag:4"` // If set, the current user can't participate in this giveaway, because their phone number is from the specified disallowed country (specified as a two-letter ISO 3166-1 alpha-2 country code).
}

func (*PaymentsGiveawayInfoObj) CRC() uint32 {
	return 0x4367daa0
}

func (*PaymentsGiveawayInfoObj) FlagIndex() int {
	return 0
}

func (*PaymentsGiveawayInfoObj) ImplementsPaymentsGiveawayInfo() {}

// A giveaway has ended.
type PaymentsGiveawayInfoResults struct {
	Winner         bool   `tl:"flag:0,encoded_in_bitflags"` // Whether we're one of the winners of this giveaway.
	Refunded       bool   `tl:"flag:1,encoded_in_bitflags"` // Whether the giveaway was canceled and was fully refunded.
	StartDate      int32  // Start date of the giveaway
	GiftCodeSlug   string `tl:"flag:3"` // If we're one of the winners of this giveaway, contains the Premium gift code,.
	StarsPrize     int64  `tl:"flag:4"` // If we're one of the winners of this Telegram Star giveaway, the number Telegram Stars we won.
	FinishDate     int32  // End date of the giveaway. May be bigger than the end date specified in parameters of the giveaway.
	WinnersCount   int32  // Number of winners in the giveaway
	ActivatedCount int32  `tl:"flag:2"` // Number of winners, which activated their gift codes.
}

func (*PaymentsGiveawayInfoResults) CRC() uint32 {
	return 0xe175e66f
}

func (*PaymentsGiveawayInfoResults) FlagIndex() int {
	return 0
}

func (*PaymentsGiveawayInfoResults) ImplementsPaymentsGiveawayInfo() {}

type PaymentsPaymentForm interface {
	tl.Object
	ImplementsPaymentsPaymentForm()
}

// Payment form
type PaymentsPaymentFormObj struct {
	CanSaveCredentials bool        `tl:"flag:2,encoded_in_bitflags"` // Whether the user can choose to save credentials.
	PasswordMissing    bool        `tl:"flag:3,encoded_in_bitflags"` // Indicates that the user can save payment credentials, but only after setting up a 2FA password (currently the account doesn't have a 2FA password)
	FormID             int64       // Form ID
	BotID              int64       // Bot ID
	Title              string      // Form title
	Description        string      // Description
	Photo              WebDocument `tl:"flag:5"` // Product photo
	Invoice            *Invoice    // Invoice
	ProviderID         int64       // Payment provider ID.
	URL                string      // Payment form URL
	NativeProvider     string      `tl:"flag:4"` /*
		Payment provider name.
		One of the following:
		- stripe
	*/
	NativeParams *DataJson `tl:"flag:4"` /*
		Contains information about the payment provider, if available, to support it natively without the need for opening the URL.
		A JSON object that can contain the following fields:

		- apple_pay_merchant_id: Apple Pay merchant ID
		- google_pay_public_key: Google Pay public key
		- need_country: True, if the user country must be provided,
		- need_zip: True, if the user ZIP/postal code must be provided,
		- need_cardholder_name: True, if the cardholder name must be provided
	*/
	AdditionalMethods []*PaymentFormMethod           `tl:"flag:6"` // Additional payment methods
	SavedInfo         *PaymentRequestedInfo          `tl:"flag:0"` // Saved server-side order information
	SavedCredentials  []*PaymentSavedCredentialsCard `tl:"flag:1"` // Contains information about saved card credentials
	Users             []User                         // Users
}

func (*PaymentsPaymentFormObj) CRC() uint32 {
	return 0xa0058751
}

func (*PaymentsPaymentFormObj) FlagIndex() int {
	return 0
}

func (*PaymentsPaymentFormObj) ImplementsPaymentsPaymentForm() {}

// Represents a payment form for a gift, see here » for more info.
type PaymentsPaymentFormStarGift struct {
	FormID  int64    // Form ID.
	Invoice *Invoice // Invoice
}

func (*PaymentsPaymentFormStarGift) CRC() uint32 {
	return 0xb425cfe1
}

func (*PaymentsPaymentFormStarGift) ImplementsPaymentsPaymentForm() {}

// Represents a payment form, for payments to be using Telegram Stars, see here » for more info.
type PaymentsPaymentFormStars struct {
	CanSaveCredentials bool `tl:"flag:2,encoded_in_bitflags"`
	PasswordMissing    bool `tl:"flag:3,encoded_in_bitflags"`
	FormID             int64
	BotID              int64
	Title              string
	Description        string
	Photo              WebDocument `tl:"flag:5"`
	Invoice            *Invoice
	Users              []User
}

func (*PaymentsPaymentFormStars) CRC() uint32 {
	return 0x7bf6b15c
}

func (*PaymentsPaymentFormStars) FlagIndex() int {
	return 0
}

func (*PaymentsPaymentFormStars) ImplementsPaymentsPaymentForm() {}

type PaymentsPaymentReceipt interface {
	tl.Object
	ImplementsPaymentsPaymentReceipt()
}

// Receipt
type PaymentsPaymentReceiptObj struct {
	Date             int32                 // Date of generation
	BotID            int64                 // Bot ID
	ProviderID       int64                 // Provider ID
	Title            string                // Title
	Description      string                // Description
	Photo            WebDocument           `tl:"flag:2"` // Photo
	Invoice          *Invoice              // Invoice
	Info             *PaymentRequestedInfo `tl:"flag:0"` // Info
	Shipping         *ShippingOption       `tl:"flag:1"` // Selected shipping option
	TipAmount        int64                 `tl:"flag:3"` // Tipped amount
	Currency         string                // Three-letter ISO 4217 currency code
	TotalAmount      int64                 // Total amount in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
	CredentialsTitle string                // Payment credential name
	Users            []User                // Users
}

func (*PaymentsPaymentReceiptObj) CRC() uint32 {
	return 0x70c4fe03
}

func (*PaymentsPaymentReceiptObj) FlagIndex() int {
	return 0
}

func (*PaymentsPaymentReceiptObj) ImplementsPaymentsPaymentReceipt() {}

// Receipt for payment made using Telegram Stars.
type PaymentsPaymentReceiptStars struct {
	Date          int32       // Date of generation
	BotID         int64       // Bot ID
	Title         string      // Title
	Description   string      // Description
	Photo         WebDocument `tl:"flag:2"` // Product photo
	Invoice       *Invoice    // Invoice
	Currency      string      // Currency, always XTR.
	TotalAmount   int64       // Amount of Telegram Stars.
	TransactionID string      // Transaction ID
	Users         []User      // Info about users mentioned in the other fields.
}

func (*PaymentsPaymentReceiptStars) CRC() uint32 {
	return 0xdabbf83a
}

func (*PaymentsPaymentReceiptStars) FlagIndex() int {
	return 0
}

func (*PaymentsPaymentReceiptStars) ImplementsPaymentsPaymentReceipt() {}

type PaymentsPaymentResult interface {
	tl.Object
	ImplementsPaymentsPaymentResult()
}

// Payment result
type PaymentsPaymentResultObj struct {
	Updates Updates // Info about the payment
}

func (*PaymentsPaymentResultObj) CRC() uint32 {
	return 0x4e5f810d
}

func (*PaymentsPaymentResultObj) ImplementsPaymentsPaymentResult() {}

// Payment was not successful, additional verification is needed
type PaymentsPaymentVerificationNeeded struct {
	URL string // URL for additional payment credentials verification
}

func (*PaymentsPaymentVerificationNeeded) CRC() uint32 {
	return 0xd8411139
}

func (*PaymentsPaymentVerificationNeeded) ImplementsPaymentsPaymentResult() {}

type PaymentsStarGiftCollections interface {
	tl.Object
	ImplementsPaymentsStarGiftCollections()
}

// Represents a list of star gift collections ».
type PaymentsStarGiftCollectionsObj struct {
	Collections []*StarGiftCollection // Star gift collections.
}

func (*PaymentsStarGiftCollectionsObj) CRC() uint32 {
	return 0x8a2932f3
}

func (*PaymentsStarGiftCollectionsObj) ImplementsPaymentsStarGiftCollections() {}

// The list of star gift collections » hasn't changed.
type PaymentsStarGiftCollectionsNotModified struct{}

func (*PaymentsStarGiftCollectionsNotModified) CRC() uint32 {
	return 0xa0ba4f17
}

func (*PaymentsStarGiftCollectionsNotModified) ImplementsPaymentsStarGiftCollections() {}

type PaymentsStarGifts interface {
	tl.Object
	ImplementsPaymentsStarGifts()
}

// Available gifts ».
type PaymentsStarGiftsObj struct {
	Hash  int32      // Hash used for caching, for more info click here
	Gifts []StarGift // List of available gifts.
	Chats []Chat     // Chats mentioned in the gifts field.
	Users []User     // Users mentioned in the gifts field.
}

func (*PaymentsStarGiftsObj) CRC() uint32 {
	return 0x2ed82995
}

func (*PaymentsStarGiftsObj) ImplementsPaymentsStarGifts() {}

// The list of available gifts » hasn't changed.
type PaymentsStarGiftsNotModified struct{}

func (*PaymentsStarGiftsNotModified) CRC() uint32 {
	return 0xa388a368
}

func (*PaymentsStarGiftsNotModified) ImplementsPaymentsStarGifts() {}

type PhotosPhotos interface {
	tl.Object
	ImplementsPhotosPhotos()
}

// Full list of photos with auxiliary data.
type PhotosPhotosObj struct {
	Photos []Photo // List of photos
	Users  []User  // List of mentioned users
}

func (*PhotosPhotosObj) CRC() uint32 {
	return 0x8dca6aa5
}

func (*PhotosPhotosObj) ImplementsPhotosPhotos() {}

// Incomplete list of photos with auxiliary data.
type PhotosPhotosSlice struct {
	Count  int32   // Total number of photos
	Photos []Photo // List of photos
	Users  []User  // List of mentioned users
}

func (*PhotosPhotosSlice) CRC() uint32 {
	return 0x15051f54
}

func (*PhotosPhotosSlice) ImplementsPhotosPhotos() {}

type StoriesAlbums interface {
	tl.Object
	ImplementsStoriesAlbums()
}

// Story albums ».
type StoriesAlbumsObj struct {
	Hash   int64         // Hash to pass to stories.getAlbums to avoid returning any results if they haven't changed.
	Albums []*StoryAlbum // The albums.
}

func (*StoriesAlbumsObj) CRC() uint32 {
	return 0xc3987a3a
}

func (*StoriesAlbumsObj) ImplementsStoriesAlbums() {}

// The story album list » hasn't changed.
type StoriesAlbumsNotModified struct{}

func (*StoriesAlbumsNotModified) CRC() uint32 {
	return 0x564edaeb
}

func (*StoriesAlbumsNotModified) ImplementsStoriesAlbums() {}

type StoriesAllStories interface {
	tl.Object
	ImplementsStoriesAllStories()
}

// Full list of active (or active and hidden) stories.
type StoriesAllStoriesObj struct {
	HasMore     bool                `tl:"flag:0,encoded_in_bitflags"` // Whether more results can be fetched as described here.
	Count       int32               // Total number of active (or active and hidden) stories
	State       string              // State to use for pagination
	PeerStories []*PeerStories      // Stories
	Chats       []Chat              // Mentioned chats
	Users       []User              // Mentioned users
	StealthMode *StoriesStealthMode // Current stealth mode information
}

func (*StoriesAllStoriesObj) CRC() uint32 {
	return 0x6efc5e81
}

func (*StoriesAllStoriesObj) FlagIndex() int {
	return 0
}

func (*StoriesAllStoriesObj) ImplementsStoriesAllStories() {}

// The list of active (or active and hidden) stories has not changed.
type StoriesAllStoriesNotModified struct {
	State       string              // State to use to ask for updates
	StealthMode *StoriesStealthMode // Current stealth mode information
}

func (*StoriesAllStoriesNotModified) CRC() uint32 {
	return 0x1158fe3e
}

func (*StoriesAllStoriesNotModified) ImplementsStoriesAllStories() {}

type UpdatesChannelDifference interface {
	tl.Object
	ImplementsUpdatesChannelDifference()
}

// The new updates
type UpdatesChannelDifferenceObj struct {
	Final        bool      `tl:"flag:0,encoded_in_bitflags"` // Whether there are more updates to be fetched using getDifference, starting from the provided pts
	Pts          int32     // The PTS from which to start getting updates the next time
	Timeout      int32     `tl:"flag:1"` // Clients are supposed to refetch the channel difference after timeout seconds have elapsed, if the user is currently viewing the chat,.
	NewMessages  []Message // New messages
	OtherUpdates []Update  // Other updates
	Chats        []Chat    // Chats
	Users        []User    // Users
}

func (*UpdatesChannelDifferenceObj) CRC() uint32 {
	return 0x2064674e
}

func (*UpdatesChannelDifferenceObj) FlagIndex() int {
	return 0
}

func (*UpdatesChannelDifferenceObj) ImplementsUpdatesChannelDifference() {}

// There are no new updates
type UpdatesChannelDifferenceEmpty struct {
	Final   bool  `tl:"flag:0,encoded_in_bitflags"` // Whether there are more updates that must be fetched (always false)
	Pts     int32 // The latest PTS
	Timeout int32 `tl:"flag:1"` // Clients are supposed to refetch the channel difference after timeout seconds have elapsed, if the user is currently viewing the chat,.
}

func (*UpdatesChannelDifferenceEmpty) CRC() uint32 {
	return 0x3e11affb
}

func (*UpdatesChannelDifferenceEmpty) FlagIndex() int {
	return 0
}

func (*UpdatesChannelDifferenceEmpty) ImplementsUpdatesChannelDifference() {}

// The provided `pts + limit &lt; remote pts`. Simply, there are too many updates to be fetched (more than `limit`), the client has to resolve the update gap in one of the following ways (assuming the existence of a persistent database to locally store messages):
type UpdatesChannelDifferenceTooLong struct {
	Final    bool      `tl:"flag:0,encoded_in_bitflags"` // Whether there are more updates that must be fetched (always false)
	Timeout  int32     `tl:"flag:1"`                     // Clients are supposed to refetch the channel difference after timeout seconds have elapsed
	Dialog   Dialog    // Dialog containing the latest PTS that can be used to reset the channel state
	Messages []Message // The latest messages
	Chats    []Chat    // Chats from messages
	Users    []User    // Users from messages
}

func (*UpdatesChannelDifferenceTooLong) CRC() uint32 {
	return 0xa4bcc6fe
}

func (*UpdatesChannelDifferenceTooLong) FlagIndex() int {
	return 0
}

func (*UpdatesChannelDifferenceTooLong) ImplementsUpdatesChannelDifference() {}

type UpdatesDifference interface {
	tl.Object
	ImplementsUpdatesDifference()
}

// Full list of occurred events.
type UpdatesDifferenceObj struct {
	NewMessages          []Message          // List of new messages
	NewEncryptedMessages []EncryptedMessage // List of new encrypted secret chat messages
	OtherUpdates         []Update           // List of updates
	Chats                []Chat             // List of chats mentioned in events
	Users                []User             // List of users mentioned in events
	State                *UpdatesState      // Current state
}

func (*UpdatesDifferenceObj) CRC() uint32 {
	return 0xf49ca0
}

func (*UpdatesDifferenceObj) ImplementsUpdatesDifference() {}

// No events.
type UpdatesDifferenceEmpty struct {
	Date int32 // Current date
	Seq  int32 // Number of sent updates
}

func (*UpdatesDifferenceEmpty) CRC() uint32 {
	return 0x5d75a138
}

func (*UpdatesDifferenceEmpty) ImplementsUpdatesDifference() {}

// Incomplete list of occurred events.
type UpdatesDifferenceSlice struct {
	NewMessages          []Message          // List of new messages
	NewEncryptedMessages []EncryptedMessage // New messages from the encrypted event sequence
	OtherUpdates         []Update           // List of updates
	Chats                []Chat             // List of chats mentioned in events
	Users                []User             // List of users mentioned in events
	IntermediateState    *UpdatesState      // Intermediary state
}

func (*UpdatesDifferenceSlice) CRC() uint32 {
	return 0xa8fb1981
}

func (*UpdatesDifferenceSlice) ImplementsUpdatesDifference() {}

// The difference is too long, and the specified state must be used to refetch updates.
type UpdatesDifferenceTooLong struct {
	Pts int32 // The new state to use.
}

func (*UpdatesDifferenceTooLong) CRC() uint32 {
	return 0x4afe8f6d
}

func (*UpdatesDifferenceTooLong) ImplementsUpdatesDifference() {}

type UploadCdnFile interface {
	tl.Object
	ImplementsUploadCdnFile()
}

// Represent a chunk of a CDN file.
type UploadCdnFileObj struct {
	Bytes []byte // The data
}

func (*UploadCdnFileObj) CRC() uint32 {
	return 0xa99fca4f
}

func (*UploadCdnFileObj) ImplementsUploadCdnFile() {}

// The file was cleared from the temporary RAM cache of the CDN and has to be re-uploaded.
type UploadCdnFileReuploadNeeded struct {
	RequestToken []byte // Request token (see CDN)
}

func (*UploadCdnFileReuploadNeeded) CRC() uint32 {
	return 0xeea8e46e
}

func (*UploadCdnFileReuploadNeeded) ImplementsUploadCdnFile() {}

type UploadFile interface {
	tl.Object
	ImplementsUploadFile()
}

// File content.
type UploadFileObj struct {
	Type  StorageFileType // File type
	Mtime int32           // Modification time
	Bytes []byte          // Binary data, file content
}

func (*UploadFileObj) CRC() uint32 {
	return 0x96a18d5
}

func (*UploadFileObj) ImplementsUploadFile() {}

// The file must be downloaded from a CDN DC.
type UploadFileCdnRedirect struct {
	DcID          int32       // CDN DC ID
	FileToken     []byte      // File token (see CDN files)
	EncryptionKey []byte      // Encryption key (see CDN files)
	EncryptionIv  []byte      // Encryption IV (see CDN files)
	FileHashes    []*FileHash // File hashes (see CDN files)
}

func (*UploadFileCdnRedirect) CRC() uint32 {
	return 0xf18cda44
}

func (*UploadFileCdnRedirect) ImplementsUploadFile() {}

type UsersSavedMusic interface {
	tl.Object
	ImplementsUsersSavedMusic()
}

// List of songs currently pinned on a user's profile, see here » for more info.
type UsersSavedMusicObj struct {
	Count     int32      // Total number of songs (can be bigger than documents depending on the passed limit, and the default maximum limit in which case pagination is required).
	Documents []Document // Songs.
}

func (*UsersSavedMusicObj) CRC() uint32 {
	return 0x34a2f297
}

func (*UsersSavedMusicObj) ImplementsUsersSavedMusic() {}

// This subset of the songs currently pinned on a user's profile hasn't changed, see here » for more info.
type UsersSavedMusicNotModified struct {
	Count int32 // Total number of songs on the user's profile.
}

func (*UsersSavedMusicNotModified) CRC() uint32 {
	return 0xe3878aa4
}

func (*UsersSavedMusicNotModified) ImplementsUsersSavedMusic() {}

type UsersUsers interface {
	tl.Object
	ImplementsUsersUsers()
}

// Describes a list of users (or bots).
type UsersUsersObj struct {
	Users []User // Users
}

func (*UsersUsersObj) CRC() uint32 {
	return 0x62d706b8
}

func (*UsersUsersObj) ImplementsUsersUsers() {}

// Describes a partial list of users.
type UsersUsersSlice struct {
	Count int32  // Total number of users (bigger than the users specified in users)
	Users []User // Subset of users.
}

func (*UsersUsersSlice) CRC() uint32 {
	return 0x315a4974
}

func (*UsersUsersSlice) ImplementsUsersUsers() {}
