// <auto-generated>
//   This file was generated by a tool; you should avoid making direct changes.
//   Consider using 'partial classes' to extend these types
//   Input: service_steamnotification.proto
// </auto-generated>

#region Designer generated code
#pragma warning disable CS0612, CS0618, CS1591, CS3021, IDE0079, IDE1006, RCS1036, RCS1057, RCS1085, RCS1192
namespace SteamKit2.WebUI.Internal
{

    [global::ProtoBuf.ProtoContract()]
    public partial class CSteamNotification_GetPreferences_Request : global::ProtoBuf.IExtensible
    {
        private global::ProtoBuf.IExtension __pbn__extensionData;
        global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
            => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    }

    [global::ProtoBuf.ProtoContract()]
    public partial class CSteamNotification_GetPreferences_Response : global::ProtoBuf.IExtensible
    {
        private global::ProtoBuf.IExtension __pbn__extensionData;
        global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
            => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

        [global::ProtoBuf.ProtoMember(1)]
        public global::System.Collections.Generic.List<SteamNotificationPreference> preferences { get; } = new global::System.Collections.Generic.List<SteamNotificationPreference>();

    }

    [global::ProtoBuf.ProtoContract()]
    public partial class CSteamNotification_GetSteamNotifications_Request : global::ProtoBuf.IExtensible
    {
        private global::ProtoBuf.IExtension __pbn__extensionData;
        global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
            => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

        [global::ProtoBuf.ProtoMember(1)]
        [global::System.ComponentModel.DefaultValue(false)]
        public bool include_hidden
        {
            get => __pbn__include_hidden ?? false;
            set => __pbn__include_hidden = value;
        }
        public bool ShouldSerializeinclude_hidden() => __pbn__include_hidden != null;
        public void Resetinclude_hidden() => __pbn__include_hidden = null;
        private bool? __pbn__include_hidden;

        [global::ProtoBuf.ProtoMember(2)]
        [global::System.ComponentModel.DefaultValue(0)]
        public int language
        {
            get => __pbn__language ?? 0;
            set => __pbn__language = value;
        }
        public bool ShouldSerializelanguage() => __pbn__language != null;
        public void Resetlanguage() => __pbn__language = null;
        private int? __pbn__language;

        [global::ProtoBuf.ProtoMember(3)]
        [global::System.ComponentModel.DefaultValue(true)]
        public bool include_confirmation_count
        {
            get => __pbn__include_confirmation_count ?? true;
            set => __pbn__include_confirmation_count = value;
        }
        public bool ShouldSerializeinclude_confirmation_count() => __pbn__include_confirmation_count != null;
        public void Resetinclude_confirmation_count() => __pbn__include_confirmation_count = null;
        private bool? __pbn__include_confirmation_count;

        [global::ProtoBuf.ProtoMember(4)]
        [global::System.ComponentModel.DefaultValue(false)]
        public bool include_pinned_counts
        {
            get => __pbn__include_pinned_counts ?? false;
            set => __pbn__include_pinned_counts = value;
        }
        public bool ShouldSerializeinclude_pinned_counts() => __pbn__include_pinned_counts != null;
        public void Resetinclude_pinned_counts() => __pbn__include_pinned_counts = null;
        private bool? __pbn__include_pinned_counts;

        [global::ProtoBuf.ProtoMember(5)]
        [global::System.ComponentModel.DefaultValue(true)]
        public bool include_read
        {
            get => __pbn__include_read ?? true;
            set => __pbn__include_read = value;
        }
        public bool ShouldSerializeinclude_read() => __pbn__include_read != null;
        public void Resetinclude_read() => __pbn__include_read = null;
        private bool? __pbn__include_read;

        [global::ProtoBuf.ProtoMember(6)]
        [global::System.ComponentModel.DefaultValue(false)]
        public bool count_only
        {
            get => __pbn__count_only ?? false;
            set => __pbn__count_only = value;
        }
        public bool ShouldSerializecount_only() => __pbn__count_only != null;
        public void Resetcount_only() => __pbn__count_only = null;
        private bool? __pbn__count_only;

    }

    [global::ProtoBuf.ProtoContract()]
    public partial class CSteamNotification_GetSteamNotifications_Response : global::ProtoBuf.IExtensible
    {
        private global::ProtoBuf.IExtension __pbn__extensionData;
        global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
            => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

        [global::ProtoBuf.ProtoMember(1)]
        public global::System.Collections.Generic.List<SteamNotificationData> notifications { get; } = new global::System.Collections.Generic.List<SteamNotificationData>();

