//------------------------------------------------------------------------------
// <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>
//------------------------------------------------------------------------------

namespace Bajun.Network.NET.RestClient.Generated.Interfaces
{
   using System;
   using System.Threading.Tasks;
   using Bajun.Network.NET.NetApiExt.Generated.Model.pallet_nfts.types;
   using Ajuna.NetApi.Model.Types.Primitive;
   using Ajuna.NetApi.Model.Types.Base;
   using Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.bounded.bounded_vec;
   using Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.bounded.bounded_btree_set;
   
   public interface INftControllerClient
   {
      Task<CollectionDetails> GetCollection(U32 key);
      Task<bool> SubscribeCollection(U32 key);
      Task<U32> GetOwnershipAcceptance(Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32 key);
      Task<bool> SubscribeOwnershipAcceptance(Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32 key);
      Task<BaseTuple> GetAccount(BaseTuple<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32, U32, U128> key);
      Task<bool> SubscribeAccount(BaseTuple<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32, U32, U128> key);
      Task<BaseTuple> GetCollectionAccount(BaseTuple<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32, U32> key);
      Task<bool> SubscribeCollectionAccount(BaseTuple<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32, U32> key);
      Task<BitFlagsT3> GetCollectionRoleOf(BaseTuple<U32, Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32> key);
      Task<bool> SubscribeCollectionRoleOf(BaseTuple<U32, Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32> key);
      Task<ItemDetails> GetItem(BaseTuple<U32, U128> key);
      Task<bool> SubscribeItem(BaseTuple<U32, U128> key);
      Task<CollectionMetadata> GetCollectionMetadataOf(U32 key);
      Task<bool> SubscribeCollectionMetadataOf(U32 key);
      Task<ItemMetadata> GetItemMetadataOf(BaseTuple<U32, U128> key);
      Task<bool> SubscribeItemMetadataOf(BaseTuple<U32, U128> key);
      Task<BaseTuple<BoundedVecT7, AttributeDeposit>> GetAttribute(BaseTuple<U32, BaseOpt<U128>, Bajun.Network.NET.NetApiExt.Generated.Model.frame_support.traits.tokens.misc.EnumAttributeNamespace, BoundedVecT6> key);
      Task<bool> SubscribeAttribute(BaseTuple<U32, BaseOpt<U128>, Bajun.Network.NET.NetApiExt.Generated.Model.frame_support.traits.tokens.misc.EnumAttributeNamespace, BoundedVecT6> key);
      Task<BaseTuple<U128, BaseOpt<Bajun.Network.NET.NetApiExt.Generated.Model.sp_core.crypto.AccountId32>>> GetItemPriceOf(BaseTuple<U32, U128> key);
      Task<bool> SubscribeItemPriceOf(BaseTuple<U32, U128> key);
      Task<BoundedBTreeSetT2> GetItemAttributesApprovalsOf(BaseTuple<U32, U128> key);
      Task<bool> SubscribeItemAttributesApprovalsOf(BaseTuple<U32, U128> key);
      Task<U32> GetNextCollectionId();
      Task<bool> SubscribeNextCollectionId();
      Task<PendingSwap> GetPendingSwapOf(BaseTuple<U32, U128> key);
      Task<bool> SubscribePendingSwapOf(BaseTuple<U32, U128> key);
      Task<CollectionConfig> GetCollectionConfigOf(U32 key);
      Task<bool> SubscribeCollectionConfigOf(U32 key);
      Task<ItemConfig> GetItemConfigOf(BaseTuple<U32, U128> key);
      Task<bool> SubscribeItemConfigOf(BaseTuple<U32, U128> key);
   }
}
