//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

using Ajuna.NetApi;
using Ajuna.NetApi.Model.Extrinsics;
using Ajuna.NetApi.Model.Meta;
using Ajuna.NetApi.Model.Types;
using Ajuna.NetApi.Model.Types.Base;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;


namespace Bajun.Network.NET.NetApiExt.Generated.Storage
{
    
    
    public sealed class AwesomeAvatarsStorage
    {
        
        // Substrate client for the storage calls.
        private SubstrateClientExt _client;
        
        public AwesomeAvatarsStorage(SubstrateClientExt client)
        {
            this._client = client;
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("AwesomeAvatars", "Organizer"), new System.Tuple<Ajuna.NetApi.Model.Meta.Storage.Hasher[], System.Type, System.Type>(null, null, typeof(Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32)));
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("AwesomeAvatars", "Treasurer"), new System.Tuple<Ajuna.NetApi.Model.Meta.Storage.Hasher[], System.Type, System.Type>(new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                            Ajuna.NetApi.Model.Meta.Storage.Hasher.Identity}, typeof(Ajuna.NetApi.Model.Types.Primitive.U16), typeof(Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32)));
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("AwesomeAvatars", "CurrentSeasonId"), new System.Tuple<Ajuna.NetApi.Model.Meta.Storage.Hasher[], System.Type, System.Type>(null, null, typeof(Ajuna.NetApi.Model.Types.Primitive.U16)));
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("AwesomeAvatars", "CurrentSeasonStatus"), new System.Tuple<Ajuna.NetApi.Model.Meta.Storage.Hasher[], System.Type, System.Type>(null, null, typeof(Bajun.Network.NET.NetApiExt.Generated.Model.pallet_ajuna_awesome_avatars.types.season.SeasonStatus)));
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("AwesomeAvatars", "Seasons"), new System.Tuple<Ajuna.NetApi.Model.Meta.Storage.Hasher[], System.Type, System.Type>(new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                            Ajuna.NetApi.Model.Meta.Storage.Hasher.Identity}, typeof(Ajuna.NetApi.Model.Types.Primitive.U16), typeof(Bajun.Network.NET.NetApiExt.Generated.Model.pallet_ajuna_awesome_avatars.types.season.Season)));
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("AwesomeAvatars", "Treasury"), new System.Tuple<Ajuna.NetApi.Model.Meta.Storage.Hasher[], System.Type, System.Type>(new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                            Ajuna.NetApi.Model.Meta.Storage.Hasher.Identity}, typeof(Ajuna.NetApi.Model.Types.Primitive.U16), typeof(Ajuna.NetApi.Model.Types.Primitive.U128)));
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("AwesomeAvatars", "GlobalConfigs"), new System.Tuple<Ajuna.NetApi.Model.Meta.Storage.Hasher[], System.Type, System.Type>(null, null, typeof(Bajun.Network.NET.NetApiExt.Generated.Model.pallet_ajuna_awesome_avatars.types.config.GlobalConfig)));
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("AwesomeAvatars", "Avatars"), new System.Tuple<Ajuna.NetApi.Model.Meta.Storage.Hasher[], System.Type, System.Type>(new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                            Ajuna.NetApi.Model.Meta.Storage.Hasher.Identity}, typeof(Bajun.Network.NET.NetApiExt.Generated.Model.primitive_types.H256), typeof(Ajuna.NetApi.Model.Types.Base.BaseTuple<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32, Bajun.Network.NET.NetApiExt.Generated.Model.pallet_ajuna_awesome_avatars.types.avatar.Avatar>)));
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("AwesomeAvatars", "Owners"), new System.Tuple<Ajuna.NetApi.Model.Meta.Storage.Hasher[], System.Type, System.Type>(new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                            Ajuna.NetApi.Model.Meta.Storage.Hasher.Identity}, typeof(Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32), typeof(Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.bounded.bounded_vec.BoundedVecT31)));
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("AwesomeAvatars", "LockedAvatars"), new System.Tuple<Ajuna.NetApi.Model.Meta.Storage.Hasher[], System.Type, System.Type>(new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                            Ajuna.NetApi.Model.Meta.Storage.Hasher.Identity}, typeof(Bajun.Network.NET.NetApiExt.Generated.Model.primitive_types.H256), typeof(Ajuna.NetApi.Model.Types.Primitive.U128)));
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("AwesomeAvatars", "Accounts"), new System.Tuple<Ajuna.NetApi.Model.Meta.Storage.Hasher[], System.Type, System.Type>(new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                            Ajuna.NetApi.Model.Meta.Storage.Hasher.Identity}, typeof(Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32), typeof(Bajun.Network.NET.NetApiExt.Generated.Model.pallet_ajuna_awesome_avatars.types.account.AccountInfo)));
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("AwesomeAvatars", "SeasonStats"), new System.Tuple<Ajuna.NetApi.Model.Meta.Storage.Hasher[], System.Type, System.Type>(new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                            Ajuna.NetApi.Model.Meta.Storage.Hasher.Identity,
                            Ajuna.NetApi.Model.Meta.Storage.Hasher.Identity}, typeof(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U16, Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32>), typeof(Bajun.Network.NET.NetApiExt.Generated.Model.pallet_ajuna_awesome_avatars.types.account.SeasonInfo)));
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("AwesomeAvatars", "Trade"), new System.Tuple<Ajuna.NetApi.Model.Meta.Storage.Hasher[], System.Type, System.Type>(new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                            Ajuna.NetApi.Model.Meta.Storage.Hasher.Identity}, typeof(Bajun.Network.NET.NetApiExt.Generated.Model.primitive_types.H256), typeof(Ajuna.NetApi.Model.Types.Primitive.U128)));
        }
        
        /// <summary>
        /// >> OrganizerParams
        /// </summary>
        public static string OrganizerParams()
        {
            return RequestGenerator.GetStorage("AwesomeAvatars", "Organizer", Ajuna.NetApi.Model.Meta.Storage.Type.Plain);
        }
        
        /// <summary>
        /// >> OrganizerDefault
        /// Default value as hex string
        /// </summary>
        public static string OrganizerDefault()
        {
            return "0x00";
        }
        
        /// <summary>
        /// >> Organizer
        /// </summary>
        public async Task<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32> Organizer(CancellationToken token)
        {
            string parameters = AwesomeAvatarsStorage.OrganizerParams();
            var result = await _client.GetStorageAsync<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32>(parameters, token);
            return result;
        }
        
        /// <summary>
        /// >> TreasurerParams
        /// </summary>
        public static string TreasurerParams(Ajuna.NetApi.Model.Types.Primitive.U16 key)
        {
            return RequestGenerator.GetStorage("AwesomeAvatars", "Treasurer", Ajuna.NetApi.Model.Meta.Storage.Type.Map, new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.Identity}, new Ajuna.NetApi.Model.Types.IType[] {
                        key});
        }
        
        /// <summary>
        /// >> TreasurerDefault
        /// Default value as hex string
        /// </summary>
        public static string TreasurerDefault()
        {
            return "0x00";
        }
        
        /// <summary>
        /// >> Treasurer
        /// </summary>
        public async Task<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32> Treasurer(Ajuna.NetApi.Model.Types.Primitive.U16 key, CancellationToken token)
        {
            string parameters = AwesomeAvatarsStorage.TreasurerParams(key);
            var result = await _client.GetStorageAsync<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32>(parameters, token);
            return result;
        }
        
        /// <summary>
        /// >> CurrentSeasonIdParams
        ///  Contains the identifier of the current season.
        /// </summary>
        public static string CurrentSeasonIdParams()
        {
            return RequestGenerator.GetStorage("AwesomeAvatars", "CurrentSeasonId", Ajuna.NetApi.Model.Meta.Storage.Type.Plain);
        }
        
        /// <summary>
        /// >> CurrentSeasonIdDefault
        /// Default value as hex string
        /// </summary>
        public static string CurrentSeasonIdDefault()
        {
            return "0x0000";
        }
        
        /// <summary>
        /// >> CurrentSeasonId
        ///  Contains the identifier of the current season.
        /// </summary>
        public async Task<Ajuna.NetApi.Model.Types.Primitive.U16> CurrentSeasonId(CancellationToken token)
        {
            string parameters = AwesomeAvatarsStorage.CurrentSeasonIdParams();
            var result = await _client.GetStorageAsync<Ajuna.NetApi.Model.Types.Primitive.U16>(parameters, token);
            return result;
        }
        
        /// <summary>
        /// >> CurrentSeasonStatusParams
        /// </summary>
        public static string CurrentSeasonStatusParams()
        {
            return RequestGenerator.GetStorage("AwesomeAvatars", "CurrentSeasonStatus", Ajuna.NetApi.Model.Meta.Storage.Type.Plain);
        }
        
        /// <summary>
        /// >> CurrentSeasonStatusDefault
        /// Default value as hex string
        /// </summary>
        public static string CurrentSeasonStatusDefault()
        {
            return "0x00000000000000";
        }
        
        /// <summary>
        /// >> CurrentSeasonStatus
        /// </summary>
        public async Task<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_ajuna_awesome_avatars.types.season.SeasonStatus> CurrentSeasonStatus(CancellationToken token)
        {
            string parameters = AwesomeAvatarsStorage.CurrentSeasonStatusParams();
            var result = await _client.GetStorageAsync<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_ajuna_awesome_avatars.types.season.SeasonStatus>(parameters, token);
            return result;
        }
        
        /// <summary>
        /// >> SeasonsParams
        ///  Storage for the seasons.
        /// </summary>
        public static string SeasonsParams(Ajuna.NetApi.Model.Types.Primitive.U16 key)
        {
            return RequestGenerator.GetStorage("AwesomeAvatars", "Seasons", Ajuna.NetApi.Model.Meta.Storage.Type.Map, new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.Identity}, new Ajuna.NetApi.Model.Types.IType[] {
                        key});
        }
        
        /// <summary>
        /// >> SeasonsDefault
        /// Default value as hex string
        /// </summary>
        public static string SeasonsDefault()
        {
            return "0x00";
        }
        
        /// <summary>
        /// >> Seasons
        ///  Storage for the seasons.
        /// </summary>
        public async Task<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_ajuna_awesome_avatars.types.season.Season> Seasons(Ajuna.NetApi.Model.Types.Primitive.U16 key, CancellationToken token)
        {
            string parameters = AwesomeAvatarsStorage.SeasonsParams(key);
            var result = await _client.GetStorageAsync<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_ajuna_awesome_avatars.types.season.Season>(parameters, token);
            return result;
        }
        
        /// <summary>
        /// >> TreasuryParams
        /// </summary>
        public static string TreasuryParams(Ajuna.NetApi.Model.Types.Primitive.U16 key)
        {
            return RequestGenerator.GetStorage("AwesomeAvatars", "Treasury", Ajuna.NetApi.Model.Meta.Storage.Type.Map, new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.Identity}, new Ajuna.NetApi.Model.Types.IType[] {
                        key});
        }
        
        /// <summary>
        /// >> TreasuryDefault
        /// Default value as hex string
        /// </summary>
        public static string TreasuryDefault()
        {
            return "0x00000000000000000000000000000000";
        }
        
        /// <summary>
        /// >> Treasury
        /// </summary>
        public async Task<Ajuna.NetApi.Model.Types.Primitive.U128> Treasury(Ajuna.NetApi.Model.Types.Primitive.U16 key, CancellationToken token)
        {
            string parameters = AwesomeAvatarsStorage.TreasuryParams(key);
            var result = await _client.GetStorageAsync<Ajuna.NetApi.Model.Types.Primitive.U128>(parameters, token);
            return result;
        }
        
        /// <summary>
        /// >> GlobalConfigsParams
        /// </summary>
        public static string GlobalConfigsParams()
        {
            return RequestGenerator.GetStorage("AwesomeAvatars", "GlobalConfigs", Ajuna.NetApi.Model.Meta.Storage.Type.Plain);
        }
        
        /// <summary>
        /// >> GlobalConfigsDefault
        /// Default value as hex string
        /// </summary>
        public static string GlobalConfigsDefault()
        {
            return "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000" +
                "00000000000000000000000000000000000000000000000000000000000000000000000000000000" +
                "000000000000000000000000000000000000000000000000000000000000000";
        }
        
        /// <summary>
        /// >> GlobalConfigs
        /// </summary>
        public async Task<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_ajuna_awesome_avatars.types.config.GlobalConfig> GlobalConfigs(CancellationToken token)
        {
            string parameters = AwesomeAvatarsStorage.GlobalConfigsParams();
            var result = await _client.GetStorageAsync<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_ajuna_awesome_avatars.types.config.GlobalConfig>(parameters, token);
            return result;
        }
        
        /// <summary>
        /// >> AvatarsParams
        /// </summary>
        public static string AvatarsParams(Bajun.Network.NET.NetApiExt.Generated.Model.primitive_types.H256 key)
        {
            return RequestGenerator.GetStorage("AwesomeAvatars", "Avatars", Ajuna.NetApi.Model.Meta.Storage.Type.Map, new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.Identity}, new Ajuna.NetApi.Model.Types.IType[] {
                        key});
        }
        
        /// <summary>
        /// >> AvatarsDefault
        /// Default value as hex string
        /// </summary>
        public static string AvatarsDefault()
        {
            return "0x00";
        }
        
        /// <summary>
        /// >> Avatars
        /// </summary>
        public async Task<Ajuna.NetApi.Model.Types.Base.BaseTuple<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32, Bajun.Network.NET.NetApiExt.Generated.Model.pallet_ajuna_awesome_avatars.types.avatar.Avatar>> Avatars(Bajun.Network.NET.NetApiExt.Generated.Model.primitive_types.H256 key, CancellationToken token)
        {
            string parameters = AwesomeAvatarsStorage.AvatarsParams(key);
            var result = await _client.GetStorageAsync<Ajuna.NetApi.Model.Types.Base.BaseTuple<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32, Bajun.Network.NET.NetApiExt.Generated.Model.pallet_ajuna_awesome_avatars.types.avatar.Avatar>>(parameters, token);
            return result;
        }
        
        /// <summary>
        /// >> OwnersParams
        /// </summary>
        public static string OwnersParams(Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32 key)
        {
            return RequestGenerator.GetStorage("AwesomeAvatars", "Owners", Ajuna.NetApi.Model.Meta.Storage.Type.Map, new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.Identity}, new Ajuna.NetApi.Model.Types.IType[] {
                        key});
        }
        
        /// <summary>
        /// >> OwnersDefault
        /// Default value as hex string
        /// </summary>
        public static string OwnersDefault()
        {
            return "0x00";
        }
        
        /// <summary>
        /// >> Owners
        /// </summary>
        public async Task<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.bounded.bounded_vec.BoundedVecT31> Owners(Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32 key, CancellationToken token)
        {
            string parameters = AwesomeAvatarsStorage.OwnersParams(key);
            var result = await _client.GetStorageAsync<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.bounded.bounded_vec.BoundedVecT31>(parameters, token);
            return result;
        }
        
        /// <summary>
        /// >> LockedAvatarsParams
        /// </summary>
        public static string LockedAvatarsParams(Bajun.Network.NET.NetApiExt.Generated.Model.primitive_types.H256 key)
        {
            return RequestGenerator.GetStorage("AwesomeAvatars", "LockedAvatars", Ajuna.NetApi.Model.Meta.Storage.Type.Map, new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.Identity}, new Ajuna.NetApi.Model.Types.IType[] {
                        key});
        }
        
        /// <summary>
        /// >> LockedAvatarsDefault
        /// Default value as hex string
        /// </summary>
        public static string LockedAvatarsDefault()
        {
            return "0x00";
        }
        
        /// <summary>
        /// >> LockedAvatars
        /// </summary>
        public async Task<Ajuna.NetApi.Model.Types.Primitive.U128> LockedAvatars(Bajun.Network.NET.NetApiExt.Generated.Model.primitive_types.H256 key, CancellationToken token)
        {
            string parameters = AwesomeAvatarsStorage.LockedAvatarsParams(key);
            var result = await _client.GetStorageAsync<Ajuna.NetApi.Model.Types.Primitive.U128>(parameters, token);
            return result;
        }
        
        /// <summary>
        /// >> AccountsParams
        /// </summary>
        public static string AccountsParams(Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32 key)
        {
            return RequestGenerator.GetStorage("AwesomeAvatars", "Accounts", Ajuna.NetApi.Model.Meta.Storage.Type.Map, new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.Identity}, new Ajuna.NetApi.Model.Types.IType[] {
                        key});
        }
        
        /// <summary>
        /// >> AccountsDefault
        /// Default value as hex string
        /// </summary>
        public static string AccountsDefault()
        {
            return "0x0000190000000000000000000000000000000000000000000000000000";
        }
        
        /// <summary>
        /// >> Accounts
        /// </summary>
        public async Task<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_ajuna_awesome_avatars.types.account.AccountInfo> Accounts(Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32 key, CancellationToken token)
        {
            string parameters = AwesomeAvatarsStorage.AccountsParams(key);
            var result = await _client.GetStorageAsync<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_ajuna_awesome_avatars.types.account.AccountInfo>(parameters, token);
            return result;
        }
        
        /// <summary>
        /// >> SeasonStatsParams
        /// </summary>
        public static string SeasonStatsParams(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U16, Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32> key)
        {
            return RequestGenerator.GetStorage("AwesomeAvatars", "SeasonStats", Ajuna.NetApi.Model.Meta.Storage.Type.Map, new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.Identity,
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.Identity}, key.Value);
        }
        
        /// <summary>
        /// >> SeasonStatsDefault
        /// Default value as hex string
        /// </summary>
        public static string SeasonStatsDefault()
        {
            return "0x0000000000000000";
        }
        
        /// <summary>
        /// >> SeasonStats
        /// </summary>
        public async Task<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_ajuna_awesome_avatars.types.account.SeasonInfo> SeasonStats(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U16, Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32> key, CancellationToken token)
        {
            string parameters = AwesomeAvatarsStorage.SeasonStatsParams(key);
            var result = await _client.GetStorageAsync<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_ajuna_awesome_avatars.types.account.SeasonInfo>(parameters, token);
            return result;
        }
        
        /// <summary>
        /// >> TradeParams
        /// </summary>
        public static string TradeParams(Bajun.Network.NET.NetApiExt.Generated.Model.primitive_types.H256 key)
        {
            return RequestGenerator.GetStorage("AwesomeAvatars", "Trade", Ajuna.NetApi.Model.Meta.Storage.Type.Map, new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.Identity}, new Ajuna.NetApi.Model.Types.IType[] {
                        key});
        }
        
        /// <summary>
        /// >> TradeDefault
        /// Default value as hex string
        /// </summary>
        public static string TradeDefault()
        {
            return "0x00";
        }
        
        /// <summary>
        /// >> Trade
        /// </summary>
        public async Task<Ajuna.NetApi.Model.Types.Primitive.U128> Trade(Bajun.Network.NET.NetApiExt.Generated.Model.primitive_types.H256 key, CancellationToken token)
        {
            string parameters = AwesomeAvatarsStorage.TradeParams(key);
            var result = await _client.GetStorageAsync<Ajuna.NetApi.Model.Types.Primitive.U128>(parameters, token);
            return result;
        }
    }
    
    public sealed class AwesomeAvatarsCalls
    {
        
        /// <summary>
        /// >> mint
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method Mint(Bajun.Network.NET.NetApiExt.Generated.Model.pallet_ajuna_awesome_avatars.types.config.MintOption mint_option)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(mint_option.Encode());
            return new Method(51, "AwesomeAvatars", 0, "mint", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> forge
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method Forge(Bajun.Network.NET.NetApiExt.Generated.Model.primitive_types.H256 leader, Ajuna.NetApi.Model.Types.Base.BaseVec<Bajun.Network.NET.NetApiExt.Generated.Model.primitive_types.H256> sacrifices)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(leader.Encode());
            byteArray.AddRange(sacrifices.Encode());
            return new Method(51, "AwesomeAvatars", 1, "forge", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> transfer_avatar
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method TransferAvatar(Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32 to, Bajun.Network.NET.NetApiExt.Generated.Model.primitive_types.H256 avatar_id)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(to.Encode());
            byteArray.AddRange(avatar_id.Encode());
            return new Method(51, "AwesomeAvatars", 2, "transfer_avatar", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> transfer_free_mints
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method TransferFreeMints(Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32 to, Ajuna.NetApi.Model.Types.Primitive.U16 how_many)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(to.Encode());
            byteArray.AddRange(how_many.Encode());
            return new Method(51, "AwesomeAvatars", 3, "transfer_free_mints", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> set_price
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method SetPrice(Bajun.Network.NET.NetApiExt.Generated.Model.primitive_types.H256 avatar_id, Ajuna.NetApi.Model.Types.Base.BaseCom<Ajuna.NetApi.Model.Types.Primitive.U128> price)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(avatar_id.Encode());
            byteArray.AddRange(price.Encode());
            return new Method(51, "AwesomeAvatars", 4, "set_price", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> remove_price
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method RemovePrice(Bajun.Network.NET.NetApiExt.Generated.Model.primitive_types.H256 avatar_id)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(avatar_id.Encode());
            return new Method(51, "AwesomeAvatars", 5, "remove_price", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> buy
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method Buy(Bajun.Network.NET.NetApiExt.Generated.Model.primitive_types.H256 avatar_id)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(avatar_id.Encode());
            return new Method(51, "AwesomeAvatars", 6, "buy", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> upgrade_storage
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method UpgradeStorage()
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            return new Method(51, "AwesomeAvatars", 7, "upgrade_storage", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> set_organizer
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method SetOrganizer(Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32 organizer)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(organizer.Encode());
            return new Method(51, "AwesomeAvatars", 8, "set_organizer", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> set_treasurer
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method SetTreasurer(Ajuna.NetApi.Model.Types.Primitive.U16 season_id, Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32 treasurer)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(season_id.Encode());
            byteArray.AddRange(treasurer.Encode());
            return new Method(51, "AwesomeAvatars", 9, "set_treasurer", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> claim_treasury
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method ClaimTreasury(Ajuna.NetApi.Model.Types.Primitive.U16 season_id)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(season_id.Encode());
            return new Method(51, "AwesomeAvatars", 10, "claim_treasury", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> set_season
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method SetSeason(Ajuna.NetApi.Model.Types.Primitive.U16 season_id, Bajun.Network.NET.NetApiExt.Generated.Model.pallet_ajuna_awesome_avatars.types.season.Season season)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(season_id.Encode());
            byteArray.AddRange(season.Encode());
            return new Method(51, "AwesomeAvatars", 11, "set_season", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> update_global_config
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method UpdateGlobalConfig(Bajun.Network.NET.NetApiExt.Generated.Model.pallet_ajuna_awesome_avatars.types.config.GlobalConfig new_global_config)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(new_global_config.Encode());
            return new Method(51, "AwesomeAvatars", 12, "update_global_config", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> set_free_mints
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method SetFreeMints(Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32 target, Ajuna.NetApi.Model.Types.Primitive.U16 how_many)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(target.Encode());
            byteArray.AddRange(how_many.Encode());
            return new Method(51, "AwesomeAvatars", 13, "set_free_mints", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> lock_avatar
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method LockAvatar(Bajun.Network.NET.NetApiExt.Generated.Model.primitive_types.H256 avatar_id)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(avatar_id.Encode());
            return new Method(51, "AwesomeAvatars", 14, "lock_avatar", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> unlock_avatar
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method UnlockAvatar(Bajun.Network.NET.NetApiExt.Generated.Model.primitive_types.H256 avatar_id)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(avatar_id.Encode());
            return new Method(51, "AwesomeAvatars", 15, "unlock_avatar", byteArray.ToArray());
        }
    }
    
    public sealed class AwesomeAvatarsConstants
    {
        
        /// <summary>
        /// >> NftCollectionId
        /// </summary>
        public Ajuna.NetApi.Model.Types.Primitive.U32 NftCollectionId()
        {
            var result = new Ajuna.NetApi.Model.Types.Primitive.U32();
            result.Create("0x00000000");
            return result;
        }
    }
    
    public enum AwesomeAvatarsErrors
    {
        
        /// <summary>
        /// >> OrganizerNotSet
        /// There is no account set as the organizer
        /// </summary>
        OrganizerNotSet,
        
        /// <summary>
        /// >> EarlyStartTooEarly
        /// The season starts before the previous season has ended.
        /// </summary>
        EarlyStartTooEarly,
        
        /// <summary>
        /// >> EarlyStartTooLate
        /// The season season start later than its early access
        /// </summary>
        EarlyStartTooLate,
        
        /// <summary>
        /// >> SeasonStartTooLate
        /// The season start date is newer than its end date.
        /// </summary>
        SeasonStartTooLate,
        
        /// <summary>
        /// >> SeasonEndTooLate
        /// The season ends after the new season has started.
        /// </summary>
        SeasonEndTooLate,
        
        /// <summary>
        /// >> PeriodConfigOverflow
        /// The season's per period and periods configuration overflows.
        /// </summary>
        PeriodConfigOverflow,
        
        /// <summary>
        /// >> PeriodsIndivisible
        /// The season's periods configuration is indivisible by max variation.
        /// </summary>
        PeriodsIndivisible,
        
        /// <summary>
        /// >> UnknownSeason
        /// The season doesn't exist.
        /// </summary>
        UnknownSeason,
        
        /// <summary>
        /// >> UnknownAvatar
        /// The avatar doesn't exist.
        /// </summary>
        UnknownAvatar,
        
        /// <summary>
        /// >> UnknownAvatarForSale
        /// The avatar for sale doesn't exist.
        /// </summary>
        UnknownAvatarForSale,
        
        /// <summary>
        /// >> UnknownTier
        /// The tier doesn't exist.
        /// </summary>
        UnknownTier,
        
        /// <summary>
        /// >> UnknownTreasurer
        /// The treasurer doesn't exist.
        /// </summary>
        UnknownTreasurer,
        
        /// <summary>
        /// >> NonSequentialSeasonId
        /// The season ID of a season to create is not sequential.
        /// </summary>
        NonSequentialSeasonId,
        
        /// <summary>
        /// >> IncorrectRarityPercentages
        /// Rarity percentages don't add up to 100
        /// </summary>
        IncorrectRarityPercentages,
        
        /// <summary>
        /// >> TooManyRarityPercentages
        /// Max tier is achievable through forging only. Therefore the number of rarity percentages
        /// must be less than that of tiers for a season.
        /// </summary>
        TooManyRarityPercentages,
        
        /// <summary>
        /// >> DuplicatedRarityTier
        /// Some rarity tier are duplicated.
        /// </summary>
        DuplicatedRarityTier,
        
        /// <summary>
        /// >> MintClosed
        /// Minting is not available at the moment.
        /// </summary>
        MintClosed,
        
        /// <summary>
        /// >> ForgeClosed
        /// Forging is not available at the moment.
        /// </summary>
        ForgeClosed,
        
        /// <summary>
        /// >> TransferClosed
        /// Transfer is not available at the moment.
        /// </summary>
        TransferClosed,
        
        /// <summary>
        /// >> TradeClosed
        /// Trading is not available at the moment.
        /// </summary>
        TradeClosed,
        
        /// <summary>
        /// >> SeasonClosed
        /// Attempt to mint or forge outside of an active season.
        /// </summary>
        SeasonClosed,
        
        /// <summary>
        /// >> PrematureSeasonEnd
        /// Attempt to mint when the season has ended prematurely.
        /// </summary>
        PrematureSeasonEnd,
        
        /// <summary>
        /// >> MaxOwnershipReached
        /// Max ownership reached.
        /// </summary>
        MaxOwnershipReached,
        
        /// <summary>
        /// >> MaxStorageTierReached
        /// Max storage tier reached.
        /// </summary>
        MaxStorageTierReached,
        
        /// <summary>
        /// >> Ownership
        /// Avatar belongs to someone else.
        /// </summary>
        Ownership,
        
        /// <summary>
        /// >> AlreadyOwned
        /// Attempt to buy his or her own avatar.
        /// </summary>
        AlreadyOwned,
        
        /// <summary>
        /// >> IncorrectDna
        /// Incorrect DNA.
        /// </summary>
        IncorrectDna,
        
        /// <summary>
        /// >> IncorrectAvatarId
        /// Incorrect Avatar ID.
        /// </summary>
        IncorrectAvatarId,
        
        /// <summary>
        /// >> IncorrectSeasonId
        /// Incorrect season ID.
        /// </summary>
        IncorrectSeasonId,
        
        /// <summary>
        /// >> MintCooldown
        /// The player must wait cooldown period.
        /// </summary>
        MintCooldown,
        
        /// <summary>
        /// >> MaxComponentsTooLow
        /// The season's max components value is less than the minimum allowed (1).
        /// </summary>
        MaxComponentsTooLow,
        
        /// <summary>
        /// >> MaxComponentsTooHigh
        /// The season's max components value is more than the maximum allowed (random byte: 32).
        /// </summary>
        MaxComponentsTooHigh,
        
        /// <summary>
        /// >> MaxVariationsTooLow
        /// The season's max variations value is less than the minimum allowed (1).
        /// </summary>
        MaxVariationsTooLow,
        
        /// <summary>
        /// >> MaxVariationsTooHigh
        /// The season's max variations value is more than the maximum allowed (15).
        /// </summary>
        MaxVariationsTooHigh,
        
        /// <summary>
        /// >> InsufficientFreeMints
        /// The player has not enough free mints available.
        /// </summary>
        InsufficientFreeMints,
        
        /// <summary>
        /// >> TooLowFreeMints
        /// Attempt to transfer, issue or withdraw free mints lower than the minimum allowed.
        /// </summary>
        TooLowFreeMints,
        
        /// <summary>
        /// >> TooFewSacrifices
        /// Less than minimum allowed sacrifices are used for forging.
        /// </summary>
        TooFewSacrifices,
        
        /// <summary>
        /// >> TooManySacrifices
        /// More than maximum allowed sacrifices are used for forging.
        /// </summary>
        TooManySacrifices,
        
        /// <summary>
        /// >> LeaderSacrificed
        /// Leader is being sacrificed.
        /// </summary>
        LeaderSacrificed,
        
        /// <summary>
        /// >> AvatarInTrade
        /// An avatar listed for trade is used to forge.
        /// </summary>
        AvatarInTrade,
        
        /// <summary>
        /// >> AvatarLocked
        /// The avatar is currently locked and cannot be used.
        /// </summary>
        AvatarLocked,
        
        /// <summary>
        /// >> AvatarUnlocked
        /// The avatar is currently unlocked and cannot be locked again.
        /// </summary>
        AvatarUnlocked,
        
        /// <summary>
        /// >> IncorrectAvatarSeason
        /// Tried to forge avatars from different seasons.
        /// </summary>
        IncorrectAvatarSeason,
        
        /// <summary>
        /// >> CannotTransferToSelf
        /// Tried transferring to his or her own account.
        /// </summary>
        CannotTransferToSelf,
        
        /// <summary>
        /// >> CannotClaimDuringSeason
        /// Tried claiming treasury during a season.
        /// </summary>
        CannotClaimDuringSeason,
        
        /// <summary>
        /// >> CannotClaimZero
        /// Tried claiming treasury which is zero.
        /// </summary>
        CannotClaimZero,
    }
}