        [global::ProtoBuf.ProtoMember(2)]
        public int confirmation_count
        {
            get => __pbn__confirmation_count.GetValueOrDefault();
            set => __pbn__confirmation_count = value;
        }
        public bool ShouldSerializeconfirmation_count() => __pbn__confirmation_count != null;
        public void Resetconfirmation_count() => __pbn__confirmation_count = null;
        private int? __pbn__confirmation_count;

        [global::ProtoBuf.ProtoMember(3)]
        public uint pending_gift_count
        {
            get => __pbn__pending_gift_count.GetValueOrDefault();
            set => __pbn__pending_gift_count = value;
        }
        public bool ShouldSerializepending_gift_count() => __pbn__pending_gift_count != null;
        public void Resetpending_gift_count() => __pbn__pending_gift_count = null;
        private uint? __pbn__pending_gift_count;

        [global::ProtoBuf.ProtoMember(5)]
        public uint pending_friend_count
        {
            get => __pbn__pending_friend_count.GetValueOrDefault();
            set => __pbn__pending_friend_count = value;
        }
        public bool ShouldSerializepending_friend_count() => __pbn__pending_friend_count != null;
        public void Resetpending_friend_count() => __pbn__pending_friend_count = null;
        private uint? __pbn__pending_friend_count;

        [global::ProtoBuf.ProtoMember(6)]
        public uint unread_count
        {
            get => __pbn__unread_count.GetValueOrDefault();
            set => __pbn__unread_count = value;
        }
        public bool ShouldSerializeunread_count() => __pbn__unread_count != null;
        public void Resetunread_count() => __pbn__unread_count = null;
        private uint? __pbn__unread_count;

        [global::ProtoBuf.ProtoMember(7)]
        public uint pending_family_invite_count
        {
            get => __pbn__pending_family_invite_count.GetValueOrDefault();
            set => __pbn__pending_family_invite_count = value;
        }
        public bool ShouldSerializepending_family_invite_count() => __pbn__pending_family_invite_count != null;
        public void Resetpending_family_invite_count() => __pbn__pending_family_invite_count = null;
        private uint? __pbn__pending_family_invite_count;

    }

    [global::ProtoBuf.ProtoContract()]
    public partial class CSteamNotification_NotificationsReceived_Notification : global::ProtoBuf.IExtensible
    {
        private global::ProtoBuf.IExtension __pbn__extensionData;
        global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
            => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

        [global::ProtoBuf.ProtoMember(1)]
        public global::System.Collections.Generic.List<SteamNotificationData> notifications { get; } = new global::System.Collections.Generic.List<SteamNotificationData>();

        [global::ProtoBuf.ProtoMember(2)]
        public uint pending_gift_count
        {
            get => __pbn__pending_gift_count.GetValueOrDefault();
            set => __pbn__pending_gift_count = value;
        }
        public bool ShouldSerializepending_gift_count() => __pbn__pending_gift_count != null;
        public void Resetpending_gift_count() => __pbn__pending_gift_count = null;
        private uint? __pbn__pending_gift_count;

        [global::ProtoBuf.ProtoMember(3)]
        public uint pending_friend_count
        {
            get => __pbn__pending_friend_count.GetValueOrDefault();
            set => __pbn__pending_friend_count = value;
        }
        public bool ShouldSerializepending_friend_count() => __pbn__pending_friend_count != null;
        public void Resetpending_friend_count() => __pbn__pending_friend_count = null;
        private uint? __pbn__pending_friend_count;

        [global::ProtoBuf.ProtoMember(4)]
        public uint pending_family_invite_count
        {
            get => __pbn__pending_family_invite_count.GetValueOrDefault();
            set => __pbn__pending_family_invite_count = value;
        }
        public bool ShouldSerializepending_family_invite_count() => __pbn__pending_family_invite_count != null;
        public void Resetpending_family_invite_count() => __pbn__pending_family_invite_count = null;
        private uint? __pbn__pending_family_invite_count;

    }

    [global::ProtoBuf.ProtoContract()]
    public partial class CSteamNotification_PreferencesUpdated_Notification : global::ProtoBuf.IExtensible
    {
        private global::ProtoBuf.IExtension __pbn__extensionData;
        global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
            => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

        [global::ProtoBuf.ProtoMember(1)]
        public global::System.Collections.Generic.List<SteamNotificationPreference> preferences { get; } = new global::System.Collections.Generic.List<SteamNotificationPreference>();

    }

