from ...tl.mtproto_request import MTProtoRequest


class UpdateReadMessagesContents(MTProtoRequest):
    """Class generated by TLObjects' generator. All changes will be ERASED. Original .tl definition below.
    updateReadMessagesContents#68c13933 messages:Vector<int> pts:int pts_count:int = Update"""

    # Telegram's constructor ID (and unique identifier) for this class
    constructor_id = 0x68c13933

    def __init__(self, messages, pts, pts_count):
        """
        :param messages: Telegram type: «int». Must be a list.
        :param pts: Telegram type: «int».
        :param pts_count: Telegram type: «int».

        Constructor for Update: Instance of either UpdateNewMessage, UpdateMessageID, UpdateDeleteMessages, UpdateUserTyping, UpdateChatUserTyping, UpdateChatParticipants, UpdateUserStatus, UpdateUserName, UpdateUserPhoto, UpdateContactRegistered, UpdateContactLink, UpdateNewEncryptedMessage, UpdateEncryptedChatTyping, UpdateEncryption, UpdateEncryptedMessagesRead, UpdateChatParticipantAdd, UpdateChatParticipantDelete, UpdateDcOptions, UpdateUserBlocked, UpdateNotifySettings, UpdateServiceNotification, UpdatePrivacy, UpdateUserPhone, UpdateReadHistoryInbox, UpdateReadHistoryOutbox, UpdateWebPage, UpdateReadMessagesContents, UpdateChannelTooLong, UpdateChannel, UpdateNewChannelMessage, UpdateReadChannelInbox, UpdateDeleteChannelMessages, UpdateChannelMessageViews, UpdateChatAdmins, UpdateChatParticipantAdmin, UpdateNewStickerSet, UpdateStickerSetsOrder, UpdateStickerSets, UpdateSavedGifs, UpdateBotInlineQuery, UpdateBotInlineSend, UpdateEditChannelMessage, UpdateChannelPinnedMessage, UpdateBotCallbackQuery, UpdateEditMessage, UpdateInlineBotCallbackQuery, UpdateReadChannelOutbox, UpdateDraftMessage, UpdateReadFeaturedStickers, UpdateRecentStickers, UpdateConfig, UpdatePtsChanged, UpdateChannelWebPage, UpdateDialogPinned, UpdatePinnedDialogs, UpdateBotWebhookJSON, UpdateBotWebhookJSONQuery, UpdateBotShippingQuery, UpdateBotPrecheckoutQuery, UpdatePhoneCall.
        """
        super().__init__()

        self.messages = messages
        self.pts = pts
        self.pts_count = pts_count

    def on_send(self, writer):
        writer.write_int(UpdateReadMessagesContents.constructor_id, signed=False)
        writer.write_int(0x1cb5c415, signed=False)  # Vector's constructor ID
        writer.write_int(len(self.messages))
        for messages_item in self.messages:
            writer.write_int(messages_item)

        writer.write_int(self.pts)
        writer.write_int(self.pts_count)

    @staticmethod
    def empty():
        """Returns an "empty" instance (all attributes are None)"""
        return UpdateReadMessagesContents(None, None, None)

    def on_response(self, reader):
        reader.read_int()  # Vector's constructor ID
        self.messages = []  # Initialize an empty list
        messages_len = reader.read_int()
        for _ in range(messages_len):
            messages_item = reader.read_int()
            self.messages.append(messages_item)

        self.pts = reader.read_int()
        self.pts_count = reader.read_int()

    def __repr__(self):
        return 'updateReadMessagesContents#68c13933 messages:Vector<int> pts:int pts_count:int = Update'

    def __str__(self):
        return '(updateReadMessagesContents (ID: 0x68c13933) = (messages={}, pts={}, pts_count={}))'.format(None if not self.messages else [str(_) for _ in self.messages], str(self.pts), str(self.pts_count))
