//------------------------------------------------------------------------------
// <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 NftStorage
    {
        
        // Substrate client for the storage calls.
        private SubstrateClientExt _client;
        
        public NftStorage(SubstrateClientExt client)
        {
            this._client = client;
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("Nft", "Collection"), 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.BlakeTwo128Concat}, typeof(Ajuna.NetApi.Model.Types.Primitive.U32), typeof(Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.CollectionDetails)));
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("Nft", "OwnershipAcceptance"), 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.BlakeTwo128Concat}, typeof(Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32), typeof(Ajuna.NetApi.Model.Types.Primitive.U32)));
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("Nft", "Account"), 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.BlakeTwo128Concat,
                            Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat,
                            Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat}, typeof(Ajuna.NetApi.Model.Types.Base.BaseTuple<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32, Ajuna.NetApi.Model.Types.Primitive.U32, Ajuna.NetApi.Model.Types.Primitive.U128>), typeof(Ajuna.NetApi.Model.Types.Base.BaseTuple)));
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("Nft", "CollectionAccount"), 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.BlakeTwo128Concat,
                            Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat}, typeof(Ajuna.NetApi.Model.Types.Base.BaseTuple<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32, Ajuna.NetApi.Model.Types.Primitive.U32>), typeof(Ajuna.NetApi.Model.Types.Base.BaseTuple)));
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("Nft", "CollectionRoleOf"), 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.BlakeTwo128Concat,
                            Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat}, typeof(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U32, Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32>), typeof(Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.BitFlagsT3)));
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("Nft", "Item"), 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.BlakeTwo128Concat,
                            Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat}, typeof(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U32, Ajuna.NetApi.Model.Types.Primitive.U128>), typeof(Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.ItemDetails)));
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("Nft", "CollectionMetadataOf"), 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.BlakeTwo128Concat}, typeof(Ajuna.NetApi.Model.Types.Primitive.U32), typeof(Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.CollectionMetadata)));
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("Nft", "ItemMetadataOf"), 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.BlakeTwo128Concat,
                            Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat}, typeof(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U32, Ajuna.NetApi.Model.Types.Primitive.U128>), typeof(Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.ItemMetadata)));
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("Nft", "Attribute"), 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.BlakeTwo128Concat,
                            Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat,
                            Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat,
                            Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat}, typeof(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U32, Ajuna.NetApi.Model.Types.Base.BaseOpt<Ajuna.NetApi.Model.Types.Primitive.U128>, Bajun.Network.NET.NetApiExt.Generated.Model.frame_support.traits.tokens.misc.EnumAttributeNamespace, Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.bounded.bounded_vec.BoundedVecT6>), typeof(Ajuna.NetApi.Model.Types.Base.BaseTuple<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.bounded.bounded_vec.BoundedVecT7, Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.AttributeDeposit>)));
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("Nft", "ItemPriceOf"), 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.BlakeTwo128Concat,
                            Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat}, typeof(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U32, Ajuna.NetApi.Model.Types.Primitive.U128>), typeof(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U128, Ajuna.NetApi.Model.Types.Base.BaseOpt<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32>>)));
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("Nft", "ItemAttributesApprovalsOf"), 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.BlakeTwo128Concat,
                            Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat}, typeof(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U32, Ajuna.NetApi.Model.Types.Primitive.U128>), typeof(Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.bounded.bounded_btree_set.BoundedBTreeSetT2)));
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("Nft", "NextCollectionId"), new System.Tuple<Ajuna.NetApi.Model.Meta.Storage.Hasher[], System.Type, System.Type>(null, null, typeof(Ajuna.NetApi.Model.Types.Primitive.U32)));
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("Nft", "PendingSwapOf"), 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.BlakeTwo128Concat,
                            Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat}, typeof(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U32, Ajuna.NetApi.Model.Types.Primitive.U128>), typeof(Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.PendingSwap)));
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("Nft", "CollectionConfigOf"), 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.BlakeTwo128Concat}, typeof(Ajuna.NetApi.Model.Types.Primitive.U32), typeof(Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.CollectionConfig)));
            _client.StorageKeyDict.Add(new System.Tuple<string, string>("Nft", "ItemConfigOf"), 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.BlakeTwo128Concat,
                            Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat}, typeof(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U32, Ajuna.NetApi.Model.Types.Primitive.U128>), typeof(Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.ItemConfig)));
        }
        
        /// <summary>
        /// >> CollectionParams
        ///  Details of a collection.
        /// </summary>
        public static string CollectionParams(Ajuna.NetApi.Model.Types.Primitive.U32 key)
        {
            return RequestGenerator.GetStorage("Nft", "Collection", Ajuna.NetApi.Model.Meta.Storage.Type.Map, new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat}, new Ajuna.NetApi.Model.Types.IType[] {
                        key});
        }
        
        /// <summary>
        /// >> CollectionDefault
        /// Default value as hex string
        /// </summary>
        public static string CollectionDefault()
        {
            return "0x00";
        }
        
        /// <summary>
        /// >> Collection
        ///  Details of a collection.
        /// </summary>
        public async Task<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.CollectionDetails> Collection(Ajuna.NetApi.Model.Types.Primitive.U32 key, CancellationToken token)
        {
            string parameters = NftStorage.CollectionParams(key);
            var result = await _client.GetStorageAsync<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.CollectionDetails>(parameters, token);
            return result;
        }
        
        /// <summary>
        /// >> OwnershipAcceptanceParams
        ///  The collection, if any, of which an account is willing to take ownership.
        /// </summary>
        public static string OwnershipAcceptanceParams(Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32 key)
        {
            return RequestGenerator.GetStorage("Nft", "OwnershipAcceptance", Ajuna.NetApi.Model.Meta.Storage.Type.Map, new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat}, new Ajuna.NetApi.Model.Types.IType[] {
                        key});
        }
        
        /// <summary>
        /// >> OwnershipAcceptanceDefault
        /// Default value as hex string
        /// </summary>
        public static string OwnershipAcceptanceDefault()
        {
            return "0x00";
        }
        
        /// <summary>
        /// >> OwnershipAcceptance
        ///  The collection, if any, of which an account is willing to take ownership.
        /// </summary>
        public async Task<Ajuna.NetApi.Model.Types.Primitive.U32> OwnershipAcceptance(Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32 key, CancellationToken token)
        {
            string parameters = NftStorage.OwnershipAcceptanceParams(key);
            var result = await _client.GetStorageAsync<Ajuna.NetApi.Model.Types.Primitive.U32>(parameters, token);
            return result;
        }
        
        /// <summary>
        /// >> AccountParams
        ///  The items held by any given account; set out this way so that items owned by a single
        ///  account can be enumerated.
        /// </summary>
        public static string AccountParams(Ajuna.NetApi.Model.Types.Base.BaseTuple<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32, Ajuna.NetApi.Model.Types.Primitive.U32, Ajuna.NetApi.Model.Types.Primitive.U128> key)
        {
            return RequestGenerator.GetStorage("Nft", "Account", Ajuna.NetApi.Model.Meta.Storage.Type.Map, new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat,
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat,
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat}, key.Value);
        }
        
        /// <summary>
        /// >> AccountDefault
        /// Default value as hex string
        /// </summary>
        public static string AccountDefault()
        {
            return "0x00";
        }
        
        /// <summary>
        /// >> Account
        ///  The items held by any given account; set out this way so that items owned by a single
        ///  account can be enumerated.
        /// </summary>
        public async Task<Ajuna.NetApi.Model.Types.Base.BaseTuple> Account(Ajuna.NetApi.Model.Types.Base.BaseTuple<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32, Ajuna.NetApi.Model.Types.Primitive.U32, Ajuna.NetApi.Model.Types.Primitive.U128> key, CancellationToken token)
        {
            string parameters = NftStorage.AccountParams(key);
            var result = await _client.GetStorageAsync<Ajuna.NetApi.Model.Types.Base.BaseTuple>(parameters, token);
            return result;
        }
        
        /// <summary>
        /// >> CollectionAccountParams
        ///  The collections owned by any given account; set out this way so that collections owned by
        ///  a single account can be enumerated.
        /// </summary>
        public static string CollectionAccountParams(Ajuna.NetApi.Model.Types.Base.BaseTuple<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32, Ajuna.NetApi.Model.Types.Primitive.U32> key)
        {
            return RequestGenerator.GetStorage("Nft", "CollectionAccount", Ajuna.NetApi.Model.Meta.Storage.Type.Map, new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat,
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat}, key.Value);
        }
        
        /// <summary>
        /// >> CollectionAccountDefault
        /// Default value as hex string
        /// </summary>
        public static string CollectionAccountDefault()
        {
            return "0x00";
        }
        
        /// <summary>
        /// >> CollectionAccount
        ///  The collections owned by any given account; set out this way so that collections owned by
        ///  a single account can be enumerated.
        /// </summary>
        public async Task<Ajuna.NetApi.Model.Types.Base.BaseTuple> CollectionAccount(Ajuna.NetApi.Model.Types.Base.BaseTuple<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32, Ajuna.NetApi.Model.Types.Primitive.U32> key, CancellationToken token)
        {
            string parameters = NftStorage.CollectionAccountParams(key);
            var result = await _client.GetStorageAsync<Ajuna.NetApi.Model.Types.Base.BaseTuple>(parameters, token);
            return result;
        }
        
        /// <summary>
        /// >> CollectionRoleOfParams
        ///  The items in existence and their ownership details.
        ///  Stores collection roles as per account.
        /// </summary>
        public static string CollectionRoleOfParams(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U32, Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32> key)
        {
            return RequestGenerator.GetStorage("Nft", "CollectionRoleOf", Ajuna.NetApi.Model.Meta.Storage.Type.Map, new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat,
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat}, key.Value);
        }
        
        /// <summary>
        /// >> CollectionRoleOfDefault
        /// Default value as hex string
        /// </summary>
        public static string CollectionRoleOfDefault()
        {
            return "0x00";
        }
        
        /// <summary>
        /// >> CollectionRoleOf
        ///  The items in existence and their ownership details.
        ///  Stores collection roles as per account.
        /// </summary>
        public async Task<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.BitFlagsT3> CollectionRoleOf(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U32, Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32> key, CancellationToken token)
        {
            string parameters = NftStorage.CollectionRoleOfParams(key);
            var result = await _client.GetStorageAsync<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.BitFlagsT3>(parameters, token);
            return result;
        }
        
        /// <summary>
        /// >> ItemParams
        ///  The items in existence and their ownership details.
        /// </summary>
        public static string ItemParams(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U32, Ajuna.NetApi.Model.Types.Primitive.U128> key)
        {
            return RequestGenerator.GetStorage("Nft", "Item", Ajuna.NetApi.Model.Meta.Storage.Type.Map, new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat,
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat}, key.Value);
        }
        
        /// <summary>
        /// >> ItemDefault
        /// Default value as hex string
        /// </summary>
        public static string ItemDefault()
        {
            return "0x00";
        }
        
        /// <summary>
        /// >> Item
        ///  The items in existence and their ownership details.
        /// </summary>
        public async Task<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.ItemDetails> Item(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U32, Ajuna.NetApi.Model.Types.Primitive.U128> key, CancellationToken token)
        {
            string parameters = NftStorage.ItemParams(key);
            var result = await _client.GetStorageAsync<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.ItemDetails>(parameters, token);
            return result;
        }
        
        /// <summary>
        /// >> CollectionMetadataOfParams
        ///  Metadata of a collection.
        /// </summary>
        public static string CollectionMetadataOfParams(Ajuna.NetApi.Model.Types.Primitive.U32 key)
        {
            return RequestGenerator.GetStorage("Nft", "CollectionMetadataOf", Ajuna.NetApi.Model.Meta.Storage.Type.Map, new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat}, new Ajuna.NetApi.Model.Types.IType[] {
                        key});
        }
        
        /// <summary>
        /// >> CollectionMetadataOfDefault
        /// Default value as hex string
        /// </summary>
        public static string CollectionMetadataOfDefault()
        {
            return "0x00";
        }
        
        /// <summary>
        /// >> CollectionMetadataOf
        ///  Metadata of a collection.
        /// </summary>
        public async Task<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.CollectionMetadata> CollectionMetadataOf(Ajuna.NetApi.Model.Types.Primitive.U32 key, CancellationToken token)
        {
            string parameters = NftStorage.CollectionMetadataOfParams(key);
            var result = await _client.GetStorageAsync<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.CollectionMetadata>(parameters, token);
            return result;
        }
        
        /// <summary>
        /// >> ItemMetadataOfParams
        ///  Metadata of an item.
        /// </summary>
        public static string ItemMetadataOfParams(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U32, Ajuna.NetApi.Model.Types.Primitive.U128> key)
        {
            return RequestGenerator.GetStorage("Nft", "ItemMetadataOf", Ajuna.NetApi.Model.Meta.Storage.Type.Map, new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat,
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat}, key.Value);
        }
        
        /// <summary>
        /// >> ItemMetadataOfDefault
        /// Default value as hex string
        /// </summary>
        public static string ItemMetadataOfDefault()
        {
            return "0x00";
        }
        
        /// <summary>
        /// >> ItemMetadataOf
        ///  Metadata of an item.
        /// </summary>
        public async Task<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.ItemMetadata> ItemMetadataOf(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U32, Ajuna.NetApi.Model.Types.Primitive.U128> key, CancellationToken token)
        {
            string parameters = NftStorage.ItemMetadataOfParams(key);
            var result = await _client.GetStorageAsync<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.ItemMetadata>(parameters, token);
            return result;
        }
        
        /// <summary>
        /// >> AttributeParams
        ///  Attributes of a collection.
        /// </summary>
        public static string AttributeParams(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U32, Ajuna.NetApi.Model.Types.Base.BaseOpt<Ajuna.NetApi.Model.Types.Primitive.U128>, Bajun.Network.NET.NetApiExt.Generated.Model.frame_support.traits.tokens.misc.EnumAttributeNamespace, Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.bounded.bounded_vec.BoundedVecT6> key)
        {
            return RequestGenerator.GetStorage("Nft", "Attribute", Ajuna.NetApi.Model.Meta.Storage.Type.Map, new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat,
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat,
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat,
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat}, key.Value);
        }
        
        /// <summary>
        /// >> AttributeDefault
        /// Default value as hex string
        /// </summary>
        public static string AttributeDefault()
        {
            return "0x00";
        }
        
        /// <summary>
        /// >> Attribute
        ///  Attributes of a collection.
        /// </summary>
        public async Task<Ajuna.NetApi.Model.Types.Base.BaseTuple<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.bounded.bounded_vec.BoundedVecT7, Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.AttributeDeposit>> Attribute(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U32, Ajuna.NetApi.Model.Types.Base.BaseOpt<Ajuna.NetApi.Model.Types.Primitive.U128>, Bajun.Network.NET.NetApiExt.Generated.Model.frame_support.traits.tokens.misc.EnumAttributeNamespace, Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.bounded.bounded_vec.BoundedVecT6> key, CancellationToken token)
        {
            string parameters = NftStorage.AttributeParams(key);
            var result = await _client.GetStorageAsync<Ajuna.NetApi.Model.Types.Base.BaseTuple<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.bounded.bounded_vec.BoundedVecT7, Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.AttributeDeposit>>(parameters, token);
            return result;
        }
        
        /// <summary>
        /// >> ItemPriceOfParams
        ///  A price of an item.
        /// </summary>
        public static string ItemPriceOfParams(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U32, Ajuna.NetApi.Model.Types.Primitive.U128> key)
        {
            return RequestGenerator.GetStorage("Nft", "ItemPriceOf", Ajuna.NetApi.Model.Meta.Storage.Type.Map, new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat,
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat}, key.Value);
        }
        
        /// <summary>
        /// >> ItemPriceOfDefault
        /// Default value as hex string
        /// </summary>
        public static string ItemPriceOfDefault()
        {
            return "0x00";
        }
        
        /// <summary>
        /// >> ItemPriceOf
        ///  A price of an item.
        /// </summary>
        public async Task<Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U128, Ajuna.NetApi.Model.Types.Base.BaseOpt<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32>>> ItemPriceOf(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U32, Ajuna.NetApi.Model.Types.Primitive.U128> key, CancellationToken token)
        {
            string parameters = NftStorage.ItemPriceOfParams(key);
            var result = await _client.GetStorageAsync<Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U128, Ajuna.NetApi.Model.Types.Base.BaseOpt<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32>>>(parameters, token);
            return result;
        }
        
        /// <summary>
        /// >> ItemAttributesApprovalsOfParams
        ///  Item attribute approvals.
        /// </summary>
        public static string ItemAttributesApprovalsOfParams(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U32, Ajuna.NetApi.Model.Types.Primitive.U128> key)
        {
            return RequestGenerator.GetStorage("Nft", "ItemAttributesApprovalsOf", Ajuna.NetApi.Model.Meta.Storage.Type.Map, new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat,
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat}, key.Value);
        }
        
        /// <summary>
        /// >> ItemAttributesApprovalsOfDefault
        /// Default value as hex string
        /// </summary>
        public static string ItemAttributesApprovalsOfDefault()
        {
            return "0x00";
        }
        
        /// <summary>
        /// >> ItemAttributesApprovalsOf
        ///  Item attribute approvals.
        /// </summary>
        public async Task<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.bounded.bounded_btree_set.BoundedBTreeSetT2> ItemAttributesApprovalsOf(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U32, Ajuna.NetApi.Model.Types.Primitive.U128> key, CancellationToken token)
        {
            string parameters = NftStorage.ItemAttributesApprovalsOfParams(key);
            var result = await _client.GetStorageAsync<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.bounded.bounded_btree_set.BoundedBTreeSetT2>(parameters, token);
            return result;
        }
        
        /// <summary>
        /// >> NextCollectionIdParams
        ///  Stores the `CollectionId` that is going to be used for the next collection.
        ///  This gets incremented whenever a new collection is created.
        /// </summary>
        public static string NextCollectionIdParams()
        {
            return RequestGenerator.GetStorage("Nft", "NextCollectionId", Ajuna.NetApi.Model.Meta.Storage.Type.Plain);
        }
        
        /// <summary>
        /// >> NextCollectionIdDefault
        /// Default value as hex string
        /// </summary>
        public static string NextCollectionIdDefault()
        {
            return "0x00";
        }
        
        /// <summary>
        /// >> NextCollectionId
        ///  Stores the `CollectionId` that is going to be used for the next collection.
        ///  This gets incremented whenever a new collection is created.
        /// </summary>
        public async Task<Ajuna.NetApi.Model.Types.Primitive.U32> NextCollectionId(CancellationToken token)
        {
            string parameters = NftStorage.NextCollectionIdParams();
            var result = await _client.GetStorageAsync<Ajuna.NetApi.Model.Types.Primitive.U32>(parameters, token);
            return result;
        }
        
        /// <summary>
        /// >> PendingSwapOfParams
        ///  Handles all the pending swaps.
        /// </summary>
        public static string PendingSwapOfParams(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U32, Ajuna.NetApi.Model.Types.Primitive.U128> key)
        {
            return RequestGenerator.GetStorage("Nft", "PendingSwapOf", Ajuna.NetApi.Model.Meta.Storage.Type.Map, new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat,
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat}, key.Value);
        }
        
        /// <summary>
        /// >> PendingSwapOfDefault
        /// Default value as hex string
        /// </summary>
        public static string PendingSwapOfDefault()
        {
            return "0x00";
        }
        
        /// <summary>
        /// >> PendingSwapOf
        ///  Handles all the pending swaps.
        /// </summary>
        public async Task<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.PendingSwap> PendingSwapOf(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U32, Ajuna.NetApi.Model.Types.Primitive.U128> key, CancellationToken token)
        {
            string parameters = NftStorage.PendingSwapOfParams(key);
            var result = await _client.GetStorageAsync<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.PendingSwap>(parameters, token);
            return result;
        }
        
        /// <summary>
        /// >> CollectionConfigOfParams
        ///  Config of a collection.
        /// </summary>
        public static string CollectionConfigOfParams(Ajuna.NetApi.Model.Types.Primitive.U32 key)
        {
            return RequestGenerator.GetStorage("Nft", "CollectionConfigOf", Ajuna.NetApi.Model.Meta.Storage.Type.Map, new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat}, new Ajuna.NetApi.Model.Types.IType[] {
                        key});
        }
        
        /// <summary>
        /// >> CollectionConfigOfDefault
        /// Default value as hex string
        /// </summary>
        public static string CollectionConfigOfDefault()
        {
            return "0x00";
        }
        
        /// <summary>
        /// >> CollectionConfigOf
        ///  Config of a collection.
        /// </summary>
        public async Task<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.CollectionConfig> CollectionConfigOf(Ajuna.NetApi.Model.Types.Primitive.U32 key, CancellationToken token)
        {
            string parameters = NftStorage.CollectionConfigOfParams(key);
            var result = await _client.GetStorageAsync<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.CollectionConfig>(parameters, token);
            return result;
        }
        
        /// <summary>
        /// >> ItemConfigOfParams
        ///  Config of an item.
        /// </summary>
        public static string ItemConfigOfParams(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U32, Ajuna.NetApi.Model.Types.Primitive.U128> key)
        {
            return RequestGenerator.GetStorage("Nft", "ItemConfigOf", Ajuna.NetApi.Model.Meta.Storage.Type.Map, new Ajuna.NetApi.Model.Meta.Storage.Hasher[] {
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat,
                        Ajuna.NetApi.Model.Meta.Storage.Hasher.BlakeTwo128Concat}, key.Value);
        }
        
        /// <summary>
        /// >> ItemConfigOfDefault
        /// Default value as hex string
        /// </summary>
        public static string ItemConfigOfDefault()
        {
            return "0x00";
        }
        
        /// <summary>
        /// >> ItemConfigOf
        ///  Config of an item.
        /// </summary>
        public async Task<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.ItemConfig> ItemConfigOf(Ajuna.NetApi.Model.Types.Base.BaseTuple<Ajuna.NetApi.Model.Types.Primitive.U32, Ajuna.NetApi.Model.Types.Primitive.U128> key, CancellationToken token)
        {
            string parameters = NftStorage.ItemConfigOfParams(key);
            var result = await _client.GetStorageAsync<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.ItemConfig>(parameters, token);
            return result;
        }
    }
    
    public sealed class NftCalls
    {
        
        /// <summary>
        /// >> create
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method Create(Bajun.Network.NET.NetApiExt.Generated.Model.sp_runtime.multiaddress.EnumMultiAddress admin, Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.CollectionConfig config)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(admin.Encode());
            byteArray.AddRange(config.Encode());
            return new Method(60, "Nft", 0, "create", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> force_create
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method ForceCreate(Bajun.Network.NET.NetApiExt.Generated.Model.sp_runtime.multiaddress.EnumMultiAddress owner, Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.CollectionConfig config)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(owner.Encode());
            byteArray.AddRange(config.Encode());
            return new Method(60, "Nft", 1, "force_create", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> destroy
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method Destroy(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.DestroyWitness witness)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(witness.Encode());
            return new Method(60, "Nft", 2, "destroy", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> mint
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method Mint(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Ajuna.NetApi.Model.Types.Primitive.U128 item, Bajun.Network.NET.NetApiExt.Generated.Model.sp_runtime.multiaddress.EnumMultiAddress mint_to, Ajuna.NetApi.Model.Types.Base.BaseOpt<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.MintWitness> witness_data)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(item.Encode());
            byteArray.AddRange(mint_to.Encode());
            byteArray.AddRange(witness_data.Encode());
            return new Method(60, "Nft", 3, "mint", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> force_mint
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method ForceMint(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Ajuna.NetApi.Model.Types.Primitive.U128 item, Bajun.Network.NET.NetApiExt.Generated.Model.sp_runtime.multiaddress.EnumMultiAddress mint_to, Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.ItemConfig item_config)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(item.Encode());
            byteArray.AddRange(mint_to.Encode());
            byteArray.AddRange(item_config.Encode());
            return new Method(60, "Nft", 4, "force_mint", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> burn
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method Burn(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Ajuna.NetApi.Model.Types.Primitive.U128 item, Ajuna.NetApi.Model.Types.Base.BaseOpt<Bajun.Network.NET.NetApiExt.Generated.Model.sp_runtime.multiaddress.EnumMultiAddress> check_owner)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(item.Encode());
            byteArray.AddRange(check_owner.Encode());
            return new Method(60, "Nft", 5, "burn", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> transfer
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method Transfer(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Ajuna.NetApi.Model.Types.Primitive.U128 item, Bajun.Network.NET.NetApiExt.Generated.Model.sp_runtime.multiaddress.EnumMultiAddress dest)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(item.Encode());
            byteArray.AddRange(dest.Encode());
            return new Method(60, "Nft", 6, "transfer", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> redeposit
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method Redeposit(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Primitive.U128> items)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(items.Encode());
            return new Method(60, "Nft", 7, "redeposit", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> lock_item_transfer
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method LockItemTransfer(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Ajuna.NetApi.Model.Types.Primitive.U128 item)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(item.Encode());
            return new Method(60, "Nft", 8, "lock_item_transfer", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> unlock_item_transfer
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method UnlockItemTransfer(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Ajuna.NetApi.Model.Types.Primitive.U128 item)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(item.Encode());
            return new Method(60, "Nft", 9, "unlock_item_transfer", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> lock_collection
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method LockCollection(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.BitFlagsT1 lock_settings)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(lock_settings.Encode());
            return new Method(60, "Nft", 10, "lock_collection", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> transfer_ownership
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method TransferOwnership(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Bajun.Network.NET.NetApiExt.Generated.Model.sp_runtime.multiaddress.EnumMultiAddress owner)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(owner.Encode());
            return new Method(60, "Nft", 11, "transfer_ownership", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> set_team
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method SetTeam(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Bajun.Network.NET.NetApiExt.Generated.Model.sp_runtime.multiaddress.EnumMultiAddress issuer, Bajun.Network.NET.NetApiExt.Generated.Model.sp_runtime.multiaddress.EnumMultiAddress admin, Bajun.Network.NET.NetApiExt.Generated.Model.sp_runtime.multiaddress.EnumMultiAddress freezer)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(issuer.Encode());
            byteArray.AddRange(admin.Encode());
            byteArray.AddRange(freezer.Encode());
            return new Method(60, "Nft", 12, "set_team", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> force_collection_owner
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method ForceCollectionOwner(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Bajun.Network.NET.NetApiExt.Generated.Model.sp_runtime.multiaddress.EnumMultiAddress owner)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(owner.Encode());
            return new Method(60, "Nft", 13, "force_collection_owner", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> force_collection_config
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method ForceCollectionConfig(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.CollectionConfig config)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(config.Encode());
            return new Method(60, "Nft", 14, "force_collection_config", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> approve_transfer
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method ApproveTransfer(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Ajuna.NetApi.Model.Types.Primitive.U128 item, Bajun.Network.NET.NetApiExt.Generated.Model.sp_runtime.multiaddress.EnumMultiAddress @delegate, Ajuna.NetApi.Model.Types.Base.BaseOpt<Ajuna.NetApi.Model.Types.Primitive.U32> maybe_deadline)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(item.Encode());
            byteArray.AddRange(@delegate.Encode());
            byteArray.AddRange(maybe_deadline.Encode());
            return new Method(60, "Nft", 15, "approve_transfer", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> cancel_approval
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method CancelApproval(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Ajuna.NetApi.Model.Types.Primitive.U128 item, Bajun.Network.NET.NetApiExt.Generated.Model.sp_runtime.multiaddress.EnumMultiAddress @delegate)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(item.Encode());
            byteArray.AddRange(@delegate.Encode());
            return new Method(60, "Nft", 16, "cancel_approval", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> clear_all_transfer_approvals
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method ClearAllTransferApprovals(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Ajuna.NetApi.Model.Types.Primitive.U128 item)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(item.Encode());
            return new Method(60, "Nft", 17, "clear_all_transfer_approvals", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> lock_item_properties
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method LockItemProperties(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Ajuna.NetApi.Model.Types.Primitive.U128 item, Ajuna.NetApi.Model.Types.Primitive.Bool lock_metadata, Ajuna.NetApi.Model.Types.Primitive.Bool lock_attributes)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(item.Encode());
            byteArray.AddRange(lock_metadata.Encode());
            byteArray.AddRange(lock_attributes.Encode());
            return new Method(60, "Nft", 18, "lock_item_properties", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> set_attribute
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method SetAttribute(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Ajuna.NetApi.Model.Types.Base.BaseOpt<Ajuna.NetApi.Model.Types.Primitive.U128> maybe_item, Bajun.Network.NET.NetApiExt.Generated.Model.frame_support.traits.tokens.misc.EnumAttributeNamespace @namespace, Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.bounded.bounded_vec.BoundedVecT6 key, Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.bounded.bounded_vec.BoundedVecT7 value)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(maybe_item.Encode());
            byteArray.AddRange(@namespace.Encode());
            byteArray.AddRange(key.Encode());
            byteArray.AddRange(value.Encode());
            return new Method(60, "Nft", 19, "set_attribute", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> force_set_attribute
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method ForceSetAttribute(Ajuna.NetApi.Model.Types.Base.BaseOpt<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32> set_as, Ajuna.NetApi.Model.Types.Primitive.U32 collection, Ajuna.NetApi.Model.Types.Base.BaseOpt<Ajuna.NetApi.Model.Types.Primitive.U128> maybe_item, Bajun.Network.NET.NetApiExt.Generated.Model.frame_support.traits.tokens.misc.EnumAttributeNamespace @namespace, Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.bounded.bounded_vec.BoundedVecT6 key, Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.bounded.bounded_vec.BoundedVecT7 value)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(set_as.Encode());
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(maybe_item.Encode());
            byteArray.AddRange(@namespace.Encode());
            byteArray.AddRange(key.Encode());
            byteArray.AddRange(value.Encode());
            return new Method(60, "Nft", 20, "force_set_attribute", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> clear_attribute
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method ClearAttribute(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Ajuna.NetApi.Model.Types.Base.BaseOpt<Ajuna.NetApi.Model.Types.Primitive.U128> maybe_item, Bajun.Network.NET.NetApiExt.Generated.Model.frame_support.traits.tokens.misc.EnumAttributeNamespace @namespace, Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.bounded.bounded_vec.BoundedVecT6 key)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(maybe_item.Encode());
            byteArray.AddRange(@namespace.Encode());
            byteArray.AddRange(key.Encode());
            return new Method(60, "Nft", 21, "clear_attribute", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> approve_item_attributes
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method ApproveItemAttributes(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Ajuna.NetApi.Model.Types.Primitive.U128 item, Bajun.Network.NET.NetApiExt.Generated.Model.sp_runtime.multiaddress.EnumMultiAddress @delegate)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(item.Encode());
            byteArray.AddRange(@delegate.Encode());
            return new Method(60, "Nft", 22, "approve_item_attributes", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> cancel_item_attributes_approval
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method CancelItemAttributesApproval(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Ajuna.NetApi.Model.Types.Primitive.U128 item, Bajun.Network.NET.NetApiExt.Generated.Model.sp_runtime.multiaddress.EnumMultiAddress @delegate, Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.CancelAttributesApprovalWitness witness)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(item.Encode());
            byteArray.AddRange(@delegate.Encode());
            byteArray.AddRange(witness.Encode());
            return new Method(60, "Nft", 23, "cancel_item_attributes_approval", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> set_metadata
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method SetMetadata(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Ajuna.NetApi.Model.Types.Primitive.U128 item, Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.bounded.bounded_vec.BoundedVecT5 data)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(item.Encode());
            byteArray.AddRange(data.Encode());
            return new Method(60, "Nft", 24, "set_metadata", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> clear_metadata
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method ClearMetadata(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Ajuna.NetApi.Model.Types.Primitive.U128 item)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(item.Encode());
            return new Method(60, "Nft", 25, "clear_metadata", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> set_collection_metadata
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method SetCollectionMetadata(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.bounded.bounded_vec.BoundedVecT5 data)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(data.Encode());
            return new Method(60, "Nft", 26, "set_collection_metadata", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> clear_collection_metadata
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method ClearCollectionMetadata(Ajuna.NetApi.Model.Types.Primitive.U32 collection)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            return new Method(60, "Nft", 27, "clear_collection_metadata", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> set_accept_ownership
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method SetAcceptOwnership(Ajuna.NetApi.Model.Types.Base.BaseOpt<Ajuna.NetApi.Model.Types.Primitive.U32> maybe_collection)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(maybe_collection.Encode());
            return new Method(60, "Nft", 28, "set_accept_ownership", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> set_collection_max_supply
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method SetCollectionMaxSupply(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Ajuna.NetApi.Model.Types.Primitive.U32 max_supply)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(max_supply.Encode());
            return new Method(60, "Nft", 29, "set_collection_max_supply", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> update_mint_settings
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method UpdateMintSettings(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.MintSettings mint_settings)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(mint_settings.Encode());
            return new Method(60, "Nft", 30, "update_mint_settings", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> set_price
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method SetPrice(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Ajuna.NetApi.Model.Types.Primitive.U128 item, Ajuna.NetApi.Model.Types.Base.BaseOpt<Ajuna.NetApi.Model.Types.Primitive.U128> price, Ajuna.NetApi.Model.Types.Base.BaseOpt<Bajun.Network.NET.NetApiExt.Generated.Model.sp_runtime.multiaddress.EnumMultiAddress> whitelisted_buyer)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(item.Encode());
            byteArray.AddRange(price.Encode());
            byteArray.AddRange(whitelisted_buyer.Encode());
            return new Method(60, "Nft", 31, "set_price", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> buy_item
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method BuyItem(Ajuna.NetApi.Model.Types.Primitive.U32 collection, Ajuna.NetApi.Model.Types.Primitive.U128 item, Ajuna.NetApi.Model.Types.Primitive.U128 bid_price)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(collection.Encode());
            byteArray.AddRange(item.Encode());
            byteArray.AddRange(bid_price.Encode());
            return new Method(60, "Nft", 32, "buy_item", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> pay_tips
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method PayTips(Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.bounded.bounded_vec.BoundedVecT10 tips)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(tips.Encode());
            return new Method(60, "Nft", 33, "pay_tips", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> create_swap
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method CreateSwap(Ajuna.NetApi.Model.Types.Primitive.U32 offered_collection, Ajuna.NetApi.Model.Types.Primitive.U128 offered_item, Ajuna.NetApi.Model.Types.Primitive.U32 desired_collection, Ajuna.NetApi.Model.Types.Base.BaseOpt<Ajuna.NetApi.Model.Types.Primitive.U128> maybe_desired_item, Ajuna.NetApi.Model.Types.Base.BaseOpt<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.PriceWithDirection> maybe_price, Ajuna.NetApi.Model.Types.Primitive.U32 duration)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(offered_collection.Encode());
            byteArray.AddRange(offered_item.Encode());
            byteArray.AddRange(desired_collection.Encode());
            byteArray.AddRange(maybe_desired_item.Encode());
            byteArray.AddRange(maybe_price.Encode());
            byteArray.AddRange(duration.Encode());
            return new Method(60, "Nft", 34, "create_swap", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> cancel_swap
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method CancelSwap(Ajuna.NetApi.Model.Types.Primitive.U32 offered_collection, Ajuna.NetApi.Model.Types.Primitive.U128 offered_item)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(offered_collection.Encode());
            byteArray.AddRange(offered_item.Encode());
            return new Method(60, "Nft", 35, "cancel_swap", byteArray.ToArray());
        }
        
        /// <summary>
        /// >> claim_swap
        /// Contains one variant per dispatchable that can be called by an extrinsic.
        /// </summary>
        public static Method ClaimSwap(Ajuna.NetApi.Model.Types.Primitive.U32 send_collection, Ajuna.NetApi.Model.Types.Primitive.U128 send_item, Ajuna.NetApi.Model.Types.Primitive.U32 receive_collection, Ajuna.NetApi.Model.Types.Primitive.U128 receive_item, Ajuna.NetApi.Model.Types.Base.BaseOpt<Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.PriceWithDirection> witness_price)
        {
            System.Collections.Generic.List<byte> byteArray = new List<byte>();
            byteArray.AddRange(send_collection.Encode());
            byteArray.AddRange(send_item.Encode());
            byteArray.AddRange(receive_collection.Encode());
            byteArray.AddRange(receive_item.Encode());
            byteArray.AddRange(witness_price.Encode());
            return new Method(60, "Nft", 36, "claim_swap", byteArray.ToArray());
        }
    }
    
    public sealed class NftConstants
    {
        
        /// <summary>
        /// >> CollectionDeposit
        ///  The basic amount of funds that must be reserved for collection.
        /// </summary>
        public Ajuna.NetApi.Model.Types.Primitive.U128 CollectionDeposit()
        {
            var result = new Ajuna.NetApi.Model.Types.Primitive.U128();
            result.Create("0x40420F00000000000000000000000000");
            return result;
        }
        
        /// <summary>
        /// >> ItemDeposit
        ///  The basic amount of funds that must be reserved for an item.
        /// </summary>
        public Ajuna.NetApi.Model.Types.Primitive.U128 ItemDeposit()
        {
            var result = new Ajuna.NetApi.Model.Types.Primitive.U128();
            result.Create("0xE8030000000000000000000000000000");
            return result;
        }
        
        /// <summary>
        /// >> MetadataDepositBase
        ///  The basic amount of funds that must be reserved when adding metadata to your item.
        /// </summary>
        public Ajuna.NetApi.Model.Types.Primitive.U128 MetadataDepositBase()
        {
            var result = new Ajuna.NetApi.Model.Types.Primitive.U128();
            result.Create("0x000AE5A54E1200000000000000000000");
            return result;
        }
        
        /// <summary>
        /// >> AttributeDepositBase
        ///  The basic amount of funds that must be reserved when adding an attribute to an item.
        /// </summary>
        public Ajuna.NetApi.Model.Types.Primitive.U128 AttributeDepositBase()
        {
            var result = new Ajuna.NetApi.Model.Types.Primitive.U128();
            result.Create("0x0040E59C301200000000000000000000");
            return result;
        }
        
        /// <summary>
        /// >> DepositPerByte
        ///  The additional funds that must be reserved for the number of bytes store in metadata,
        ///  either "normal" metadata or attribute metadata.
        /// </summary>
        public Ajuna.NetApi.Model.Types.Primitive.U128 DepositPerByte()
        {
            var result = new Ajuna.NetApi.Model.Types.Primitive.U128();
            result.Create("0x00CA9A3B000000000000000000000000");
            return result;
        }
        
        /// <summary>
        /// >> StringLimit
        ///  The maximum length of data stored on-chain.
        /// </summary>
        public Ajuna.NetApi.Model.Types.Primitive.U32 StringLimit()
        {
            var result = new Ajuna.NetApi.Model.Types.Primitive.U32();
            result.Create("0x80000000");
            return result;
        }
        
        /// <summary>
        /// >> KeyLimit
        ///  The maximum length of an attribute key.
        /// </summary>
        public Ajuna.NetApi.Model.Types.Primitive.U32 KeyLimit()
        {
            var result = new Ajuna.NetApi.Model.Types.Primitive.U32();
            result.Create("0x20000000");
            return result;
        }
        
        /// <summary>
        /// >> ValueLimit
        ///  The maximum length of an attribute value.
        /// </summary>
        public Ajuna.NetApi.Model.Types.Primitive.U32 ValueLimit()
        {
            var result = new Ajuna.NetApi.Model.Types.Primitive.U32();
            result.Create("0xC8000000");
            return result;
        }
        
        /// <summary>
        /// >> ApprovalsLimit
        ///  The maximum approvals an item could have.
        /// </summary>
        public Ajuna.NetApi.Model.Types.Primitive.U32 ApprovalsLimit()
        {
            var result = new Ajuna.NetApi.Model.Types.Primitive.U32();
            result.Create("0x01000000");
            return result;
        }
        
        /// <summary>
        /// >> ItemAttributesApprovalsLimit
        ///  The maximum attributes approvals an item could have.
        /// </summary>
        public Ajuna.NetApi.Model.Types.Primitive.U32 ItemAttributesApprovalsLimit()
        {
            var result = new Ajuna.NetApi.Model.Types.Primitive.U32();
            result.Create("0x0A000000");
            return result;
        }
        
        /// <summary>
        /// >> MaxTips
        ///  The max number of tips a user could send.
        /// </summary>
        public Ajuna.NetApi.Model.Types.Primitive.U32 MaxTips()
        {
            var result = new Ajuna.NetApi.Model.Types.Primitive.U32();
            result.Create("0x01000000");
            return result;
        }
        
        /// <summary>
        /// >> MaxDeadlineDuration
        ///  The max duration in blocks for deadlines.
        /// </summary>
        public Ajuna.NetApi.Model.Types.Primitive.U32 MaxDeadlineDuration()
        {
            var result = new Ajuna.NetApi.Model.Types.Primitive.U32();
            result.Create("0x01000000");
            return result;
        }
        
        /// <summary>
        /// >> Features
        ///  Disables some of pallet's features.
        /// </summary>
        public Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.BitFlagsT4 Features()
        {
            var result = new Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types.BitFlagsT4();
            result.Create("0x0000000000000000");
            return result;
        }
    }
    
    public enum NftErrors
    {
        
        /// <summary>
        /// >> NoPermission
        /// The signing account has no permission to do the operation.
        /// </summary>
        NoPermission,
        
        /// <summary>
        /// >> UnknownCollection
        /// The given item ID is unknown.
        /// </summary>
        UnknownCollection,
        
        /// <summary>
        /// >> AlreadyExists
        /// The item ID has already been used for an item.
        /// </summary>
        AlreadyExists,
        
        /// <summary>
        /// >> ApprovalExpired
        /// The approval had a deadline that expired, so the approval isn't valid anymore.
        /// </summary>
        ApprovalExpired,
        
        /// <summary>
        /// >> WrongOwner
        /// The owner turned out to be different to what was expected.
        /// </summary>
        WrongOwner,
        
        /// <summary>
        /// >> BadWitness
        /// The witness data given does not match the current state of the chain.
        /// </summary>
        BadWitness,
        
        /// <summary>
        /// >> CollectionIdInUse
        /// Collection ID is already taken.
        /// </summary>
        CollectionIdInUse,
        
        /// <summary>
        /// >> ItemsNonTransferable
        /// Items within that collection are non-transferable.
        /// </summary>
        ItemsNonTransferable,
        
        /// <summary>
        /// >> NotDelegate
        /// The provided account is not a delegate.
        /// </summary>
        NotDelegate,
        
        /// <summary>
        /// >> WrongDelegate
        /// The delegate turned out to be different to what was expected.
        /// </summary>
        WrongDelegate,
        
        /// <summary>
        /// >> Unapproved
        /// No approval exists that would allow the transfer.
        /// </summary>
        Unapproved,
        
        /// <summary>
        /// >> Unaccepted
        /// The named owner has not signed ownership acceptance of the collection.
        /// </summary>
        Unaccepted,
        
        /// <summary>
        /// >> ItemLocked
        /// The item is locked (non-transferable).
        /// </summary>
        ItemLocked,
        
        /// <summary>
        /// >> LockedItemAttributes
        /// Item's attributes are locked.
        /// </summary>
        LockedItemAttributes,
        
        /// <summary>
        /// >> LockedCollectionAttributes
        /// Collection's attributes are locked.
        /// </summary>
        LockedCollectionAttributes,
        
        /// <summary>
        /// >> LockedItemMetadata
        /// Item's metadata is locked.
        /// </summary>
        LockedItemMetadata,
        
        /// <summary>
        /// >> LockedCollectionMetadata
        /// Collection's metadata is locked.
        /// </summary>
        LockedCollectionMetadata,
        
        /// <summary>
        /// >> MaxSupplyReached
        /// All items have been minted.
        /// </summary>
        MaxSupplyReached,
        
        /// <summary>
        /// >> MaxSupplyLocked
        /// The max supply is locked and can't be changed.
        /// </summary>
        MaxSupplyLocked,
        
        /// <summary>
        /// >> MaxSupplyTooSmall
        /// The provided max supply is less than the number of items a collection already has.
        /// </summary>
        MaxSupplyTooSmall,
        
        /// <summary>
        /// >> UnknownItem
        /// The given item ID is unknown.
        /// </summary>
        UnknownItem,
        
        /// <summary>
        /// >> UnknownSwap
        /// Swap doesn't exist.
        /// </summary>
        UnknownSwap,
        
        /// <summary>
        /// >> NotForSale
        /// Item is not for sale.
        /// </summary>
        NotForSale,
        
        /// <summary>
        /// >> BidTooLow
        /// The provided bid is too low.
        /// </summary>
        BidTooLow,
        
        /// <summary>
        /// >> ReachedApprovalLimit
        /// The item has reached its approval limit.
        /// </summary>
        ReachedApprovalLimit,
        
        /// <summary>
        /// >> DeadlineExpired
        /// The deadline has already expired.
        /// </summary>
        DeadlineExpired,
        
        /// <summary>
        /// >> WrongDuration
        /// The duration provided should be less than or equal to `MaxDeadlineDuration`.
        /// </summary>
        WrongDuration,
        
        /// <summary>
        /// >> MethodDisabled
        /// The method is disabled by system settings.
        /// </summary>
        MethodDisabled,
        
        /// <summary>
        /// >> WrongSetting
        /// The provided setting can't be set.
        /// </summary>
        WrongSetting,
        
        /// <summary>
        /// >> InconsistentItemConfig
        /// Item's config already exists and should be equal to the provided one.
        /// </summary>
        InconsistentItemConfig,
        
        /// <summary>
        /// >> NoConfig
        /// Config for a collection or an item can't be found.
        /// </summary>
        NoConfig,
        
        /// <summary>
        /// >> RolesNotCleared
        /// Some roles were not cleared.
        /// </summary>
        RolesNotCleared,
        
        /// <summary>
        /// >> MintNotStarted
        /// Mint has not started yet.
        /// </summary>
        MintNotStarted,
        
        /// <summary>
        /// >> MintEnded
        /// Mint has already ended.
        /// </summary>
        MintEnded,
        
        /// <summary>
        /// >> AlreadyClaimed
        /// The provided Item was already used for claiming.
        /// </summary>
        AlreadyClaimed,
        
        /// <summary>
        /// >> IncorrectData
        /// The provided data is incorrect.
        /// </summary>
        IncorrectData,
    }
}
