git.delta.rocks / unique-network / refs/commits / 4e9eae9cae08

difftreelog

Runtime types added

str-mv2021-01-12parent: #32b37d3.patch.diff
in: master

1 file changed

addedpallets/nft/src/types.rsdiffbeforeafterboth
after · pallets/nft/src/types.rs
1#[cfg(feature = "std")]2pub use std::*;34#[cfg(feature = "std")]5pub use serde::*;67use codec::{Decode, Encode};89pub type CollectionId = u32;10pub type TokenId = u32;11pub type DecimalPoints = u8;1213#[derive(Encode, Decode, Eq, Debug, Clone, PartialEq)]14#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]15pub enum CollectionMode {16    Invalid,17    NFT,18    // decimal points19    Fungible(DecimalPoints),20    // decimal points21    ReFungible(DecimalPoints),22}2324impl Into<u8> for CollectionMode {25    fn into(self) -> u8 {26        match self {27            CollectionMode::Invalid => 0,28            CollectionMode::NFT => 1,29            CollectionMode::Fungible(_) => 2,30            CollectionMode::ReFungible(_) => 3,31        }32    }33}3435#[derive(Encode, Decode, Eq, Debug, Clone, PartialEq)]36#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]37pub enum AccessMode {38    Normal,39    WhiteList,40}41impl Default for AccessMode {42    fn default() -> Self {43        Self::Normal44    }45}4647impl Default for CollectionMode {48    fn default() -> Self {49        Self::Invalid50    }51}5253#[derive(Encode, Decode, Eq, Debug, Clone, PartialEq)]54#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]55pub enum SchemaVersion {56    ImageURL,57    Unique,58}59impl Default for SchemaVersion {60    fn default() -> Self {61        Self::ImageURL62    }63}6465#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]66#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]67pub struct Ownership<AccountId> {68    pub owner: AccountId,69    pub fraction: u128,70}7172#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]73#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]74pub struct CollectionType<AccountId> {75    pub owner: AccountId,76    pub mode: CollectionMode,77    pub access: AccessMode,78    pub decimal_points: DecimalPoints,79    pub name: Vec<u16>,        // 64 include null escape char80    pub description: Vec<u16>, // 256 include null escape char81    pub token_prefix: Vec<u8>, // 16 include null escape char82    pub mint_mode: bool,83    pub offchain_schema: Vec<u8>,84    pub schema_version: SchemaVersion,85    pub sponsor: AccountId, // Who pays fees. If set to default address, the fees are applied to the transaction sender86    pub unconfirmed_sponsor: AccountId, // Sponsor address that has not yet confirmed sponsorship87    pub limits: CollectionLimits, // Collection private restrictions 88    pub variable_on_chain_schema: Vec<u8>, //89    pub const_on_chain_schema: Vec<u8>, //90}9192#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]93#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]94pub struct NftItemType<AccountId> {95    pub collection: CollectionId,96    pub owner: AccountId,97    pub const_data: Vec<u8>,98    pub variable_data: Vec<u8>,99}100101#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]102#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]103pub struct FungibleItemType<AccountId> {104    pub collection: CollectionId,105    pub owner: AccountId,106    pub value: u128,107}108109#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]110#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]111pub struct ReFungibleItemType<AccountId> {112    pub collection: CollectionId,113    pub owner: Vec<Ownership<AccountId>>,114    pub const_data: Vec<u8>,115    pub variable_data: Vec<u8>,116}117118#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]119#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]120pub struct ApprovePermissions<AccountId> {121    pub approved: AccountId,122    pub amount: u128,123}124125#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]126#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]127pub struct VestingItem<AccountId, Moment> {128    pub sender: AccountId,129    pub recipient: AccountId,130    pub collection_id: CollectionId,131    pub item_id: TokenId,132    pub amount: u64,133    pub vesting_date: Moment,134}135136#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]137#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]138pub struct BasketItem<AccountId, BlockNumber> {139    pub address: AccountId,140    pub start_block: BlockNumber,141}142143#[derive(Encode, Decode, Debug, Clone, PartialEq)]144#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]145pub struct CollectionLimits {146    pub account_token_ownership_limit: u32,147    pub sponsored_data_size: u32,148    pub token_limit: u32,149150    // Timeouts for item types in passed blocks151    pub sponsor_transfer_timeout: u32,152}153154impl Default for CollectionLimits {155    fn default() -> CollectionLimits {156        CollectionLimits { 157            account_token_ownership_limit: 10_000_000, 158            token_limit: u32::max_value(),159            sponsored_data_size: u32::max_value(), 160            sponsor_transfer_timeout: 14400 }161    }162}163164#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]165#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]166pub struct ChainLimits {167    pub collection_numbers_limit: u32,168    pub account_token_ownership_limit: u32,169    pub collections_admins_limit: u64,170    pub custom_data_limit: u32,171172    // Timeouts for item types in passed blocks173    pub nft_sponsor_transfer_timeout: u32,174    pub fungible_sponsor_transfer_timeout: u32,175    pub refungible_sponsor_transfer_timeout: u32,176}177178179#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]180#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]181pub struct CreateNftData {182    pub const_data: Vec<u8>,183    pub variable_data: Vec<u8>,184}185186#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]187#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]188pub struct CreateFungibleData {189}190191#[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]192#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]193pub struct CreateReFungibleData {194    pub const_data: Vec<u8>,195    pub variable_data: Vec<u8>,196}197198#[derive(Encode, Decode, Debug, Clone, PartialEq)]199#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]200pub enum CreateItemData {201    NFT(CreateNftData),202    Fungible(CreateFungibleData),203    ReFungible(CreateReFungibleData),204}205206impl CreateItemData {207    pub fn len(&self) -> usize {208        let len = match self {209            CreateItemData::NFT(data) => data.variable_data.len() + data.const_data.len(),210            CreateItemData::ReFungible(data) => data.variable_data.len() + data.const_data.len(),211            _ => 0212        };213        214        return len;215    }216}217218impl From<CreateNftData> for CreateItemData {219    fn from(item: CreateNftData) -> Self {220        CreateItemData::NFT(item)221    }222}223224impl From<CreateReFungibleData> for CreateItemData {225    fn from(item: CreateReFungibleData) -> Self {226        CreateItemData::ReFungible(item)227    }228}229230impl From<CreateFungibleData> for CreateItemData {231    fn from(item: CreateFungibleData) -> Self {232        CreateItemData::Fungible(item)233    }234}