// <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_checkout.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 CCheckout_AddFreeLicense_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 StoreItemID item_id { get; set; }

    }

    [global::ProtoBuf.ProtoContract()]
    public partial class CCheckout_AddFreeLicense_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<uint> packageids_added { get; } = new global::System.Collections.Generic.List<uint>();

        [global::ProtoBuf.ProtoMember(2)]
        public global::System.Collections.Generic.List<uint> appids_added { get; } = new global::System.Collections.Generic.List<uint>();

        [global::ProtoBuf.ProtoMember(3)]
        public uint purchase_result_detail
        {
            get => __pbn__purchase_result_detail.GetValueOrDefault();
            set => __pbn__purchase_result_detail = value;
        }
        public bool ShouldSerializepurchase_result_detail() => __pbn__purchase_result_detail != null;
        public void Resetpurchase_result_detail() => __pbn__purchase_result_detail = null;
        private uint? __pbn__purchase_result_detail;

    }

    [global::ProtoBuf.ProtoContract()]
    public partial class CCheckout_GetFriendOwnershipForGifting_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<StoreItemID> item_ids { get; } = new global::System.Collections.Generic.List<StoreItemID>();

    }

    [global::ProtoBuf.ProtoContract()]
    public partial class CCheckout_GetFriendOwnershipForGifting_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<CCheckout_GetFriendOwnershipForGifting_Response_OwnershipInfo> ownership_info { get; } = new global::System.Collections.Generic.List<CCheckout_GetFriendOwnershipForGifting_Response_OwnershipInfo>();

    }

    [global::ProtoBuf.ProtoContract()]
    public partial class CCheckout_GetFriendOwnershipForGifting_Response_FriendOwnership : 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 uint accountid
        {
            get => __pbn__accountid.GetValueOrDefault();
            set => __pbn__accountid = value;
        }
        public bool ShouldSerializeaccountid() => __pbn__accountid != null;
        public void Resetaccountid() => __pbn__accountid = null;
        private uint? __pbn__accountid;

        [global::ProtoBuf.ProtoMember(2)]
        public bool already_owns
        {
            get => __pbn__already_owns.GetValueOrDefault();
            set => __pbn__already_owns = value;
        }
        public bool ShouldSerializealready_owns() => __pbn__already_owns != null;
        public void Resetalready_owns() => __pbn__already_owns = null;
        private bool? __pbn__already_owns;

        [global::ProtoBuf.ProtoMember(3)]
        public bool wishes_for
        {
            get => __pbn__wishes_for.GetValueOrDefault();
            set => __pbn__wishes_for = value;
        }
        public bool ShouldSerializewishes_for() => __pbn__wishes_for != null;
        public void Resetwishes_for() => __pbn__wishes_for = null;
        private bool? __pbn__wishes_for;

        [global::ProtoBuf.ProtoMember(4)]
        public global::System.Collections.Generic.List<uint> partial_owns_appids { get; } = new global::System.Collections.Generic.List<uint>();

        [global::ProtoBuf.ProtoMember(5)]
        public global::System.Collections.Generic.List<uint> partial_wishes_for { get; } = new global::System.Collections.Generic.List<uint>();

    }

    [global::ProtoBuf.ProtoContract()]
    public partial class CCheckout_GetFriendOwnershipForGifting_Response_OwnershipInfo : 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 StoreItemID item_id { get; set; }

        [global::ProtoBuf.ProtoMember(2)]
        public global::System.Collections.Generic.List<CCheckout_GetFriendOwnershipForGifting_Response_FriendOwnership> friend_ownership { get; } = new global::System.Collections.Generic.List<CCheckout_GetFriendOwnershipForGifting_Response_FriendOwnership>();

    }

    [global::ProtoBuf.ProtoContract()]
    public partial class CCheckout_ValidateCart_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 long gidshoppingcart
        {
            get => __pbn__gidshoppingcart.GetValueOrDefault();
            set => __pbn__gidshoppingcart = value;
        }
        public bool ShouldSerializegidshoppingcart() => __pbn__gidshoppingcart != null;
        public void Resetgidshoppingcart() => __pbn__gidshoppingcart = null;
        private long? __pbn__gidshoppingcart;

        [global::ProtoBuf.ProtoMember(2)]
        public StoreBrowseContext context { get; set; }

        [global::ProtoBuf.ProtoMember(3)]
        public StoreBrowseItemDataRequest data_request { get; set; }

        [global::ProtoBuf.ProtoMember(4)]
        public CartGiftInfo gift_info { get; set; }

        [global::ProtoBuf.ProtoMember(5, DataFormat = global::ProtoBuf.DataFormat.FixedSize)]
        public ulong gidreplayoftransid
        {
            get => __pbn__gidreplayoftransid.GetValueOrDefault();
            set => __pbn__gidreplayoftransid = value;
        }
        public bool ShouldSerializegidreplayoftransid() => __pbn__gidreplayoftransid != null;
        public void Resetgidreplayoftransid() => __pbn__gidreplayoftransid = null;
        private ulong? __pbn__gidreplayoftransid;

        [global::ProtoBuf.ProtoMember(6)]
        public bool for_init_purchase
        {
            get => __pbn__for_init_purchase.GetValueOrDefault();
            set => __pbn__for_init_purchase = value;
        }
        public bool ShouldSerializefor_init_purchase() => __pbn__for_init_purchase != null;
        public void Resetfor_init_purchase() => __pbn__for_init_purchase = null;
        private bool? __pbn__for_init_purchase;

    }

    [global::ProtoBuf.ProtoContract()]
    public partial class CCheckout_ValidateCart_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<CCheckout_ValidateCart_Response_CartItem> cart_items { get; } = new global::System.Collections.Generic.List<CCheckout_ValidateCart_Response_CartItem>();

        [global::ProtoBuf.ProtoMember(5)]
        public CCheckout_ValidateCart_Response_EstimatedTotals estimated_totals { get; set; }

    }

    [global::ProtoBuf.ProtoContract()]
    public partial class CCheckout_ValidateCart_Response_CartItem : 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 line_item_id
        {
            get => __pbn__line_item_id.GetValueOrDefault();
            set => __pbn__line_item_id = value;
        }
        public bool ShouldSerializeline_item_id() => __pbn__line_item_id != null;
        public void Resetline_item_id() => __pbn__line_item_id = null;
        private ulong? __pbn__line_item_id;

        [global::ProtoBuf.ProtoMember(2)]
        public StoreItemID item_id { get; set; }

        [global::ProtoBuf.ProtoMember(3)]
        public StoreItem store_item { get; set; }

        [global::ProtoBuf.ProtoMember(4)]
        public CartGiftInfo gift_info { get; set; }

        [global::ProtoBuf.ProtoMember(5)]
        public CCheckout_ValidateCart_Response_CartItem_Errors errors { get; set; }

        [global::ProtoBuf.ProtoMember(6)]
        public CCheckout_ValidateCart_Response_CartItem_Warnings warnings { get; set; }

        [global::ProtoBuf.ProtoMember(7)]
        public CartAmount subtotal { get; set; }

        [global::ProtoBuf.ProtoMember(8)]
        public CartAmount price_when_added { get; set; }

        [global::ProtoBuf.ProtoMember(9)]
        public CartAmount original_price { get; set; }

        [global::ProtoBuf.ProtoMember(10)]
        public CartCoupon coupon_applied { get; set; }

        [global::ProtoBuf.ProtoMember(11)]
        public CartAmount coupon_discount { get; set; }

        [global::ProtoBuf.ProtoMember(12)]
        public bool can_purchase_as_gift
        {
            get => __pbn__can_purchase_as_gift.GetValueOrDefault();
            set => __pbn__can_purchase_as_gift = value;
        }
        public bool ShouldSerializecan_purchase_as_gift() => __pbn__can_purchase_as_gift != null;
        public void Resetcan_purchase_as_gift() => __pbn__can_purchase_as_gift = null;
        private bool? __pbn__can_purchase_as_gift;

        [global::ProtoBuf.ProtoMember(13)]
        public bool restrict_add_additional_to_cart
        {
            get => __pbn__restrict_add_additional_to_cart.GetValueOrDefault();
            set => __pbn__restrict_add_additional_to_cart = value;
        }
        public bool ShouldSerializerestrict_add_additional_to_cart() => __pbn__restrict_add_additional_to_cart != null;
        public void Resetrestrict_add_additional_to_cart() => __pbn__restrict_add_additional_to_cart = null;
        private bool? __pbn__restrict_add_additional_to_cart;

    }

    [global::ProtoBuf.ProtoContract()]
    public partial class CCheckout_ValidateCart_Response_CartItem_Errors : 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<int> owned_appids { get; } = new global::System.Collections.Generic.List<int>();

        [global::ProtoBuf.ProtoMember(2)]
        public global::System.Collections.Generic.List<int> duplicate_appids_in_cart { get; } = new global::System.Collections.Generic.List<int>();

        [global::ProtoBuf.ProtoMember(3)]
        public bool unavailable_in_country
        {
            get => __pbn__unavailable_in_country.GetValueOrDefault();
            set => __pbn__unavailable_in_country = value;
        }
        public bool ShouldSerializeunavailable_in_country() => __pbn__unavailable_in_country != null;
        public void Resetunavailable_in_country() => __pbn__unavailable_in_country = null;
        private bool? __pbn__unavailable_in_country;

        [global::ProtoBuf.ProtoMember(4)]
        public bool invalid_coupon
        {
            get => __pbn__invalid_coupon.GetValueOrDefault();
            set => __pbn__invalid_coupon = value;
        }
        public bool ShouldSerializeinvalid_coupon() => __pbn__invalid_coupon != null;
        public void Resetinvalid_coupon() => __pbn__invalid_coupon = null;
        private bool? __pbn__invalid_coupon;

        [global::ProtoBuf.ProtoMember(5)]
        public bool invalid_coupon_for_item
        {
            get => __pbn__invalid_coupon_for_item.GetValueOrDefault();
            set => __pbn__invalid_coupon_for_item = value;
        }
        public bool ShouldSerializeinvalid_coupon_for_item() => __pbn__invalid_coupon_for_item != null;
        public void Resetinvalid_coupon_for_item() => __pbn__invalid_coupon_for_item = null;
        private bool? __pbn__invalid_coupon_for_item;

        [global::ProtoBuf.ProtoMember(6)]
        public bool coupon_exclusive_promo
        {
            get => __pbn__coupon_exclusive_promo.GetValueOrDefault();
            set => __pbn__coupon_exclusive_promo = value;
        }
        public bool ShouldSerializecoupon_exclusive_promo() => __pbn__coupon_exclusive_promo != null;
        public void Resetcoupon_exclusive_promo() => __pbn__coupon_exclusive_promo = null;
        private bool? __pbn__coupon_exclusive_promo;

        [global::ProtoBuf.ProtoMember(7)]
        public bool cannot_purchase_as_gift
        {
            get => __pbn__cannot_purchase_as_gift.GetValueOrDefault();
            set => __pbn__cannot_purchase_as_gift = value;
        }
        public bool ShouldSerializecannot_purchase_as_gift() => __pbn__cannot_purchase_as_gift != null;
        public void Resetcannot_purchase_as_gift() => __pbn__cannot_purchase_as_gift = null;
        private bool? __pbn__cannot_purchase_as_gift;

        [global::ProtoBuf.ProtoMember(8)]
        public bool invalid_item
        {
            get => __pbn__invalid_item.GetValueOrDefault();
            set => __pbn__invalid_item = value;
        }
        public bool ShouldSerializeinvalid_item() => __pbn__invalid_item != null;
        public void Resetinvalid_item() => __pbn__invalid_item = null;
        private bool? __pbn__invalid_item;

        [global::ProtoBuf.ProtoMember(9)]
        public bool too_many_in_cart
        {
            get => __pbn__too_many_in_cart.GetValueOrDefault();
            set => __pbn__too_many_in_cart = value;
        }
        public bool ShouldSerializetoo_many_in_cart() => __pbn__too_many_in_cart != null;
        public void Resettoo_many_in_cart() => __pbn__too_many_in_cart = null;
        private bool? __pbn__too_many_in_cart;

        [global::ProtoBuf.ProtoMember(10)]
        public bool has_existing_billing_agreement
        {
            get => __pbn__has_existing_billing_agreement.GetValueOrDefault();
            set => __pbn__has_existing_billing_agreement = value;
        }
        public bool ShouldSerializehas_existing_billing_agreement() => __pbn__has_existing_billing_agreement != null;
        public void Resethas_existing_billing_agreement() => __pbn__has_existing_billing_agreement = null;
        private bool? __pbn__has_existing_billing_agreement;

        [global::ProtoBuf.ProtoMember(11)]
        public global::System.Collections.Generic.List<int> missing_must_own_appids { get; } = new global::System.Collections.Generic.List<int>();

    }

    [global::ProtoBuf.ProtoContract()]
    public partial class CCheckout_ValidateCart_Response_CartItem_Warnings : 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<int> owned_appids { get; } = new global::System.Collections.Generic.List<int>();

        [global::ProtoBuf.ProtoMember(2)]
        public global::System.Collections.Generic.List<int> owned_appids_extra_copy { get; } = new global::System.Collections.Generic.List<int>();

        [global::ProtoBuf.ProtoMember(3)]
        public global::System.Collections.Generic.List<CCheckout_ValidateCart_Response_CartItem_Warnings_AppInMasterSub> appids_in_mastersub { get; } = new global::System.Collections.Generic.List<CCheckout_ValidateCart_Response_CartItem_Warnings_AppInMasterSub>();

        [global::ProtoBuf.ProtoMember(4)]
        public bool price_has_changed
        {
            get => __pbn__price_has_changed.GetValueOrDefault();
            set => __pbn__price_has_changed = value;
        }
        public bool ShouldSerializeprice_has_changed() => __pbn__price_has_changed != null;
        public void Resetprice_has_changed() => __pbn__price_has_changed = null;
        private bool? __pbn__price_has_changed;

        [global::ProtoBuf.ProtoMember(5)]
        public bool non_refundable
        {
            get => __pbn__non_refundable.GetValueOrDefault();
            set => __pbn__non_refundable = value;
        }
        public bool ShouldSerializenon_refundable() => __pbn__non_refundable != null;
        public void Resetnon_refundable() => __pbn__non_refundable = null;
        private bool? __pbn__non_refundable;

    }

    [global::ProtoBuf.ProtoContract()]
    public partial class CCheckout_ValidateCart_Response_CartItem_Warnings_AppInMasterSub : 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 uint cart_appid
        {
            get => __pbn__cart_appid.GetValueOrDefault();
            set => __pbn__cart_appid = value;
        }
        public bool ShouldSerializecart_appid() => __pbn__cart_appid != null;
        public void Resetcart_appid() => __pbn__cart_appid = null;
        private uint? __pbn__cart_appid;

        [global::ProtoBuf.ProtoMember(2)]
        public uint mastersub_appid
        {
            get => __pbn__mastersub_appid.GetValueOrDefault();
            set => __pbn__mastersub_appid = value;
        }
        public bool ShouldSerializemastersub_appid() => __pbn__mastersub_appid != null;
        public void Resetmastersub_appid() => __pbn__mastersub_appid = null;
        private uint? __pbn__mastersub_appid;

    }

    [global::ProtoBuf.ProtoContract()]
    public partial class CCheckout_ValidateCart_Response_EstimatedTotals : 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 CartAmount subtotal { get; set; }

        [global::ProtoBuf.ProtoMember(2)]
        public CartAmount wallet_balance { get; set; }

        [global::ProtoBuf.ProtoMember(3)]
        public CartAmount exceeding_wallet_balance { get; set; }

        [global::ProtoBuf.ProtoMember(4)]
        public CartAmount remaining_wallet_balance { get; set; }

    }

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

        public AsyncJob<SteamUnifiedMessages.ServiceMethodResponse<CCheckout_AddFreeLicense_Response>> AddFreeLicense( CCheckout_AddFreeLicense_Request request )
        {
            return UnifiedMessages.SendMessage<CCheckout_AddFreeLicense_Request, CCheckout_AddFreeLicense_Response>( "Checkout.AddFreeLicense#1", request );
        }

        public AsyncJob<SteamUnifiedMessages.ServiceMethodResponse<CCheckout_GetFriendOwnershipForGifting_Response>> GetFriendOwnershipForGifting( CCheckout_GetFriendOwnershipForGifting_Request request )
        {
            return UnifiedMessages.SendMessage<CCheckout_GetFriendOwnershipForGifting_Request, CCheckout_GetFriendOwnershipForGifting_Response>( "Checkout.GetFriendOwnershipForGifting#1", request );
        }

        public AsyncJob<SteamUnifiedMessages.ServiceMethodResponse<CCheckout_ValidateCart_Response>> ValidateCart( CCheckout_ValidateCart_Request request )
        {
            return UnifiedMessages.SendMessage<CCheckout_ValidateCart_Request, CCheckout_ValidateCart_Response>( "Checkout.ValidateCart#1", request );
        }

        public override void HandleResponseMsg( string methodName, PacketClientMsgProtobuf packetMsg )
        {
            switch ( methodName )
            {
                case "AddFreeLicense":
                    PostResponseMsg<CCheckout_AddFreeLicense_Response>( packetMsg );
                    break;
                case "GetFriendOwnershipForGifting":
                    PostResponseMsg<CCheckout_GetFriendOwnershipForGifting_Response>( packetMsg );
                    break;
                case "ValidateCart":
                    PostResponseMsg<CCheckout_ValidateCart_Response>( packetMsg );
                    break;
            }
        }

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

}

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