From 72c7ffd01acce56711cf2a25732bf32d3899f91a Mon Sep 17 00:00:00 2001
From: Jun Jiang <jasl9187@hotmail.com>
Date: Fri, 10 Mar 2023 01:44:26 +0800
Subject: [PATCH] Add amalgamation traits for NFT CollectionId and ItemId
 (#13514)

* Add amalgamation traits for NFT CollectionId, ItemId, and DestroyWitness

* Apply @bkchr suggests

* ".git/.scripts/commands/fmt/fmt.sh"

---------

Co-authored-by: command-bot <>
---
 .../frame/support/src/traits/tokens/nonfungible_v2.rs     | 7 +++++--
 .../frame/support/src/traits/tokens/nonfungibles_v2.rs    | 8 ++++----
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/substrate/frame/support/src/traits/tokens/nonfungible_v2.rs b/substrate/frame/support/src/traits/tokens/nonfungible_v2.rs
index 175d94324aa..c23bf3e4055 100644
--- a/substrate/frame/support/src/traits/tokens/nonfungible_v2.rs
+++ b/substrate/frame/support/src/traits/tokens/nonfungible_v2.rs
@@ -25,7 +25,10 @@
 //! use.
 
 use super::nonfungibles_v2 as nonfungibles;
-use crate::{dispatch::DispatchResult, traits::Get};
+use crate::{
+	dispatch::{DispatchResult, Parameter},
+	traits::Get,
+};
 use codec::{Decode, Encode};
 use sp_runtime::TokenError;
 use sp_std::prelude::*;
@@ -33,7 +36,7 @@ use sp_std::prelude::*;
 /// Trait for providing an interface to a read-only NFT-like item.
 pub trait Inspect<AccountId> {
 	/// Type for identifying an item.
-	type ItemId;
+	type ItemId: Parameter;
 
 	/// Returns the owner of `item`, or `None` if the item doesn't exist or has no
 	/// owner.
diff --git a/substrate/frame/support/src/traits/tokens/nonfungibles_v2.rs b/substrate/frame/support/src/traits/tokens/nonfungibles_v2.rs
index 5deb0c568f4..9d32f29becd 100644
--- a/substrate/frame/support/src/traits/tokens/nonfungibles_v2.rs
+++ b/substrate/frame/support/src/traits/tokens/nonfungibles_v2.rs
@@ -27,7 +27,7 @@
 //! Implementations of these traits may be converted to implementations of corresponding
 //! `nonfungible` traits by using the `nonfungible::ItemOf` type adapter.
 
-use crate::dispatch::{DispatchError, DispatchResult};
+use crate::dispatch::{DispatchError, DispatchResult, Parameter};
 use codec::{Decode, Encode};
 use sp_runtime::TokenError;
 use sp_std::prelude::*;
@@ -35,11 +35,11 @@ use sp_std::prelude::*;
 /// Trait for providing an interface to many read-only NFT-like sets of items.
 pub trait Inspect<AccountId> {
 	/// Type for identifying an item.
-	type ItemId;
+	type ItemId: Parameter;
 
 	/// Type for identifying a collection (an identifier for an independent collection of
 	/// items).
-	type CollectionId;
+	type CollectionId: Parameter;
 
 	/// Returns the owner of `item` of `collection`, or `None` if the item doesn't exist
 	/// (or somehow has no owner).
@@ -193,7 +193,7 @@ pub trait Create<AccountId, CollectionConfig>: Inspect<AccountId> {
 /// Trait for providing the ability to destroy collections of nonfungible items.
 pub trait Destroy<AccountId>: Inspect<AccountId> {
 	/// The witness data needed to destroy an item.
-	type DestroyWitness;
+	type DestroyWitness: Parameter;
 
 	/// Provide the appropriate witness data needed to destroy an item.
 	fn get_destroy_witness(collection: &Self::CollectionId) -> Option<Self::DestroyWitness>;
-- 
GitLab