    [global::ProtoBuf.ProtoContract()]
    public partial class CSteamNotification_SetPreferences_Request : global::ProtoBuf.IExtensible
    {
        private global::ProtoBuf.IExtension __pbn__extensionData;
        global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
            => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

        [global::ProtoBuf.ProtoMember(1)]
        public global::System.Collections.Generic.List<SteamNotificationPreference> preferences { get; } = new global::System.Collections.Generic.List<SteamNotificationPreference>();

    }

    [global::ProtoBuf.ProtoContract()]
    public partial class CSteamNotification_SetPreferences_Response : global::ProtoBuf.IExtensible
    {
        private global::ProtoBuf.IExtension __pbn__extensionData;
        global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
            => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

    }

    [global::ProtoBuf.ProtoContract()]
    public partial class SteamNotificationData : global::ProtoBuf.IExtensible
    {
        private global::ProtoBuf.IExtension __pbn__extensionData;
        global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
            => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

        [global::ProtoBuf.ProtoMember(1)]
        public ulong notification_id
        {
            get => __pbn__notification_id.GetValueOrDefault();
            set => __pbn__notification_id = value;
        }
        public bool ShouldSerializenotification_id() => __pbn__notification_id != null;
        public void Resetnotification_id() => __pbn__notification_id = null;
        private ulong? __pbn__notification_id;

        [global::ProtoBuf.ProtoMember(2)]
        public uint notification_targets
        {
            get => __pbn__notification_targets.GetValueOrDefault();
            set => __pbn__notification_targets = value;
        }
        public bool ShouldSerializenotification_targets() => __pbn__notification_targets != null;
        public void Resetnotification_targets() => __pbn__notification_targets = null;
        private uint? __pbn__notification_targets;

        [global::ProtoBuf.ProtoMember(3)]
        public int notification_type
        {
            get => __pbn__notification_type.GetValueOrDefault();
            set => __pbn__notification_type = value;
        }
        public bool ShouldSerializenotification_type() => __pbn__notification_type != null;
        public void Resetnotification_type() => __pbn__notification_type = null;
        private int? __pbn__notification_type;

        [global::ProtoBuf.ProtoMember(4)]
        [global::System.ComponentModel.DefaultValue("")]
        public string body_data
        {
            get => __pbn__body_data ?? "";
            set => __pbn__body_data = value;
        }
        public bool ShouldSerializebody_data() => __pbn__body_data != null;
        public void Resetbody_data() => __pbn__body_data = null;
        private string __pbn__body_data;

        [global::ProtoBuf.ProtoMember(7)]
        public bool read
        {
            get => __pbn__read.GetValueOrDefault();
            set => __pbn__read = value;
        }
        public bool ShouldSerializeread() => __pbn__read != null;
        public void Resetread() => __pbn__read = null;
        private bool? __pbn__read;

        [global::ProtoBuf.ProtoMember(8)]
        public uint timestamp
        {
            get => __pbn__timestamp.GetValueOrDefault();
            set => __pbn__timestamp = value;
        }
        public bool ShouldSerializetimestamp() => __pbn__timestamp != null;
        public void Resettimestamp() => __pbn__timestamp = null;
        private uint? __pbn__timestamp;

        [global::ProtoBuf.ProtoMember(9)]
        public bool hidden
        {
            get => __pbn__hidden.GetValueOrDefault();
            set => __pbn__hidden = value;
        }
        public bool ShouldSerializehidden() => __pbn__hidden != null;
        public void Resethidden() => __pbn__hidden = null;
        private bool? __pbn__hidden;

        [global::ProtoBuf.ProtoMember(10)]
        public uint expiry
        {
            get => __pbn__expiry.GetValueOrDefault();
            set => __pbn__expiry = value;
        }
        public bool ShouldSerializeexpiry() => __pbn__expiry != null;
        public void Resetexpiry() => __pbn__expiry = null;
        private uint? __pbn__expiry;

        [global::ProtoBuf.ProtoMember(11)]
        public uint viewed
        {
            get => __pbn__viewed.GetValueOrDefault();
            set => __pbn__viewed = value;
        }
        public bool ShouldSerializeviewed() => __pbn__viewed != null;
        public void Resetviewed() => __pbn__viewed = null;
        private uint? __pbn__viewed;

    }

