--- a/primitives/nft/Cargo.toml +++ b/primitives/nft/Cargo.toml @@ -10,7 +10,7 @@ [dependencies] codec = { package = "parity-scale-codec", version = "2.2.0", default-features = false, features = ['derive'] } -serde = { version = "1.0.119", features = ['derive'], default-features = false } +serde = { version = "1.0.119", features = ['derive'], default-features = false, optional = true } max-encoded-len = { default-features = false, features = ['derive'], version = '3.0.0', git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.8' } frame-support = { default-features = false, version = '3.0.0', git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.8' } frame-system = { default-features = false, version = '3.0.0', git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.8' } @@ -22,6 +22,7 @@ [features] default = ["std"] std = [ + "serde1", "serde/std", "codec/std", "max-encoded-len/std", @@ -30,4 +31,5 @@ "sp-runtime/std", "sp-core/std", "sp-std/std", -] \ No newline at end of file +] +serde1 = ["serde"] \ No newline at end of file --- a/primitives/nft/src/lib.rs +++ b/primitives/nft/src/lib.rs @@ -1,5 +1,6 @@ #![cfg_attr(not(feature = "std"), no_std)] +#[cfg(feature = "serde")] pub use serde::{Serialize, Deserialize}; use sp_runtime::sp_std::prelude::Vec; @@ -39,7 +40,8 @@ pub type TokenId = u32; pub type DecimalPoints = u8; -#[derive(Encode, Decode, Eq, Debug, Clone, PartialEq, Serialize, Deserialize)] +#[derive(Encode, Decode, Eq, Debug, Clone, PartialEq)] +#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))] pub enum CollectionMode { Invalid, NFT, @@ -69,7 +71,8 @@ fn resolve(who: &AccountId, call: &Call) -> Option; } -#[derive(Encode, Decode, Eq, Debug, Clone, PartialEq, Serialize, Deserialize)] +#[derive(Encode, Decode, Eq, Debug, Clone, PartialEq)] +#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))] pub enum AccessMode { Normal, WhiteList, @@ -80,7 +83,8 @@ } } -#[derive(Encode, Decode, Eq, Debug, Clone, PartialEq, Serialize, Deserialize)] +#[derive(Encode, Decode, Eq, Debug, Clone, PartialEq)] +#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))] pub enum SchemaVersion { ImageURL, Unique, @@ -91,13 +95,15 @@ } } -#[derive(Encode, Decode, Default, Debug, Clone, PartialEq, Serialize, Deserialize)] +#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)] +#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))] pub struct Ownership { pub owner: AccountId, pub fraction: u128, } -#[derive(Encode, Decode, Debug, Clone, PartialEq, Serialize, Deserialize)] +#[derive(Encode, Decode, Debug, Clone, PartialEq)] +#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))] pub enum SponsorshipState { /// The fees are applied to the transaction sender Disabled, @@ -133,7 +139,7 @@ } #[derive(Encode, Decode, Clone, PartialEq)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] +#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))] pub struct Collection { pub owner: T::AccountId, pub mode: CollectionMode, @@ -152,26 +158,30 @@ pub transfers_enabled: bool, } -#[derive(Encode, Decode, Debug, Clone, PartialEq, Serialize, Deserialize)] +#[derive(Encode, Decode, Debug, Clone, PartialEq)] +#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))] pub struct NftItemType { pub owner: AccountId, pub const_data: Vec, pub variable_data: Vec, } -#[derive(Encode, Decode, Default, Debug, Clone, PartialEq, Serialize, Deserialize)] +#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)] +#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))] pub struct FungibleItemType { pub value: u128, } -#[derive(Encode, Decode, Debug, Clone, PartialEq, Serialize, Deserialize)] +#[derive(Encode, Decode, Debug, Clone, PartialEq)] +#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))] pub struct ReFungibleItemType { pub owner: Vec>, pub const_data: Vec, pub variable_data: Vec, } -#[derive(Encode, Decode, Debug, Clone, PartialEq, Serialize, Deserialize)] +#[derive(Encode, Decode, Debug, Clone, PartialEq)] +#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))] pub struct CollectionLimits { pub account_token_ownership_limit: u32, pub sponsored_data_size: u32, @@ -201,7 +211,8 @@ } } -#[derive(Encode, Decode, Default, Debug, Clone, PartialEq, Serialize, Deserialize)] +#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)] +#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))] pub struct ChainLimits { pub collection_numbers_limit: u32, pub account_token_ownership_limit: u32, @@ -220,6 +231,7 @@ } /// BoundedVec doesn't supports serde +#[cfg(feature = "serde1")] mod bounded_serde { use core::convert::TryFrom; use frame_support::{BoundedVec, traits::Get}; @@ -251,41 +263,39 @@ } } -#[derive( - Encode, Decode, MaxEncodedLen, Default, Derivative, Clone, PartialEq, Serialize, Deserialize, -)] +#[derive(Encode, Decode, MaxEncodedLen, Default, Derivative, Clone, PartialEq)] +#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))] #[derivative(Debug)] pub struct CreateNftData { - #[serde(with = "bounded_serde")] + #[cfg_attr(feature = "serde1", serde(with = "bounded_serde"))] #[derivative(Debug = "ignore")] pub const_data: BoundedVec, - #[serde(with = "bounded_serde")] + #[cfg_attr(feature = "serde1", serde(with = "bounded_serde"))] #[derivative(Debug = "ignore")] pub variable_data: BoundedVec, } -#[derive( - Encode, Decode, MaxEncodedLen, Default, Debug, Clone, PartialEq, Serialize, Deserialize, -)] +#[derive(Encode, Decode, MaxEncodedLen, Default, Debug, Clone, PartialEq)] +#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))] pub struct CreateFungibleData { pub value: u128, } -#[derive( - Encode, Decode, MaxEncodedLen, Default, Derivative, Clone, PartialEq, Serialize, Deserialize, -)] +#[derive(Encode, Decode, MaxEncodedLen, Default, Derivative, Clone, PartialEq)] +#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))] #[derivative(Debug)] pub struct CreateReFungibleData { - #[serde(with = "bounded_serde")] + #[cfg_attr(feature = "serde1", serde(with = "bounded_serde"))] #[derivative(Debug = "ignore")] pub const_data: BoundedVec, - #[serde(with = "bounded_serde")] + #[cfg_attr(feature = "serde1", serde(with = "bounded_serde"))] #[derivative(Debug = "ignore")] pub variable_data: BoundedVec, pub pieces: u128, } -#[derive(Encode, Decode, MaxEncodedLen, Debug, Clone, PartialEq, Serialize, Deserialize)] +#[derive(Encode, Decode, MaxEncodedLen, Debug, Clone, PartialEq)] +#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))] pub enum CreateItemData { NFT(CreateNftData), Fungible(CreateFungibleData),