namespace MyTelegram;

public record MessageItem
(Peer OwnerPeer,
    Peer ToPeer,
    Peer SenderPeer,
    long SenderUserId,
    int MessageId,
    string Message,
    int Date,
    long RandomId,
    bool IsOut,
    SendMessageType SendMessageType = SendMessageType.Text,
    MessageType MessageType = MessageType.Text,
    MessageSubType MessageSubType = MessageSubType.Normal,
    IInputReplyTo? InputReplyTo = null,
    IMessageAction? MessageAction = null,
    //string? MessageActionData = null,
    MessageActionType MessageActionType = MessageActionType.None,
    TVector<IMessageEntity>? Entities = null,
    IMessageMedia? Media = null,
    long? GroupId = null,
    bool Post = false,
    MessageFwdHeader? FwdHeader = null,
    int? Views = null,
    long? PollId = null,
    IReplyMarkup? ReplyMarkup = null,
    long? LinkedChannelId = null,
    int? TopMsgId = null,
    string? PostAuthor = null,
    Peer? SavedPeerId = null,
    Peer? SendAs = null,
    MessageReply? Reply = null,
    bool EditHide = false,
    bool IsForwardFromChannelPost = false,
    long? PostChannelId = null,
    int? PostMessageId = null,
    //bool IsQuickReply = false,
    QuickReplyItem? QuickReplyItem = null,
    Guid? BatchId = null,
    long? Effect = null,
    List<ReactionCount>? Reactions = null,
    List<MessagePeerReaction>? RecentReactions = null,
    int? EditDate = null,
    IReadOnlyCollection<InboxItem>? InboxItems = null,
    int Pts = 0,
    List<ReplyToMsgItem>? ReplyToMsgItems = null,
    bool Silent = false,
    int? ScheduleDate = null,
    int? ScheduleMessageId = null,
    int? TtlPeriod = null,
    bool IsTtlFromDefaultSetting = false,
    bool Pinned = false,    bool InvertMedia = false,
    bool PublicPosts = false,
    List<string>? Hashtags = null,
    List<long>? MentionedUserIds = null
//int? DefaultHistoryTtl = null,
//int? Ttl = null
);