    [global::ProtoBuf.ProtoContract()]
    public partial class SteamNotificationPreference : global::ProtoBuf.IExtensible
    {
        private global::ProtoBuf.IExtension __pbn__extensionData;
        global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
            => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing);

        [global::ProtoBuf.ProtoMember(1)]
        public int notification_type
        {
            get => __pbn__notification_type.GetValueOrDefault();
            set => __pbn__notification_type = value;
        }
        public bool ShouldSerializenotification_type() => __pbn__notification_type != null;
        public void Resetnotification_type() => __pbn__notification_type = null;
        private int? __pbn__notification_type;

        [global::ProtoBuf.ProtoMember(2)]
        public uint notification_targets
        {
            get => __pbn__notification_targets.GetValueOrDefault();
            set => __pbn__notification_targets = value;
        }
        public bool ShouldSerializenotification_targets() => __pbn__notification_targets != null;
        public void Resetnotification_targets() => __pbn__notification_targets = null;
        private uint? __pbn__notification_targets;

    }

    public class SteamNotification : SteamUnifiedMessages.UnifiedService
    {
        public override string ServiceName { get; } = "SteamNotification";

        public AsyncJob<SteamUnifiedMessages.ServiceMethodResponse<CSteamNotification_GetPreferences_Response>> GetPreferences( CSteamNotification_GetPreferences_Request request )
        {
            return UnifiedMessages.SendMessage<CSteamNotification_GetPreferences_Request, CSteamNotification_GetPreferences_Response>( "SteamNotification.GetPreferences#1", request );
        }

        public AsyncJob<SteamUnifiedMessages.ServiceMethodResponse<CSteamNotification_GetSteamNotifications_Response>> GetSteamNotifications( CSteamNotification_GetSteamNotifications_Request request )
        {
            return UnifiedMessages.SendMessage<CSteamNotification_GetSteamNotifications_Request, CSteamNotification_GetSteamNotifications_Response>( "SteamNotification.GetSteamNotifications#1", request );
        }

        public AsyncJob<SteamUnifiedMessages.ServiceMethodResponse<CSteamNotification_SetPreferences_Response>> SetPreferences( CSteamNotification_SetPreferences_Request request )
        {
            return UnifiedMessages.SendMessage<CSteamNotification_SetPreferences_Request, CSteamNotification_SetPreferences_Response>( "SteamNotification.SetPreferences#1", request );
        }

        public override void HandleResponseMsg( string methodName, PacketClientMsgProtobuf packetMsg )
        {
            switch ( methodName )
            {
                case "GetPreferences":
                    PostResponseMsg<CSteamNotification_GetPreferences_Response>( packetMsg );
                    break;
                case "GetSteamNotifications":
                    PostResponseMsg<CSteamNotification_GetSteamNotifications_Response>( packetMsg );
                    break;
                case "SetPreferences":
                    PostResponseMsg<CSteamNotification_SetPreferences_Response>( packetMsg );
                    break;
            }
        }

        public override void HandleNotificationMsg( string methodName, PacketClientMsgProtobuf packetMsg )
        {
        }
    }

    public class SteamNotificationClient : SteamUnifiedMessages.UnifiedService
    {
        public override string ServiceName { get; } = "SteamNotificationClient";

        public void NotificationsReceived(CSteamNotification_NotificationsReceived_Notification request )
        {
            UnifiedMessages.SendNotification<CSteamNotification_NotificationsReceived_Notification>( "SteamNotificationClient.NotificationsReceived#1", request );
        }

        public void PreferencesUpdated(CSteamNotification_PreferencesUpdated_Notification request )
        {
            UnifiedMessages.SendNotification<CSteamNotification_PreferencesUpdated_Notification>( "SteamNotificationClient.PreferencesUpdated#1", request );
        }

        public override void HandleResponseMsg( string methodName, PacketClientMsgProtobuf packetMsg )
        {
        }

        public override void HandleNotificationMsg( string methodName, PacketClientMsgProtobuf packetMsg )
        {
            switch ( methodName )
            {
                case "NotificationsReceived":
                    PostNotificationMsg<CSteamNotification_NotificationsReceived_Notification>( packetMsg );
                    break;
                case "PreferencesUpdated":
                    PostNotificationMsg<CSteamNotification_PreferencesUpdated_Notification>( packetMsg );
                    break;
            }
        }
    }

}

#pragma warning restore CS0612, CS0618, CS1591, CS3021, IDE0079, IDE1006, RCS1036, RCS1057, RCS1085, RCS1192
#endregion
