difftreelog
misc: change uint256 to U256
in: master
10 files changed
crates/evm-coder/src/lib.rsdiffbeforeafterboth--- a/crates/evm-coder/src/lib.rs
+++ b/crates/evm-coder/src/lib.rs
@@ -132,7 +132,6 @@
use primitive_types::{U256, H160, H256};
pub type address = H160;
- pub type uint256 = U256;
pub type bytes4 = [u8; 4];
pub type topic = H256;
pallets/common/src/eth.rsdiffbeforeafterboth--- a/pallets/common/src/eth.rs
+++ b/pallets/common/src/eth.rs
@@ -18,12 +18,9 @@
use alloc::format;
use sp_std::{vec, vec::Vec};
-use evm_coder::{
- AbiCoder,
- types::{uint256, address},
-};
+use evm_coder::{AbiCoder, types::address};
pub use pallet_evm::{Config, account::CrossAccountId};
-use sp_core::H160;
+use sp_core::{H160, U256};
use up_data_structs::CollectionId;
// 0x17c4e6453Cc49AAAaEACA894e6D9683e00000001 - collection 1
@@ -55,8 +52,8 @@
address[0..16] == ETH_COLLECTION_PREFIX
}
-/// Convert `uint256` to `CrossAccountId`.
-pub fn convert_uint256_to_cross_account<T: Config>(from: uint256) -> T::CrossAccountId
+/// Convert `U256` to `CrossAccountId`.
+pub fn convert_uint256_to_cross_account<T: Config>(from: U256) -> T::CrossAccountId
where
T::AccountId: From<[u8; 32]>,
{
@@ -70,7 +67,7 @@
#[derive(Debug, Default, AbiCoder)]
pub struct CrossAddress {
pub(crate) eth: address,
- pub(crate) sub: uint256,
+ pub(crate) sub: U256,
}
impl CrossAddress {
@@ -97,7 +94,7 @@
{
Self {
eth: Default::default(),
- sub: uint256::from_big_endian(account_id.as_ref()),
+ sub: U256::from_big_endian(account_id.as_ref()),
}
}
/// Converts [`CrossAddress`] to `CrossAccountId`.
@@ -187,7 +184,7 @@
#[derive(Debug, Default, AbiCoder)]
pub struct CollectionLimit {
field: CollectionLimitField,
- value: Option<uint256>,
+ value: Option<U256>,
}
impl CollectionLimit {
@@ -393,12 +390,12 @@
#[derive(Debug, Default, AbiCoder)]
pub struct CollectionNesting {
token_owner: bool,
- ids: Vec<uint256>,
+ ids: Vec<U256>,
}
impl CollectionNesting {
/// Create [`CollectionNesting`].
- pub fn new(token_owner: bool, ids: Vec<uint256>) -> Self {
+ pub fn new(token_owner: bool, ids: Vec<U256>) -> Self {
Self { token_owner, ids }
}
}
pallets/evm-contract-helpers/src/eth.rsdiffbeforeafterboth--- a/pallets/evm-contract-helpers/src/eth.rs
+++ b/pallets/evm-contract-helpers/src/eth.rs
@@ -261,7 +261,7 @@
&mut self,
caller: caller,
contract_address: address,
- fee_limit: uint256,
+ fee_limit: U256,
) -> Result<()> {
self.recorder().consume_sload()?;
self.recorder().consume_sstore()?;
@@ -276,7 +276,7 @@
/// @param contractAddress Contract to get sponsoring fee limit of
/// @return uint256 Maximum amount of fee that could be spent by single
/// transaction
- fn sponsoring_fee_limit(&self, contract_address: address) -> Result<uint256> {
+ fn sponsoring_fee_limit(&self, contract_address: address) -> Result<U256> {
self.recorder().consume_sload()?;
Ok(get_sponsoring_fee_limit::<T>(contract_address))
@@ -441,7 +441,7 @@
}
}
-fn get_sponsoring_fee_limit<T: Config>(contract_address: address) -> uint256 {
+fn get_sponsoring_fee_limit<T: Config>(contract_address: address) -> U256 {
<SponsoringFeeLimit<T>>::get(contract_address)
.get(&0xffffffff)
.cloned()
pallets/fungible/src/erc.rsdiffbeforeafterboth--- a/pallets/fungible/src/erc.rs
+++ b/pallets/fungible/src/erc.rs
@@ -32,7 +32,7 @@
use pallet_evm::{account::CrossAccountId, PrecompileHandle};
use pallet_evm_coder_substrate::{call, dispatch_to_evm};
use pallet_structure::{SelfWeightOf as StructureWeight, weights::WeightInfo as _};
-use sp_core::Get;
+use sp_core::{U256, Get};
use crate::{
Allowance, Balance, Config, FungibleHandle, Pallet, SelfWeightOf, TotalSupply,
@@ -46,14 +46,14 @@
from: address,
#[indexed]
to: address,
- value: uint256,
+ value: U256,
},
Approval {
#[indexed]
owner: address,
#[indexed]
spender: address,
- value: uint256,
+ value: U256,
},
}
@@ -67,7 +67,7 @@
fn symbol(&self) -> Result<string> {
Ok(string::from_utf8_lossy(&self.token_prefix).into())
}
- fn total_supply(&self) -> Result<uint256> {
+ fn total_supply(&self) -> Result<U256> {
self.consume_store_reads(1)?;
Ok(<TotalSupply<T>>::get(self.id).into())
}
@@ -79,14 +79,14 @@
unreachable!()
})
}
- fn balance_of(&self, owner: address) -> Result<uint256> {
+ fn balance_of(&self, owner: address) -> Result<U256> {
self.consume_store_reads(1)?;
let owner = T::CrossAccountId::from_eth(owner);
let balance = <Balance<T>>::get((self.id, owner));
Ok(balance.into())
}
#[weight(<SelfWeightOf<T>>::transfer())]
- fn transfer(&mut self, caller: caller, to: address, amount: uint256) -> Result<bool> {
+ fn transfer(&mut self, caller: caller, to: address, amount: U256) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
let to = T::CrossAccountId::from_eth(to);
let amount = amount.try_into().map_err(|_| "amount overflow")?;
@@ -104,7 +104,7 @@
caller: caller,
from: address,
to: address,
- amount: uint256,
+ amount: U256,
) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
let from = T::CrossAccountId::from_eth(from);
@@ -119,7 +119,7 @@
Ok(true)
}
#[weight(<SelfWeightOf<T>>::approve())]
- fn approve(&mut self, caller: caller, spender: address, amount: uint256) -> Result<bool> {
+ fn approve(&mut self, caller: caller, spender: address, amount: U256) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
let spender = T::CrossAccountId::from_eth(spender);
let amount = amount.try_into().map_err(|_| "amount overflow")?;
@@ -128,7 +128,7 @@
.map_err(dispatch_to_evm::<T>)?;
Ok(true)
}
- fn allowance(&self, owner: address, spender: address) -> Result<uint256> {
+ fn allowance(&self, owner: address, spender: address) -> Result<U256> {
self.consume_store_reads(1)?;
let owner = T::CrossAccountId::from_eth(owner);
let spender = T::CrossAccountId::from_eth(spender);
@@ -148,7 +148,7 @@
/// @param to account that will receive minted tokens
/// @param amount amount of tokens to mint
#[weight(<SelfWeightOf<T>>::create_item())]
- fn mint(&mut self, caller: caller, to: address, amount: uint256) -> Result<bool> {
+ fn mint(&mut self, caller: caller, to: address, amount: U256) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
let to = T::CrossAccountId::from_eth(to);
let amount = amount.try_into().map_err(|_| "amount overflow")?;
@@ -178,7 +178,7 @@
&mut self,
caller: caller,
to: pallet_common::eth::CrossAddress,
- amount: uint256,
+ amount: U256,
) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
let to = to.into_sub_cross_account::<T>()?;
@@ -196,7 +196,7 @@
&mut self,
caller: caller,
spender: pallet_common::eth::CrossAddress,
- amount: uint256,
+ amount: U256,
) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
let spender = spender.into_sub_cross_account::<T>()?;
@@ -214,7 +214,7 @@
/// @param amount The amount that will be burnt.
#[solidity(hide)]
#[weight(<SelfWeightOf<T>>::burn_from())]
- fn burn_from(&mut self, caller: caller, from: address, amount: uint256) -> Result<bool> {
+ fn burn_from(&mut self, caller: caller, from: address, amount: U256) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
let from = T::CrossAccountId::from_eth(from);
let amount = amount.try_into().map_err(|_| "amount overflow")?;
@@ -237,7 +237,7 @@
&mut self,
caller: caller,
from: pallet_common::eth::CrossAddress,
- amount: uint256,
+ amount: U256,
) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
let from = from.into_sub_cross_account::<T>()?;
@@ -254,7 +254,7 @@
/// Mint tokens for multiple accounts.
/// @param amounts array of pairs of account address and amount
#[weight(<SelfWeightOf<T>>::create_multiple_items_ex(amounts.len() as u32))]
- fn mint_bulk(&mut self, caller: caller, amounts: Vec<(address, uint256)>) -> Result<bool> {
+ fn mint_bulk(&mut self, caller: caller, amounts: Vec<(address, U256)>) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
let budget = self
.recorder
@@ -279,7 +279,7 @@
&mut self,
caller: caller,
to: pallet_common::eth::CrossAddress,
- amount: uint256,
+ amount: U256,
) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
let to = to.into_sub_cross_account::<T>()?;
@@ -298,7 +298,7 @@
caller: caller,
from: pallet_common::eth::CrossAddress,
to: pallet_common::eth::CrossAddress,
- amount: uint256,
+ amount: U256,
) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
let from = from.into_sub_cross_account::<T>()?;
pallets/nonfungible/src/erc.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/erc.rs
+++ b/pallets/nonfungible/src/erc.rs
@@ -43,7 +43,7 @@
use pallet_evm::{account::CrossAccountId, PrecompileHandle};
use pallet_evm_coder_substrate::call;
use pallet_structure::{SelfWeightOf as StructureWeight, weights::WeightInfo as _};
-use sp_core::Get;
+use sp_core::{U256, Get};
use crate::{
AccountBalance, Config, CreateItemData, NonfungibleHandle, Pallet, TokenData, TokensMinted,
@@ -122,7 +122,7 @@
fn set_property(
&mut self,
caller: caller,
- token_id: uint256,
+ token_id: U256,
key: string,
value: bytes,
) -> Result<()> {
@@ -155,7 +155,7 @@
fn set_properties(
&mut self,
caller: caller,
- token_id: uint256,
+ token_id: U256,
properties: Vec<eth::Property>,
) -> Result<()> {
let caller = T::CrossAccountId::from_eth(caller);
@@ -187,7 +187,7 @@
/// @param key Property key.
#[solidity(hide)]
#[weight(<SelfWeightOf<T>>::delete_token_properties(1))]
- fn delete_property(&mut self, token_id: uint256, caller: caller, key: string) -> Result<()> {
+ fn delete_property(&mut self, token_id: U256, caller: caller, key: string) -> Result<()> {
let caller = T::CrossAccountId::from_eth(caller);
let token_id: u32 = token_id.try_into().map_err(|_| "token id overflow")?;
let key = <Vec<u8>>::from(key)
@@ -209,7 +209,7 @@
#[weight(<SelfWeightOf<T>>::delete_token_properties(keys.len() as u32))]
fn delete_properties(
&mut self,
- token_id: uint256,
+ token_id: U256,
caller: caller,
keys: Vec<string>,
) -> Result<()> {
@@ -239,7 +239,7 @@
/// @param tokenId ID of the token.
/// @param key Property key.
/// @return Property value bytes
- fn property(&self, token_id: uint256, key: string) -> Result<bytes> {
+ fn property(&self, token_id: U256, key: string) -> Result<bytes> {
let token_id: u32 = token_id.try_into().map_err(|_| "token id overflow")?;
let key = <Vec<u8>>::from(key)
.try_into()
@@ -265,7 +265,7 @@
#[indexed]
to: address,
#[indexed]
- token_id: uint256,
+ token_id: U256,
},
/// @dev This emits when the approved address for an NFT is changed or
/// reaffirmed. The zero address indicates there is no approved address.
@@ -277,7 +277,7 @@
#[indexed]
approved: address,
#[indexed]
- token_id: uint256,
+ token_id: U256,
},
/// @dev This emits when an operator is enabled or disabled for an owner.
/// The operator can manage all NFTs of the owner.
@@ -322,7 +322,7 @@
///
/// @return token's const_metadata
#[solidity(rename_selector = "tokenURI")]
- fn token_uri(&self, token_id: uint256) -> Result<string> {
+ fn token_uri(&self, token_id: U256) -> Result<string> {
let token_id_u32: u32 = token_id.try_into().map_err(|_| "token id overflow")?;
match get_token_property(self, token_id_u32, &key::url()).as_deref() {
@@ -368,12 +368,12 @@
/// @param index A counter less than `totalSupply()`
/// @return The token identifier for the `index`th NFT,
/// (sort order not specified)
- fn token_by_index(&self, index: uint256) -> Result<uint256> {
+ fn token_by_index(&self, index: U256) -> Result<U256> {
Ok(index)
}
/// @dev Not implemented
- fn token_of_owner_by_index(&self, _owner: address, _index: uint256) -> Result<uint256> {
+ fn token_of_owner_by_index(&self, _owner: address, _index: U256) -> Result<U256> {
// TODO: Not implemetable
Err("not implemented".into())
}
@@ -381,7 +381,7 @@
/// @notice Count NFTs tracked by this contract
/// @return A count of valid NFTs tracked by this contract, where each one of
/// them has an assigned and queryable owner not equal to the zero address
- fn total_supply(&self) -> Result<uint256> {
+ fn total_supply(&self) -> Result<U256> {
self.consume_store_reads(1)?;
Ok(<Pallet<T>>::total_supply(self).into())
}
@@ -396,7 +396,7 @@
/// function throws for queries about the zero address.
/// @param owner An address for whom to query the balance
/// @return The number of NFTs owned by `owner`, possibly zero
- fn balance_of(&self, owner: address) -> Result<uint256> {
+ fn balance_of(&self, owner: address) -> Result<U256> {
self.consume_store_reads(1)?;
let owner = T::CrossAccountId::from_eth(owner);
let balance = <AccountBalance<T>>::get((self.id, owner));
@@ -407,7 +407,7 @@
/// about them do throw.
/// @param tokenId The identifier for an NFT
/// @return The address of the owner of the NFT
- fn owner_of(&self, token_id: uint256) -> Result<address> {
+ fn owner_of(&self, token_id: U256) -> Result<address> {
self.consume_store_reads(1)?;
let token: TokenId = token_id.try_into()?;
Ok(*<TokenData<T>>::get((self.id, token))
@@ -421,19 +421,14 @@
&mut self,
_from: address,
_to: address,
- _token_id: uint256,
+ _token_id: U256,
_data: bytes,
) -> Result<()> {
// TODO: Not implemetable
Err("not implemented".into())
}
/// @dev Not implemented
- fn safe_transfer_from(
- &mut self,
- _from: address,
- _to: address,
- _token_id: uint256,
- ) -> Result<()> {
+ fn safe_transfer_from(&mut self, _from: address, _to: address, _token_id: U256) -> Result<()> {
// TODO: Not implemetable
Err("not implemented".into())
}
@@ -453,7 +448,7 @@
caller: caller,
from: address,
to: address,
- token_id: uint256,
+ token_id: U256,
) -> Result<()> {
let caller = T::CrossAccountId::from_eth(caller);
let from = T::CrossAccountId::from_eth(from);
@@ -475,7 +470,7 @@
/// @param approved The new approved NFT controller
/// @param tokenId The NFT to approve
#[weight(<SelfWeightOf<T>>::approve())]
- fn approve(&mut self, caller: caller, approved: address, token_id: uint256) -> Result<()> {
+ fn approve(&mut self, caller: caller, approved: address, token_id: U256) -> Result<()> {
let caller = T::CrossAccountId::from_eth(caller);
let approved = T::CrossAccountId::from_eth(approved);
let token = token_id.try_into()?;
@@ -505,7 +500,7 @@
}
/// @dev Not implemented
- fn get_approved(&self, _token_id: uint256) -> Result<address> {
+ fn get_approved(&self, _token_id: U256) -> Result<address> {
// TODO: Not implemetable
Err("not implemented".into())
}
@@ -528,7 +523,7 @@
/// operator of the current owner.
/// @param tokenId The NFT to approve
#[weight(<SelfWeightOf<T>>::burn_item())]
- fn burn(&mut self, caller: caller, token_id: uint256) -> Result<()> {
+ fn burn(&mut self, caller: caller, token_id: U256) -> Result<()> {
let caller = T::CrossAccountId::from_eth(caller);
let token = token_id.try_into()?;
@@ -544,8 +539,8 @@
/// @param to The new owner
/// @return uint256 The id of the newly minted token
#[weight(<SelfWeightOf<T>>::create_item())]
- fn mint(&mut self, caller: caller, to: address) -> Result<uint256> {
- let token_id: uint256 = <TokensMinted<T>>::get(self.id)
+ fn mint(&mut self, caller: caller, to: address) -> Result<U256> {
+ let token_id: U256 = <TokensMinted<T>>::get(self.id)
.checked_add(1)
.ok_or("item id overflow")?
.into();
@@ -560,7 +555,7 @@
/// @param tokenId ID of the minted NFT
#[solidity(hide, rename_selector = "mint")]
#[weight(<SelfWeightOf<T>>::create_item())]
- fn mint_check_id(&mut self, caller: caller, to: address, token_id: uint256) -> Result<bool> {
+ fn mint_check_id(&mut self, caller: caller, to: address, token_id: U256) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
let to = T::CrossAccountId::from_eth(to);
let token_id: u32 = token_id.try_into()?;
@@ -601,8 +596,8 @@
caller: caller,
to: address,
token_uri: string,
- ) -> Result<uint256> {
- let token_id: uint256 = <TokensMinted<T>>::get(self.id)
+ ) -> Result<U256> {
+ let token_id: U256 = <TokensMinted<T>>::get(self.id)
.checked_add(1)
.ok_or("item id overflow")?
.into();
@@ -622,7 +617,7 @@
&mut self,
caller: caller,
to: address,
- token_id: uint256,
+ token_id: U256,
token_uri: string,
) -> Result<bool> {
let key = key::url();
@@ -730,7 +725,7 @@
/// Returns the owner (in cross format) of the token.
///
/// @param tokenId Id for the token.
- fn cross_owner_of(&self, token_id: uint256) -> Result<eth::CrossAddress> {
+ fn cross_owner_of(&self, token_id: U256) -> Result<eth::CrossAddress> {
Self::token_owner(&self, token_id.try_into()?)
.map(|o| eth::CrossAddress::from_sub_cross_account::<T>(&o))
.ok_or(Error::Revert("key too large".into()))
@@ -741,7 +736,7 @@
/// @param tokenId Id for the token.
/// @param keys Properties keys. Empty keys for all propertyes.
/// @return Vector of properties key/value pairs.
- fn properties(&self, token_id: uint256, keys: Vec<string>) -> Result<Vec<eth::Property>> {
+ fn properties(&self, token_id: U256, keys: Vec<string>) -> Result<Vec<eth::Property>> {
let keys = keys
.into_iter()
.map(|key| {
@@ -772,7 +767,7 @@
&mut self,
caller: caller,
approved: eth::CrossAddress,
- token_id: uint256,
+ token_id: U256,
) -> Result<()> {
let caller = T::CrossAccountId::from_eth(caller);
let approved = approved.into_sub_cross_account::<T>()?;
@@ -789,7 +784,7 @@
/// @param to The new owner
/// @param tokenId The NFT to transfer
#[weight(<SelfWeightOf<T>>::transfer())]
- fn transfer(&mut self, caller: caller, to: address, token_id: uint256) -> Result<()> {
+ fn transfer(&mut self, caller: caller, to: address, token_id: U256) -> Result<()> {
let caller = T::CrossAccountId::from_eth(caller);
let to = T::CrossAccountId::from_eth(to);
let token = token_id.try_into()?;
@@ -811,7 +806,7 @@
&mut self,
caller: caller,
to: eth::CrossAddress,
- token_id: uint256,
+ token_id: U256,
) -> Result<()> {
let caller = T::CrossAccountId::from_eth(caller);
let to = to.into_sub_cross_account::<T>()?;
@@ -836,7 +831,7 @@
caller: caller,
from: eth::CrossAddress,
to: eth::CrossAddress,
- token_id: uint256,
+ token_id: U256,
) -> Result<()> {
let caller = T::CrossAccountId::from_eth(caller);
let from = from.into_sub_cross_account::<T>()?;
@@ -858,7 +853,7 @@
/// @param tokenId The NFT to transfer
#[solidity(hide)]
#[weight(<SelfWeightOf<T>>::burn_from())]
- fn burn_from(&mut self, caller: caller, from: address, token_id: uint256) -> Result<()> {
+ fn burn_from(&mut self, caller: caller, from: address, token_id: U256) -> Result<()> {
let caller = T::CrossAccountId::from_eth(caller);
let from = T::CrossAccountId::from_eth(from);
let token = token_id.try_into()?;
@@ -882,7 +877,7 @@
&mut self,
caller: caller,
from: eth::CrossAddress,
- token_id: uint256,
+ token_id: U256,
) -> Result<()> {
let caller = T::CrossAccountId::from_eth(caller);
let from = from.into_sub_cross_account::<T>()?;
@@ -897,7 +892,7 @@
}
/// @notice Returns next free NFT ID.
- fn next_token_id(&self) -> Result<uint256> {
+ fn next_token_id(&self) -> Result<U256> {
self.consume_store_reads(1)?;
Ok(<TokensMinted<T>>::get(self.id)
.checked_add(1)
@@ -912,7 +907,7 @@
/// @param tokenIds IDs of the minted NFTs
#[solidity(hide)]
#[weight(<SelfWeightOf<T>>::create_multiple_items(token_ids.len() as u32))]
- fn mint_bulk(&mut self, caller: caller, to: address, token_ids: Vec<uint256>) -> Result<bool> {
+ fn mint_bulk(&mut self, caller: caller, to: address, token_ids: Vec<U256>) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
let to = T::CrossAccountId::from_eth(to);
let mut expected_index = <TokensMinted<T>>::get(self.id)
@@ -953,7 +948,7 @@
&mut self,
caller: caller,
to: address,
- tokens: Vec<(uint256, string)>,
+ tokens: Vec<(U256, string)>,
) -> Result<bool> {
let key = key::url();
let caller = T::CrossAccountId::from_eth(caller);
@@ -1005,7 +1000,7 @@
caller: caller,
to: eth::CrossAddress,
properties: Vec<eth::Property>,
- ) -> Result<uint256> {
+ ) -> Result<U256> {
let token_id = <TokensMinted<T>>::get(self.id)
.checked_add(1)
.ok_or("item id overflow")?;
pallets/refungible/src/erc.rsdiffbeforeafterboth--- a/pallets/refungible/src/erc.rs
+++ b/pallets/refungible/src/erc.rs
@@ -39,7 +39,7 @@
use pallet_evm::{account::CrossAccountId, PrecompileHandle};
use pallet_evm_coder_substrate::{call, dispatch_to_evm};
use pallet_structure::{SelfWeightOf as StructureWeight, weights::WeightInfo as _};
-use sp_core::{H160, Get};
+use sp_core::{H160, U256, Get};
use sp_std::{collections::btree_map::BTreeMap, vec::Vec, vec};
use up_data_structs::{
CollectionId, CollectionPropertiesVec, mapping::TokenAddressMapping, Property, PropertyKey,
@@ -125,7 +125,7 @@
fn set_property(
&mut self,
caller: caller,
- token_id: uint256,
+ token_id: U256,
key: string,
value: bytes,
) -> Result<()> {
@@ -158,7 +158,7 @@
fn set_properties(
&mut self,
caller: caller,
- token_id: uint256,
+ token_id: U256,
properties: Vec<eth::Property>,
) -> Result<()> {
let caller = T::CrossAccountId::from_eth(caller);
@@ -190,7 +190,7 @@
/// @param key Property key.
#[solidity(hide)]
#[weight(<SelfWeightOf<T>>::delete_token_properties(1))]
- fn delete_property(&mut self, token_id: uint256, caller: caller, key: string) -> Result<()> {
+ fn delete_property(&mut self, token_id: U256, caller: caller, key: string) -> Result<()> {
let caller = T::CrossAccountId::from_eth(caller);
let token_id: u32 = token_id.try_into().map_err(|_| "token id overflow")?;
let key = <Vec<u8>>::from(key)
@@ -212,7 +212,7 @@
#[weight(<SelfWeightOf<T>>::delete_token_properties(keys.len() as u32))]
fn delete_properties(
&mut self,
- token_id: uint256,
+ token_id: U256,
caller: caller,
keys: Vec<string>,
) -> Result<()> {
@@ -242,7 +242,7 @@
/// @param tokenId ID of the token.
/// @param key Property key.
/// @return Property value bytes
- fn property(&self, token_id: uint256, key: string) -> Result<bytes> {
+ fn property(&self, token_id: U256, key: string) -> Result<bytes> {
let token_id: u32 = token_id.try_into().map_err(|_| "token id overflow")?;
let key = <Vec<u8>>::from(key)
.try_into()
@@ -266,7 +266,7 @@
#[indexed]
to: address,
#[indexed]
- token_id: uint256,
+ token_id: U256,
},
/// @dev Not supported
Approval {
@@ -275,7 +275,7 @@
#[indexed]
approved: address,
#[indexed]
- token_id: uint256,
+ token_id: U256,
},
/// @dev Not supported
#[allow(dead_code)]
@@ -319,7 +319,7 @@
///
/// @return token's const_metadata
#[solidity(rename_selector = "tokenURI")]
- fn token_uri(&self, token_id: uint256) -> Result<string> {
+ fn token_uri(&self, token_id: U256) -> Result<string> {
let token_id_u32: u32 = token_id.try_into().map_err(|_| "token id overflow")?;
match get_token_property(self, token_id_u32, &key::url()).as_deref() {
@@ -365,12 +365,12 @@
/// @param index A counter less than `totalSupply()`
/// @return The token identifier for the `index`th NFT,
/// (sort order not specified)
- fn token_by_index(&self, index: uint256) -> Result<uint256> {
+ fn token_by_index(&self, index: U256) -> Result<U256> {
Ok(index)
}
/// Not implemented
- fn token_of_owner_by_index(&self, _owner: address, _index: uint256) -> Result<uint256> {
+ fn token_of_owner_by_index(&self, _owner: address, _index: U256) -> Result<U256> {
// TODO: Not implemetable
Err("not implemented".into())
}
@@ -378,7 +378,7 @@
/// @notice Count RFTs tracked by this contract
/// @return A count of valid RFTs tracked by this contract, where each one of
/// them has an assigned and queryable owner not equal to the zero address
- fn total_supply(&self) -> Result<uint256> {
+ fn total_supply(&self) -> Result<U256> {
self.consume_store_reads(1)?;
Ok(<Pallet<T>>::total_supply(self).into())
}
@@ -393,7 +393,7 @@
/// function throws for queries about the zero address.
/// @param owner An address for whom to query the balance
/// @return The number of RFTs owned by `owner`, possibly zero
- fn balance_of(&self, owner: address) -> Result<uint256> {
+ fn balance_of(&self, owner: address) -> Result<U256> {
self.consume_store_reads(1)?;
let owner = T::CrossAccountId::from_eth(owner);
let balance = <AccountBalance<T>>::get((self.id, owner));
@@ -407,7 +407,7 @@
/// the tokens that are partially owned.
/// @param tokenId The identifier for an RFT
/// @return The address of the owner of the RFT
- fn owner_of(&self, token_id: uint256) -> Result<address> {
+ fn owner_of(&self, token_id: U256) -> Result<address> {
self.consume_store_reads(2)?;
let token = token_id.try_into()?;
let owner = <Pallet<T>>::token_owner(self.id, token);
@@ -422,7 +422,7 @@
&mut self,
_from: address,
_to: address,
- _token_id: uint256,
+ _token_id: U256,
_data: bytes,
) -> Result<()> {
// TODO: Not implemetable
@@ -431,12 +431,7 @@
/// @dev Not implemented
#[solidity(rename_selector = "safeTransferFrom")]
- fn safe_transfer_from(
- &mut self,
- _from: address,
- _to: address,
- _token_id: uint256,
- ) -> Result<()> {
+ fn safe_transfer_from(&mut self, _from: address, _to: address, _token_id: U256) -> Result<()> {
// TODO: Not implemetable
Err("not implemented".into())
}
@@ -457,7 +452,7 @@
caller: caller,
from: address,
to: address,
- token_id: uint256,
+ token_id: U256,
) -> Result<()> {
let caller = T::CrossAccountId::from_eth(caller);
let from = T::CrossAccountId::from_eth(from);
@@ -477,7 +472,7 @@
}
/// @dev Not implemented
- fn approve(&mut self, _caller: caller, _approved: address, _token_id: uint256) -> Result<()> {
+ fn approve(&mut self, _caller: caller, _approved: address, _token_id: U256) -> Result<()> {
Err("not implemented".into())
}
@@ -501,7 +496,7 @@
}
/// @dev Not implemented
- fn get_approved(&self, _token_id: uint256) -> Result<address> {
+ fn get_approved(&self, _token_id: U256) -> Result<address> {
// TODO: Not implemetable
Err("not implemented".into())
}
@@ -556,7 +551,7 @@
/// operator of the current owner.
/// @param tokenId The RFT to approve
#[weight(<SelfWeightOf<T>>::burn_item_fully())]
- fn burn(&mut self, caller: caller, token_id: uint256) -> Result<()> {
+ fn burn(&mut self, caller: caller, token_id: U256) -> Result<()> {
let caller = T::CrossAccountId::from_eth(caller);
let token = token_id.try_into()?;
@@ -575,8 +570,8 @@
/// @param to The new owner
/// @return uint256 The id of the newly minted token
#[weight(<SelfWeightOf<T>>::create_item())]
- fn mint(&mut self, caller: caller, to: address) -> Result<uint256> {
- let token_id: uint256 = <TokensMinted<T>>::get(self.id)
+ fn mint(&mut self, caller: caller, to: address) -> Result<U256> {
+ let token_id: U256 = <TokensMinted<T>>::get(self.id)
.checked_add(1)
.ok_or("item id overflow")?
.into();
@@ -591,7 +586,7 @@
/// @param tokenId ID of the minted RFT
#[solidity(hide, rename_selector = "mint")]
#[weight(<SelfWeightOf<T>>::create_item())]
- fn mint_check_id(&mut self, caller: caller, to: address, token_id: uint256) -> Result<bool> {
+ fn mint_check_id(&mut self, caller: caller, to: address, token_id: U256) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
let to = T::CrossAccountId::from_eth(to);
let token_id: u32 = token_id.try_into()?;
@@ -637,8 +632,8 @@
caller: caller,
to: address,
token_uri: string,
- ) -> Result<uint256> {
- let token_id: uint256 = <TokensMinted<T>>::get(self.id)
+ ) -> Result<U256> {
+ let token_id: U256 = <TokensMinted<T>>::get(self.id)
.checked_add(1)
.ok_or("item id overflow")?
.into();
@@ -658,7 +653,7 @@
&mut self,
caller: caller,
to: address,
- token_id: uint256,
+ token_id: U256,
token_uri: string,
) -> Result<bool> {
let key = key::url();
@@ -768,7 +763,7 @@
/// Returns the owner (in cross format) of the token.
///
/// @param tokenId Id for the token.
- fn cross_owner_of(&self, token_id: uint256) -> Result<eth::CrossAddress> {
+ fn cross_owner_of(&self, token_id: U256) -> Result<eth::CrossAddress> {
Self::token_owner(&self, token_id.try_into()?)
.map(|o| eth::CrossAddress::from_sub_cross_account::<T>(&o))
.ok_or(Error::Revert("key too large".into()))
@@ -779,7 +774,7 @@
/// @param tokenId Id for the token.
/// @param keys Properties keys. Empty keys for all propertyes.
/// @return Vector of properties key/value pairs.
- fn properties(&self, token_id: uint256, keys: Vec<string>) -> Result<Vec<eth::Property>> {
+ fn properties(&self, token_id: U256, keys: Vec<string>) -> Result<Vec<eth::Property>> {
let keys = keys
.into_iter()
.map(|key| {
@@ -805,7 +800,7 @@
/// @param to The new owner
/// @param tokenId The RFT to transfer
#[weight(<SelfWeightOf<T>>::transfer_creating_removing())]
- fn transfer(&mut self, caller: caller, to: address, token_id: uint256) -> Result<()> {
+ fn transfer(&mut self, caller: caller, to: address, token_id: U256) -> Result<()> {
let caller = T::CrossAccountId::from_eth(caller);
let to = T::CrossAccountId::from_eth(to);
let token = token_id.try_into()?;
@@ -832,7 +827,7 @@
&mut self,
caller: caller,
to: eth::CrossAddress,
- token_id: uint256,
+ token_id: U256,
) -> Result<()> {
let caller = T::CrossAccountId::from_eth(caller);
let to = to.into_sub_cross_account::<T>()?;
@@ -861,7 +856,7 @@
caller: caller,
from: eth::CrossAddress,
to: eth::CrossAddress,
- token_id: uint256,
+ token_id: U256,
) -> Result<()> {
let caller = T::CrossAccountId::from_eth(caller);
let from = from.into_sub_cross_account::<T>()?;
@@ -888,7 +883,7 @@
/// @param tokenId The RFT to transfer
#[solidity(hide)]
#[weight(<SelfWeightOf<T>>::burn_from())]
- fn burn_from(&mut self, caller: caller, from: address, token_id: uint256) -> Result<()> {
+ fn burn_from(&mut self, caller: caller, from: address, token_id: U256) -> Result<()> {
let caller = T::CrossAccountId::from_eth(caller);
let from = T::CrossAccountId::from_eth(from);
let token = token_id.try_into()?;
@@ -916,7 +911,7 @@
&mut self,
caller: caller,
from: eth::CrossAddress,
- token_id: uint256,
+ token_id: U256,
) -> Result<()> {
let caller = T::CrossAccountId::from_eth(caller);
let from = from.into_sub_cross_account::<T>()?;
@@ -934,7 +929,7 @@
}
/// @notice Returns next free RFT ID.
- fn next_token_id(&self) -> Result<uint256> {
+ fn next_token_id(&self) -> Result<U256> {
self.consume_store_reads(1)?;
Ok(<TokensMinted<T>>::get(self.id)
.checked_add(1)
@@ -949,7 +944,7 @@
/// @param tokenIds IDs of the minted RFTs
#[solidity(hide)]
#[weight(<SelfWeightOf<T>>::create_multiple_items(token_ids.len() as u32))]
- fn mint_bulk(&mut self, caller: caller, to: address, token_ids: Vec<uint256>) -> Result<bool> {
+ fn mint_bulk(&mut self, caller: caller, to: address, token_ids: Vec<U256>) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
let to = T::CrossAccountId::from_eth(to);
let mut expected_index = <TokensMinted<T>>::get(self.id)
@@ -996,7 +991,7 @@
&mut self,
caller: caller,
to: address,
- tokens: Vec<(uint256, string)>,
+ tokens: Vec<(U256, string)>,
) -> Result<bool> {
let key = key::url();
let caller = T::CrossAccountId::from_eth(caller);
@@ -1054,7 +1049,7 @@
caller: caller,
to: eth::CrossAddress,
properties: Vec<eth::Property>,
- ) -> Result<uint256> {
+ ) -> Result<U256> {
let token_id = <TokensMinted<T>>::get(self.id)
.checked_add(1)
.ok_or("item id overflow")?;
@@ -1093,7 +1088,7 @@
/// Returns EVM address for refungible token
///
/// @param token ID of the token
- fn token_contract_address(&self, token: uint256) -> Result<address> {
+ fn token_contract_address(&self, token: U256) -> Result<address> {
Ok(T::EvmTokenAddressMapping::token_to_address(
self.id,
token.try_into().map_err(|_| "token id overflow")?,
pallets/refungible/src/erc_token.rsdiffbeforeafterboth--- a/pallets/refungible/src/erc_token.rs
+++ b/pallets/refungible/src/erc_token.rs
@@ -37,6 +37,7 @@
use pallet_evm_coder_substrate::{call, dispatch_to_evm, WithRecorder};
use pallet_structure::{SelfWeightOf as StructureWeight, weights::WeightInfo as _};
use sp_std::vec::Vec;
+use sp_core::U256;
use up_data_structs::TokenId;
use crate::{
@@ -55,7 +56,7 @@
Ok(collection_id_to_address(self.id))
}
- fn parent_token_id(&self) -> Result<uint256> {
+ fn parent_token_id(&self) -> Result<U256> {
Ok(self.1.into())
}
}
@@ -71,7 +72,7 @@
from: address,
#[indexed]
to: address,
- value: uint256,
+ value: U256,
},
/// @dev This event is emitted when the amount of tokens (value) is approved
/// by the owner to be used by the spender.
@@ -80,7 +81,7 @@
owner: address,
#[indexed]
spender: address,
- value: uint256,
+ value: U256,
},
}
@@ -103,7 +104,7 @@
}
/// @dev Total number of tokens in existence
- fn total_supply(&self) -> Result<uint256> {
+ fn total_supply(&self) -> Result<U256> {
self.consume_store_reads(1)?;
Ok(<TotalSupply<T>>::get((self.id, self.1)).into())
}
@@ -117,7 +118,7 @@
/// @dev Gets the balance of the specified address.
/// @param owner The address to query the balance of.
/// @return An uint256 representing the amount owned by the passed address.
- fn balance_of(&self, owner: address) -> Result<uint256> {
+ fn balance_of(&self, owner: address) -> Result<U256> {
self.consume_store_reads(1)?;
let owner = T::CrossAccountId::from_eth(owner);
let balance = <Balance<T>>::get((self.id, self.1, owner));
@@ -128,7 +129,7 @@
/// @param to The address to transfer to.
/// @param amount The amount to be transferred.
#[weight(<CommonWeights<T>>::transfer())]
- fn transfer(&mut self, caller: caller, to: address, amount: uint256) -> Result<bool> {
+ fn transfer(&mut self, caller: caller, to: address, amount: U256) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
let to = T::CrossAccountId::from_eth(to);
let amount = amount.try_into().map_err(|_| "amount overflow")?;
@@ -151,7 +152,7 @@
caller: caller,
from: address,
to: address,
- amount: uint256,
+ amount: U256,
) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
let from = T::CrossAccountId::from_eth(from);
@@ -174,7 +175,7 @@
/// @param spender The address which will spend the funds.
/// @param amount The amount of tokens to be spent.
#[weight(<SelfWeightOf<T>>::approve())]
- fn approve(&mut self, caller: caller, spender: address, amount: uint256) -> Result<bool> {
+ fn approve(&mut self, caller: caller, spender: address, amount: U256) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
let spender = T::CrossAccountId::from_eth(spender);
let amount = amount.try_into().map_err(|_| "amount overflow")?;
@@ -188,7 +189,7 @@
/// @param owner address The address which owns the funds.
/// @param spender address The address which will spend the funds.
/// @return A uint256 specifying the amount of tokens still available for the spender.
- fn allowance(&self, owner: address, spender: address) -> Result<uint256> {
+ fn allowance(&self, owner: address, spender: address) -> Result<U256> {
self.consume_store_reads(1)?;
let owner = T::CrossAccountId::from_eth(owner);
let spender = T::CrossAccountId::from_eth(spender);
@@ -208,7 +209,7 @@
/// @param amount The amount that will be burnt.
#[weight(<SelfWeightOf<T>>::burn_from())]
#[solidity(hide)]
- fn burn_from(&mut self, caller: caller, from: address, amount: uint256) -> Result<bool> {
+ fn burn_from(&mut self, caller: caller, from: address, amount: U256) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
let from = T::CrossAccountId::from_eth(from);
let amount = amount.try_into().map_err(|_| "amount overflow")?;
@@ -230,7 +231,7 @@
&mut self,
caller: caller,
from: pallet_common::eth::CrossAddress,
- amount: uint256,
+ amount: U256,
) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
let from = from.into_sub_cross_account::<T>()?;
@@ -256,7 +257,7 @@
&mut self,
caller: caller,
spender: pallet_common::eth::CrossAddress,
- amount: uint256,
+ amount: U256,
) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
let spender = spender.into_sub_cross_account::<T>()?;
@@ -270,7 +271,7 @@
/// Throws if `msg.sender` doesn't owns all of the tokens.
/// @param amount New total amount of the tokens.
#[weight(<SelfWeightOf<T>>::repartition_item())]
- fn repartition(&mut self, caller: caller, amount: uint256) -> Result<bool> {
+ fn repartition(&mut self, caller: caller, amount: U256) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
let amount = amount.try_into().map_err(|_| "amount overflow")?;
@@ -286,7 +287,7 @@
&mut self,
caller: caller,
to: pallet_common::eth::CrossAddress,
- amount: uint256,
+ amount: U256,
) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
let to = to.into_sub_cross_account::<T>()?;
@@ -310,7 +311,7 @@
caller: caller,
from: pallet_common::eth::CrossAddress,
to: pallet_common::eth::CrossAddress,
- amount: uint256,
+ amount: U256,
) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
let from = from.into_sub_cross_account::<T>()?;
tests/src/eth/abi/nonFungible.jsondiffbeforeafterboth--- a/tests/src/eth/abi/nonFungible.json
+++ b/tests/src/eth/abi/nonFungible.json
@@ -51,6 +51,12 @@
},
{
"anonymous": false,
+ "inputs": [],
+ "name": "MintingFinished",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
"inputs": [
{
"indexed": true,
@@ -417,6 +423,13 @@
"type": "function"
},
{
+ "inputs": [],
+ "name": "finishMinting",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
"inputs": [
{ "internalType": "uint256", "name": "tokenId", "type": "uint256" }
],
@@ -504,6 +517,13 @@
},
{
"inputs": [],
+ "name": "mintingFinished",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
"name": "name",
"outputs": [{ "internalType": "string", "name": "", "type": "string" }],
"stateMutability": "view",
tests/src/eth/abi/reFungible.jsondiffbeforeafterboth1[2 {3 "anonymous": false,4 "inputs": [5 {6 "indexed": true,7 "internalType": "address",8 "name": "owner",9 "type": "address"10 },11 {12 "indexed": true,13 "internalType": "address",14 "name": "approved",15 "type": "address"16 },17 {18 "indexed": true,19 "internalType": "uint256",20 "name": "tokenId",21 "type": "uint256"22 }23 ],24 "name": "Approval",25 "type": "event"26 },27 {28 "anonymous": false,29 "inputs": [30 {31 "indexed": true,32 "internalType": "address",33 "name": "owner",34 "type": "address"35 },36 {37 "indexed": true,38 "internalType": "address",39 "name": "operator",40 "type": "address"41 },42 {43 "indexed": false,44 "internalType": "bool",45 "name": "approved",46 "type": "bool"47 }48 ],49 "name": "ApprovalForAll",50 "type": "event"51 },52 {53 "anonymous": false,54 "inputs": [55 {56 "indexed": true,57 "internalType": "address",58 "name": "from",59 "type": "address"60 },61 {62 "indexed": true,63 "internalType": "address",64 "name": "to",65 "type": "address"66 },67 {68 "indexed": true,69 "internalType": "uint256",70 "name": "tokenId",71 "type": "uint256"72 }73 ],74 "name": "Transfer",75 "type": "event"76 },77 {78 "inputs": [79 {80 "components": [81 { "internalType": "address", "name": "eth", "type": "address" },82 { "internalType": "uint256", "name": "sub", "type": "uint256" }83 ],84 "internalType": "struct CrossAddress",85 "name": "newAdmin",86 "type": "tuple"87 }88 ],89 "name": "addCollectionAdminCross",90 "outputs": [],91 "stateMutability": "nonpayable",92 "type": "function"93 },94 {95 "inputs": [96 {97 "components": [98 { "internalType": "address", "name": "eth", "type": "address" },99 { "internalType": "uint256", "name": "sub", "type": "uint256" }100 ],101 "internalType": "struct CrossAddress",102 "name": "user",103 "type": "tuple"104 }105 ],106 "name": "addToCollectionAllowListCross",107 "outputs": [],108 "stateMutability": "nonpayable",109 "type": "function"110 },111 {112 "inputs": [113 {114 "components": [115 { "internalType": "address", "name": "eth", "type": "address" },116 { "internalType": "uint256", "name": "sub", "type": "uint256" }117 ],118 "internalType": "struct CrossAddress",119 "name": "user",120 "type": "tuple"121 }122 ],123 "name": "allowlistedCross",124 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],125 "stateMutability": "view",126 "type": "function"127 },128 {129 "inputs": [130 { "internalType": "address", "name": "approved", "type": "address" },131 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }132 ],133 "name": "approve",134 "outputs": [],135 "stateMutability": "nonpayable",136 "type": "function"137 },138 {139 "inputs": [140 { "internalType": "address", "name": "owner", "type": "address" }141 ],142 "name": "balanceOf",143 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],144 "stateMutability": "view",145 "type": "function"146 },147 {148 "inputs": [149 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }150 ],151 "name": "burn",152 "outputs": [],153 "stateMutability": "nonpayable",154 "type": "function"155 },156 {157 "inputs": [158 {159 "components": [160 { "internalType": "address", "name": "eth", "type": "address" },161 { "internalType": "uint256", "name": "sub", "type": "uint256" }162 ],163 "internalType": "struct CrossAddress",164 "name": "from",165 "type": "tuple"166 },167 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }168 ],169 "name": "burnFromCross",170 "outputs": [],171 "stateMutability": "nonpayable",172 "type": "function"173 },174 {175 "inputs": [176 {177 "components": [178 { "internalType": "address", "name": "eth", "type": "address" },179 { "internalType": "uint256", "name": "sub", "type": "uint256" }180 ],181 "internalType": "struct CrossAddress",182 "name": "newOwner",183 "type": "tuple"184 }185 ],186 "name": "changeCollectionOwnerCross",187 "outputs": [],188 "stateMutability": "nonpayable",189 "type": "function"190 },191 {192 "inputs": [],193 "name": "collectionAdmins",194 "outputs": [195 {196 "components": [197 { "internalType": "address", "name": "eth", "type": "address" },198 { "internalType": "uint256", "name": "sub", "type": "uint256" }199 ],200 "internalType": "struct CrossAddress[]",201 "name": "",202 "type": "tuple[]"203 }204 ],205 "stateMutability": "view",206 "type": "function"207 },208 {209 "inputs": [],210 "name": "collectionHelperAddress",211 "outputs": [{ "internalType": "address", "name": "", "type": "address" }],212 "stateMutability": "view",213 "type": "function"214 },215 {216 "inputs": [],217 "name": "collectionLimits",218 "outputs": [219 {220 "components": [221 {222 "internalType": "enum CollectionLimitField",223 "name": "field",224 "type": "uint8"225 },226 {227 "components": [228 { "internalType": "bool", "name": "status", "type": "bool" },229 { "internalType": "uint256", "name": "value", "type": "uint256" }230 ],231 "internalType": "struct OptionUint256",232 "name": "value",233 "type": "tuple"234 }235 ],236 "internalType": "struct CollectionLimit[]",237 "name": "",238 "type": "tuple[]"239 }240 ],241 "stateMutability": "view",242 "type": "function"243 },244 {245 "inputs": [],246 "name": "collectionNestingPermissions",247 "outputs": [248 {249 "components": [250 {251 "internalType": "enum CollectionPermissionField",252 "name": "field",253 "type": "uint8"254 },255 { "internalType": "bool", "name": "value", "type": "bool" }256 ],257 "internalType": "struct CollectionNestingPermission[]",258 "name": "",259 "type": "tuple[]"260 }261 ],262 "stateMutability": "view",263 "type": "function"264 },265 {266 "inputs": [],267 "name": "collectionNestingRestrictedCollectionIds",268 "outputs": [269 {270 "components": [271 { "internalType": "bool", "name": "token_owner", "type": "bool" },272 { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }273 ],274 "internalType": "struct CollectionNesting",275 "name": "",276 "type": "tuple"277 }278 ],279 "stateMutability": "view",280 "type": "function"281 },282 {283 "inputs": [],284 "name": "collectionOwner",285 "outputs": [286 {287 "components": [288 { "internalType": "address", "name": "eth", "type": "address" },289 { "internalType": "uint256", "name": "sub", "type": "uint256" }290 ],291 "internalType": "struct CrossAddress",292 "name": "",293 "type": "tuple"294 }295 ],296 "stateMutability": "view",297 "type": "function"298 },299 {300 "inputs": [301 { "internalType": "string[]", "name": "keys", "type": "string[]" }302 ],303 "name": "collectionProperties",304 "outputs": [305 {306 "components": [307 { "internalType": "string", "name": "key", "type": "string" },308 { "internalType": "bytes", "name": "value", "type": "bytes" }309 ],310 "internalType": "struct Property[]",311 "name": "",312 "type": "tuple[]"313 }314 ],315 "stateMutability": "view",316 "type": "function"317 },318 {319 "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],320 "name": "collectionProperty",321 "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],322 "stateMutability": "view",323 "type": "function"324 },325 {326 "inputs": [],327 "name": "collectionSponsor",328 "outputs": [329 {330 "components": [331 { "internalType": "address", "name": "eth", "type": "address" },332 { "internalType": "uint256", "name": "sub", "type": "uint256" }333 ],334 "internalType": "struct CrossAddress",335 "name": "",336 "type": "tuple"337 }338 ],339 "stateMutability": "view",340 "type": "function"341 },342 {343 "inputs": [],344 "name": "confirmCollectionSponsorship",345 "outputs": [],346 "stateMutability": "nonpayable",347 "type": "function"348 },349 {350 "inputs": [],351 "name": "contractAddress",352 "outputs": [{ "internalType": "address", "name": "", "type": "address" }],353 "stateMutability": "view",354 "type": "function"355 },356 {357 "inputs": [358 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }359 ],360 "name": "crossOwnerOf",361 "outputs": [362 {363 "components": [364 { "internalType": "address", "name": "eth", "type": "address" },365 { "internalType": "uint256", "name": "sub", "type": "uint256" }366 ],367 "internalType": "struct CrossAddress",368 "name": "",369 "type": "tuple"370 }371 ],372 "stateMutability": "view",373 "type": "function"374 },375 {376 "inputs": [377 { "internalType": "string[]", "name": "keys", "type": "string[]" }378 ],379 "name": "deleteCollectionProperties",380 "outputs": [],381 "stateMutability": "nonpayable",382 "type": "function"383 },384 {385 "inputs": [386 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },387 { "internalType": "string[]", "name": "keys", "type": "string[]" }388 ],389 "name": "deleteProperties",390 "outputs": [],391 "stateMutability": "nonpayable",392 "type": "function"393 },394 {395 "inputs": [],396 "name": "description",397 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],398 "stateMutability": "view",399 "type": "function"400 },401 {402 "inputs": [403 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }404 ],405 "name": "getApproved",406 "outputs": [{ "internalType": "address", "name": "", "type": "address" }],407 "stateMutability": "view",408 "type": "function"409 },410 {411 "inputs": [],412 "name": "hasCollectionPendingSponsor",413 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],414 "stateMutability": "view",415 "type": "function"416 },417 {418 "inputs": [419 { "internalType": "address", "name": "owner", "type": "address" },420 { "internalType": "address", "name": "operator", "type": "address" }421 ],422 "name": "isApprovedForAll",423 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],424 "stateMutability": "view",425 "type": "function"426 },427 {428 "inputs": [429 {430 "components": [431 { "internalType": "address", "name": "eth", "type": "address" },432 { "internalType": "uint256", "name": "sub", "type": "uint256" }433 ],434 "internalType": "struct CrossAddress",435 "name": "user",436 "type": "tuple"437 }438 ],439 "name": "isOwnerOrAdminCross",440 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],441 "stateMutability": "view",442 "type": "function"443 },444 {445 "inputs": [{ "internalType": "address", "name": "to", "type": "address" }],446 "name": "mint",447 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],448 "stateMutability": "nonpayable",449 "type": "function"450 },451 {452 "inputs": [453 {454 "components": [455 { "internalType": "address", "name": "eth", "type": "address" },456 { "internalType": "uint256", "name": "sub", "type": "uint256" }457 ],458 "internalType": "struct CrossAddress",459 "name": "to",460 "type": "tuple"461 },462 {463 "components": [464 { "internalType": "string", "name": "key", "type": "string" },465 { "internalType": "bytes", "name": "value", "type": "bytes" }466 ],467 "internalType": "struct Property[]",468 "name": "properties",469 "type": "tuple[]"470 }471 ],472 "name": "mintCross",473 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],474 "stateMutability": "nonpayable",475 "type": "function"476 },477 {478 "inputs": [479 { "internalType": "address", "name": "to", "type": "address" },480 { "internalType": "string", "name": "tokenUri", "type": "string" }481 ],482 "name": "mintWithTokenURI",483 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],484 "stateMutability": "nonpayable",485 "type": "function"486 },487 {488 "inputs": [],489 "name": "name",490 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],491 "stateMutability": "view",492 "type": "function"493 },494 {495 "inputs": [],496 "name": "nextTokenId",497 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],498 "stateMutability": "view",499 "type": "function"500 },501 {502 "inputs": [503 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }504 ],505 "name": "ownerOf",506 "outputs": [{ "internalType": "address", "name": "", "type": "address" }],507 "stateMutability": "view",508 "type": "function"509 },510 {511 "inputs": [512 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },513 { "internalType": "string[]", "name": "keys", "type": "string[]" }514 ],515 "name": "properties",516 "outputs": [517 {518 "components": [519 { "internalType": "string", "name": "key", "type": "string" },520 { "internalType": "bytes", "name": "value", "type": "bytes" }521 ],522 "internalType": "struct Property[]",523 "name": "",524 "type": "tuple[]"525 }526 ],527 "stateMutability": "view",528 "type": "function"529 },530 {531 "inputs": [532 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },533 { "internalType": "string", "name": "key", "type": "string" }534 ],535 "name": "property",536 "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],537 "stateMutability": "view",538 "type": "function"539 },540 {541 "inputs": [542 {543 "components": [544 { "internalType": "address", "name": "eth", "type": "address" },545 { "internalType": "uint256", "name": "sub", "type": "uint256" }546 ],547 "internalType": "struct CrossAddress",548 "name": "admin",549 "type": "tuple"550 }551 ],552 "name": "removeCollectionAdminCross",553 "outputs": [],554 "stateMutability": "nonpayable",555 "type": "function"556 },557 {558 "inputs": [],559 "name": "removeCollectionSponsor",560 "outputs": [],561 "stateMutability": "nonpayable",562 "type": "function"563 },564 {565 "inputs": [566 {567 "components": [568 { "internalType": "address", "name": "eth", "type": "address" },569 { "internalType": "uint256", "name": "sub", "type": "uint256" }570 ],571 "internalType": "struct CrossAddress",572 "name": "user",573 "type": "tuple"574 }575 ],576 "name": "removeFromCollectionAllowListCross",577 "outputs": [],578 "stateMutability": "nonpayable",579 "type": "function"580 },581 {582 "inputs": [583 { "internalType": "address", "name": "from", "type": "address" },584 { "internalType": "address", "name": "to", "type": "address" },585 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }586 ],587 "name": "safeTransferFrom",588 "outputs": [],589 "stateMutability": "nonpayable",590 "type": "function"591 },592 {593 "inputs": [594 { "internalType": "address", "name": "from", "type": "address" },595 { "internalType": "address", "name": "to", "type": "address" },596 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },597 { "internalType": "bytes", "name": "data", "type": "bytes" }598 ],599 "name": "safeTransferFrom",600 "outputs": [],601 "stateMutability": "nonpayable",602 "type": "function"603 },604 {605 "inputs": [606 { "internalType": "address", "name": "operator", "type": "address" },607 { "internalType": "bool", "name": "approved", "type": "bool" }608 ],609 "name": "setApprovalForAll",610 "outputs": [],611 "stateMutability": "nonpayable",612 "type": "function"613 },614 {615 "inputs": [{ "internalType": "uint8", "name": "mode", "type": "uint8" }],616 "name": "setCollectionAccess",617 "outputs": [],618 "stateMutability": "nonpayable",619 "type": "function"620 },621 {622 "inputs": [623 {624 "components": [625 {626 "internalType": "enum CollectionLimitField",627 "name": "field",628 "type": "uint8"629 },630 {631 "components": [632 { "internalType": "bool", "name": "status", "type": "bool" },633 { "internalType": "uint256", "name": "value", "type": "uint256" }634 ],635 "internalType": "struct OptionUint256",636 "name": "value",637 "type": "tuple"638 }639 ],640 "internalType": "struct CollectionLimit",641 "name": "limit",642 "type": "tuple"643 }644 ],645 "name": "setCollectionLimit",646 "outputs": [],647 "stateMutability": "nonpayable",648 "type": "function"649 },650 {651 "inputs": [{ "internalType": "bool", "name": "mode", "type": "bool" }],652 "name": "setCollectionMintMode",653 "outputs": [],654 "stateMutability": "nonpayable",655 "type": "function"656 },657 {658 "inputs": [{ "internalType": "bool", "name": "enable", "type": "bool" }],659 "name": "setCollectionNesting",660 "outputs": [],661 "stateMutability": "nonpayable",662 "type": "function"663 },664 {665 "inputs": [666 { "internalType": "bool", "name": "enable", "type": "bool" },667 {668 "internalType": "address[]",669 "name": "collections",670 "type": "address[]"671 }672 ],673 "name": "setCollectionNesting",674 "outputs": [],675 "stateMutability": "nonpayable",676 "type": "function"677 },678 {679 "inputs": [680 {681 "components": [682 { "internalType": "string", "name": "key", "type": "string" },683 { "internalType": "bytes", "name": "value", "type": "bytes" }684 ],685 "internalType": "struct Property[]",686 "name": "properties",687 "type": "tuple[]"688 }689 ],690 "name": "setCollectionProperties",691 "outputs": [],692 "stateMutability": "nonpayable",693 "type": "function"694 },695 {696 "inputs": [697 {698 "components": [699 { "internalType": "address", "name": "eth", "type": "address" },700 { "internalType": "uint256", "name": "sub", "type": "uint256" }701 ],702 "internalType": "struct CrossAddress",703 "name": "sponsor",704 "type": "tuple"705 }706 ],707 "name": "setCollectionSponsorCross",708 "outputs": [],709 "stateMutability": "nonpayable",710 "type": "function"711 },712 {713 "inputs": [714 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },715 {716 "components": [717 { "internalType": "string", "name": "key", "type": "string" },718 { "internalType": "bytes", "name": "value", "type": "bytes" }719 ],720 "internalType": "struct Property[]",721 "name": "properties",722 "type": "tuple[]"723 }724 ],725 "name": "setProperties",726 "outputs": [],727 "stateMutability": "nonpayable",728 "type": "function"729 },730 {731 "inputs": [732 {733 "components": [734 { "internalType": "string", "name": "key", "type": "string" },735 {736 "components": [737 {738 "internalType": "enum TokenPermissionField",739 "name": "code",740 "type": "uint8"741 },742 { "internalType": "bool", "name": "value", "type": "bool" }743 ],744 "internalType": "struct PropertyPermission[]",745 "name": "permissions",746 "type": "tuple[]"747 }748 ],749 "internalType": "struct TokenPropertyPermission[]",750 "name": "permissions",751 "type": "tuple[]"752 }753 ],754 "name": "setTokenPropertyPermissions",755 "outputs": [],756 "stateMutability": "nonpayable",757 "type": "function"758 },759 {760 "inputs": [761 { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }762 ],763 "name": "supportsInterface",764 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],765 "stateMutability": "view",766 "type": "function"767 },768 {769 "inputs": [],770 "name": "symbol",771 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],772 "stateMutability": "view",773 "type": "function"774 },775 {776 "inputs": [777 { "internalType": "uint256", "name": "index", "type": "uint256" }778 ],779 "name": "tokenByIndex",780 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],781 "stateMutability": "view",782 "type": "function"783 },784 {785 "inputs": [786 { "internalType": "uint256", "name": "token", "type": "uint256" }787 ],788 "name": "tokenContractAddress",789 "outputs": [{ "internalType": "address", "name": "", "type": "address" }],790 "stateMutability": "view",791 "type": "function"792 },793 {794 "inputs": [795 { "internalType": "address", "name": "owner", "type": "address" },796 { "internalType": "uint256", "name": "index", "type": "uint256" }797 ],798 "name": "tokenOfOwnerByIndex",799 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],800 "stateMutability": "view",801 "type": "function"802 },803 {804 "inputs": [],805 "name": "tokenPropertyPermissions",806 "outputs": [807 {808 "components": [809 { "internalType": "string", "name": "key", "type": "string" },810 {811 "components": [812 {813 "internalType": "enum TokenPermissionField",814 "name": "code",815 "type": "uint8"816 },817 { "internalType": "bool", "name": "value", "type": "bool" }818 ],819 "internalType": "struct PropertyPermission[]",820 "name": "permissions",821 "type": "tuple[]"822 }823 ],824 "internalType": "struct TokenPropertyPermission[]",825 "name": "",826 "type": "tuple[]"827 }828 ],829 "stateMutability": "view",830 "type": "function"831 },832 {833 "inputs": [834 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }835 ],836 "name": "tokenURI",837 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],838 "stateMutability": "view",839 "type": "function"840 },841 {842 "inputs": [],843 "name": "totalSupply",844 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],845 "stateMutability": "view",846 "type": "function"847 },848 {849 "inputs": [850 { "internalType": "address", "name": "to", "type": "address" },851 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }852 ],853 "name": "transfer",854 "outputs": [],855 "stateMutability": "nonpayable",856 "type": "function"857 },858 {859 "inputs": [860 {861 "components": [862 { "internalType": "address", "name": "eth", "type": "address" },863 { "internalType": "uint256", "name": "sub", "type": "uint256" }864 ],865 "internalType": "struct CrossAddress",866 "name": "to",867 "type": "tuple"868 },869 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }870 ],871 "name": "transferCross",872 "outputs": [],873 "stateMutability": "nonpayable",874 "type": "function"875 },876 {877 "inputs": [878 { "internalType": "address", "name": "from", "type": "address" },879 { "internalType": "address", "name": "to", "type": "address" },880 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }881 ],882 "name": "transferFrom",883 "outputs": [],884 "stateMutability": "nonpayable",885 "type": "function"886 },887 {888 "inputs": [889 {890 "components": [891 { "internalType": "address", "name": "eth", "type": "address" },892 { "internalType": "uint256", "name": "sub", "type": "uint256" }893 ],894 "internalType": "struct CrossAddress",895 "name": "from",896 "type": "tuple"897 },898 {899 "components": [900 { "internalType": "address", "name": "eth", "type": "address" },901 { "internalType": "uint256", "name": "sub", "type": "uint256" }902 ],903 "internalType": "struct CrossAddress",904 "name": "to",905 "type": "tuple"906 },907 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }908 ],909 "name": "transferFromCross",910 "outputs": [],911 "stateMutability": "nonpayable",912 "type": "function"913 },914 {915 "inputs": [],916 "name": "uniqueCollectionType",917 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],918 "stateMutability": "view",919 "type": "function"920 }921]1[2 {3 "anonymous": false,4 "inputs": [5 {6 "indexed": true,7 "internalType": "address",8 "name": "owner",9 "type": "address"10 },11 {12 "indexed": true,13 "internalType": "address",14 "name": "approved",15 "type": "address"16 },17 {18 "indexed": true,19 "internalType": "uint256",20 "name": "tokenId",21 "type": "uint256"22 }23 ],24 "name": "Approval",25 "type": "event"26 },27 {28 "anonymous": false,29 "inputs": [30 {31 "indexed": true,32 "internalType": "address",33 "name": "owner",34 "type": "address"35 },36 {37 "indexed": true,38 "internalType": "address",39 "name": "operator",40 "type": "address"41 },42 {43 "indexed": false,44 "internalType": "bool",45 "name": "approved",46 "type": "bool"47 }48 ],49 "name": "ApprovalForAll",50 "type": "event"51 },52 {53 "anonymous": false,54 "inputs": [],55 "name": "MintingFinished",56 "type": "event"57 },58 {59 "anonymous": false,60 "inputs": [61 {62 "indexed": true,63 "internalType": "address",64 "name": "from",65 "type": "address"66 },67 {68 "indexed": true,69 "internalType": "address",70 "name": "to",71 "type": "address"72 },73 {74 "indexed": true,75 "internalType": "uint256",76 "name": "tokenId",77 "type": "uint256"78 }79 ],80 "name": "Transfer",81 "type": "event"82 },83 {84 "inputs": [85 {86 "components": [87 { "internalType": "address", "name": "eth", "type": "address" },88 { "internalType": "uint256", "name": "sub", "type": "uint256" }89 ],90 "internalType": "struct CrossAddress",91 "name": "newAdmin",92 "type": "tuple"93 }94 ],95 "name": "addCollectionAdminCross",96 "outputs": [],97 "stateMutability": "nonpayable",98 "type": "function"99 },100 {101 "inputs": [102 {103 "components": [104 { "internalType": "address", "name": "eth", "type": "address" },105 { "internalType": "uint256", "name": "sub", "type": "uint256" }106 ],107 "internalType": "struct CrossAddress",108 "name": "user",109 "type": "tuple"110 }111 ],112 "name": "addToCollectionAllowListCross",113 "outputs": [],114 "stateMutability": "nonpayable",115 "type": "function"116 },117 {118 "inputs": [119 {120 "components": [121 { "internalType": "address", "name": "eth", "type": "address" },122 { "internalType": "uint256", "name": "sub", "type": "uint256" }123 ],124 "internalType": "struct CrossAddress",125 "name": "user",126 "type": "tuple"127 }128 ],129 "name": "allowlistedCross",130 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],131 "stateMutability": "view",132 "type": "function"133 },134 {135 "inputs": [136 { "internalType": "address", "name": "approved", "type": "address" },137 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }138 ],139 "name": "approve",140 "outputs": [],141 "stateMutability": "nonpayable",142 "type": "function"143 },144 {145 "inputs": [146 { "internalType": "address", "name": "owner", "type": "address" }147 ],148 "name": "balanceOf",149 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],150 "stateMutability": "view",151 "type": "function"152 },153 {154 "inputs": [155 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }156 ],157 "name": "burn",158 "outputs": [],159 "stateMutability": "nonpayable",160 "type": "function"161 },162 {163 "inputs": [164 {165 "components": [166 { "internalType": "address", "name": "eth", "type": "address" },167 { "internalType": "uint256", "name": "sub", "type": "uint256" }168 ],169 "internalType": "struct CrossAddress",170 "name": "from",171 "type": "tuple"172 },173 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }174 ],175 "name": "burnFromCross",176 "outputs": [],177 "stateMutability": "nonpayable",178 "type": "function"179 },180 {181 "inputs": [182 {183 "components": [184 { "internalType": "address", "name": "eth", "type": "address" },185 { "internalType": "uint256", "name": "sub", "type": "uint256" }186 ],187 "internalType": "struct CrossAddress",188 "name": "newOwner",189 "type": "tuple"190 }191 ],192 "name": "changeCollectionOwnerCross",193 "outputs": [],194 "stateMutability": "nonpayable",195 "type": "function"196 },197 {198 "inputs": [],199 "name": "collectionAdmins",200 "outputs": [201 {202 "components": [203 { "internalType": "address", "name": "eth", "type": "address" },204 { "internalType": "uint256", "name": "sub", "type": "uint256" }205 ],206 "internalType": "struct CrossAddress[]",207 "name": "",208 "type": "tuple[]"209 }210 ],211 "stateMutability": "view",212 "type": "function"213 },214 {215 "inputs": [],216 "name": "collectionHelperAddress",217 "outputs": [{ "internalType": "address", "name": "", "type": "address" }],218 "stateMutability": "view",219 "type": "function"220 },221 {222 "inputs": [],223 "name": "collectionLimits",224 "outputs": [225 {226 "components": [227 {228 "internalType": "enum CollectionLimitField",229 "name": "field",230 "type": "uint8"231 },232 {233 "components": [234 { "internalType": "bool", "name": "status", "type": "bool" },235 { "internalType": "uint256", "name": "value", "type": "uint256" }236 ],237 "internalType": "struct OptionUint256",238 "name": "value",239 "type": "tuple"240 }241 ],242 "internalType": "struct CollectionLimit[]",243 "name": "",244 "type": "tuple[]"245 }246 ],247 "stateMutability": "view",248 "type": "function"249 },250 {251 "inputs": [],252 "name": "collectionNestingPermissions",253 "outputs": [254 {255 "components": [256 {257 "internalType": "enum CollectionPermissionField",258 "name": "field",259 "type": "uint8"260 },261 { "internalType": "bool", "name": "value", "type": "bool" }262 ],263 "internalType": "struct CollectionNestingPermission[]",264 "name": "",265 "type": "tuple[]"266 }267 ],268 "stateMutability": "view",269 "type": "function"270 },271 {272 "inputs": [],273 "name": "collectionNestingRestrictedCollectionIds",274 "outputs": [275 {276 "components": [277 { "internalType": "bool", "name": "token_owner", "type": "bool" },278 { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }279 ],280 "internalType": "struct CollectionNesting",281 "name": "",282 "type": "tuple"283 }284 ],285 "stateMutability": "view",286 "type": "function"287 },288 {289 "inputs": [],290 "name": "collectionOwner",291 "outputs": [292 {293 "components": [294 { "internalType": "address", "name": "eth", "type": "address" },295 { "internalType": "uint256", "name": "sub", "type": "uint256" }296 ],297 "internalType": "struct CrossAddress",298 "name": "",299 "type": "tuple"300 }301 ],302 "stateMutability": "view",303 "type": "function"304 },305 {306 "inputs": [307 { "internalType": "string[]", "name": "keys", "type": "string[]" }308 ],309 "name": "collectionProperties",310 "outputs": [311 {312 "components": [313 { "internalType": "string", "name": "key", "type": "string" },314 { "internalType": "bytes", "name": "value", "type": "bytes" }315 ],316 "internalType": "struct Property[]",317 "name": "",318 "type": "tuple[]"319 }320 ],321 "stateMutability": "view",322 "type": "function"323 },324 {325 "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],326 "name": "collectionProperty",327 "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],328 "stateMutability": "view",329 "type": "function"330 },331 {332 "inputs": [],333 "name": "collectionSponsor",334 "outputs": [335 {336 "components": [337 { "internalType": "address", "name": "eth", "type": "address" },338 { "internalType": "uint256", "name": "sub", "type": "uint256" }339 ],340 "internalType": "struct CrossAddress",341 "name": "",342 "type": "tuple"343 }344 ],345 "stateMutability": "view",346 "type": "function"347 },348 {349 "inputs": [],350 "name": "confirmCollectionSponsorship",351 "outputs": [],352 "stateMutability": "nonpayable",353 "type": "function"354 },355 {356 "inputs": [],357 "name": "contractAddress",358 "outputs": [{ "internalType": "address", "name": "", "type": "address" }],359 "stateMutability": "view",360 "type": "function"361 },362 {363 "inputs": [364 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }365 ],366 "name": "crossOwnerOf",367 "outputs": [368 {369 "components": [370 { "internalType": "address", "name": "eth", "type": "address" },371 { "internalType": "uint256", "name": "sub", "type": "uint256" }372 ],373 "internalType": "struct CrossAddress",374 "name": "",375 "type": "tuple"376 }377 ],378 "stateMutability": "view",379 "type": "function"380 },381 {382 "inputs": [383 { "internalType": "string[]", "name": "keys", "type": "string[]" }384 ],385 "name": "deleteCollectionProperties",386 "outputs": [],387 "stateMutability": "nonpayable",388 "type": "function"389 },390 {391 "inputs": [392 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },393 { "internalType": "string[]", "name": "keys", "type": "string[]" }394 ],395 "name": "deleteProperties",396 "outputs": [],397 "stateMutability": "nonpayable",398 "type": "function"399 },400 {401 "inputs": [],402 "name": "description",403 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],404 "stateMutability": "view",405 "type": "function"406 },407 {408 "inputs": [],409 "name": "finishMinting",410 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],411 "stateMutability": "nonpayable",412 "type": "function"413 },414 {415 "inputs": [416 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }417 ],418 "name": "getApproved",419 "outputs": [{ "internalType": "address", "name": "", "type": "address" }],420 "stateMutability": "view",421 "type": "function"422 },423 {424 "inputs": [],425 "name": "hasCollectionPendingSponsor",426 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],427 "stateMutability": "view",428 "type": "function"429 },430 {431 "inputs": [432 { "internalType": "address", "name": "owner", "type": "address" },433 { "internalType": "address", "name": "operator", "type": "address" }434 ],435 "name": "isApprovedForAll",436 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],437 "stateMutability": "view",438 "type": "function"439 },440 {441 "inputs": [442 {443 "components": [444 { "internalType": "address", "name": "eth", "type": "address" },445 { "internalType": "uint256", "name": "sub", "type": "uint256" }446 ],447 "internalType": "struct CrossAddress",448 "name": "user",449 "type": "tuple"450 }451 ],452 "name": "isOwnerOrAdminCross",453 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],454 "stateMutability": "view",455 "type": "function"456 },457 {458 "inputs": [{ "internalType": "address", "name": "to", "type": "address" }],459 "name": "mint",460 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],461 "stateMutability": "nonpayable",462 "type": "function"463 },464 {465 "inputs": [466 {467 "components": [468 { "internalType": "address", "name": "eth", "type": "address" },469 { "internalType": "uint256", "name": "sub", "type": "uint256" }470 ],471 "internalType": "struct CrossAddress",472 "name": "to",473 "type": "tuple"474 },475 {476 "components": [477 { "internalType": "string", "name": "key", "type": "string" },478 { "internalType": "bytes", "name": "value", "type": "bytes" }479 ],480 "internalType": "struct Property[]",481 "name": "properties",482 "type": "tuple[]"483 }484 ],485 "name": "mintCross",486 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],487 "stateMutability": "nonpayable",488 "type": "function"489 },490 {491 "inputs": [492 { "internalType": "address", "name": "to", "type": "address" },493 { "internalType": "string", "name": "tokenUri", "type": "string" }494 ],495 "name": "mintWithTokenURI",496 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],497 "stateMutability": "nonpayable",498 "type": "function"499 },500 {501 "inputs": [],502 "name": "mintingFinished",503 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],504 "stateMutability": "view",505 "type": "function"506 },507 {508 "inputs": [],509 "name": "name",510 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],511 "stateMutability": "view",512 "type": "function"513 },514 {515 "inputs": [],516 "name": "nextTokenId",517 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],518 "stateMutability": "view",519 "type": "function"520 },521 {522 "inputs": [523 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }524 ],525 "name": "ownerOf",526 "outputs": [{ "internalType": "address", "name": "", "type": "address" }],527 "stateMutability": "view",528 "type": "function"529 },530 {531 "inputs": [532 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },533 { "internalType": "string[]", "name": "keys", "type": "string[]" }534 ],535 "name": "properties",536 "outputs": [537 {538 "components": [539 { "internalType": "string", "name": "key", "type": "string" },540 { "internalType": "bytes", "name": "value", "type": "bytes" }541 ],542 "internalType": "struct Property[]",543 "name": "",544 "type": "tuple[]"545 }546 ],547 "stateMutability": "view",548 "type": "function"549 },550 {551 "inputs": [552 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },553 { "internalType": "string", "name": "key", "type": "string" }554 ],555 "name": "property",556 "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],557 "stateMutability": "view",558 "type": "function"559 },560 {561 "inputs": [562 {563 "components": [564 { "internalType": "address", "name": "eth", "type": "address" },565 { "internalType": "uint256", "name": "sub", "type": "uint256" }566 ],567 "internalType": "struct CrossAddress",568 "name": "admin",569 "type": "tuple"570 }571 ],572 "name": "removeCollectionAdminCross",573 "outputs": [],574 "stateMutability": "nonpayable",575 "type": "function"576 },577 {578 "inputs": [],579 "name": "removeCollectionSponsor",580 "outputs": [],581 "stateMutability": "nonpayable",582 "type": "function"583 },584 {585 "inputs": [586 {587 "components": [588 { "internalType": "address", "name": "eth", "type": "address" },589 { "internalType": "uint256", "name": "sub", "type": "uint256" }590 ],591 "internalType": "struct CrossAddress",592 "name": "user",593 "type": "tuple"594 }595 ],596 "name": "removeFromCollectionAllowListCross",597 "outputs": [],598 "stateMutability": "nonpayable",599 "type": "function"600 },601 {602 "inputs": [603 { "internalType": "address", "name": "from", "type": "address" },604 { "internalType": "address", "name": "to", "type": "address" },605 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }606 ],607 "name": "safeTransferFrom",608 "outputs": [],609 "stateMutability": "nonpayable",610 "type": "function"611 },612 {613 "inputs": [614 { "internalType": "address", "name": "from", "type": "address" },615 { "internalType": "address", "name": "to", "type": "address" },616 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },617 { "internalType": "bytes", "name": "data", "type": "bytes" }618 ],619 "name": "safeTransferFrom",620 "outputs": [],621 "stateMutability": "nonpayable",622 "type": "function"623 },624 {625 "inputs": [626 { "internalType": "address", "name": "operator", "type": "address" },627 { "internalType": "bool", "name": "approved", "type": "bool" }628 ],629 "name": "setApprovalForAll",630 "outputs": [],631 "stateMutability": "nonpayable",632 "type": "function"633 },634 {635 "inputs": [{ "internalType": "uint8", "name": "mode", "type": "uint8" }],636 "name": "setCollectionAccess",637 "outputs": [],638 "stateMutability": "nonpayable",639 "type": "function"640 },641 {642 "inputs": [643 {644 "components": [645 {646 "internalType": "enum CollectionLimitField",647 "name": "field",648 "type": "uint8"649 },650 {651 "components": [652 { "internalType": "bool", "name": "status", "type": "bool" },653 { "internalType": "uint256", "name": "value", "type": "uint256" }654 ],655 "internalType": "struct OptionUint256",656 "name": "value",657 "type": "tuple"658 }659 ],660 "internalType": "struct CollectionLimit",661 "name": "limit",662 "type": "tuple"663 }664 ],665 "name": "setCollectionLimit",666 "outputs": [],667 "stateMutability": "nonpayable",668 "type": "function"669 },670 {671 "inputs": [{ "internalType": "bool", "name": "mode", "type": "bool" }],672 "name": "setCollectionMintMode",673 "outputs": [],674 "stateMutability": "nonpayable",675 "type": "function"676 },677 {678 "inputs": [{ "internalType": "bool", "name": "enable", "type": "bool" }],679 "name": "setCollectionNesting",680 "outputs": [],681 "stateMutability": "nonpayable",682 "type": "function"683 },684 {685 "inputs": [686 { "internalType": "bool", "name": "enable", "type": "bool" },687 {688 "internalType": "address[]",689 "name": "collections",690 "type": "address[]"691 }692 ],693 "name": "setCollectionNesting",694 "outputs": [],695 "stateMutability": "nonpayable",696 "type": "function"697 },698 {699 "inputs": [700 {701 "components": [702 { "internalType": "string", "name": "key", "type": "string" },703 { "internalType": "bytes", "name": "value", "type": "bytes" }704 ],705 "internalType": "struct Property[]",706 "name": "properties",707 "type": "tuple[]"708 }709 ],710 "name": "setCollectionProperties",711 "outputs": [],712 "stateMutability": "nonpayable",713 "type": "function"714 },715 {716 "inputs": [717 {718 "components": [719 { "internalType": "address", "name": "eth", "type": "address" },720 { "internalType": "uint256", "name": "sub", "type": "uint256" }721 ],722 "internalType": "struct CrossAddress",723 "name": "sponsor",724 "type": "tuple"725 }726 ],727 "name": "setCollectionSponsorCross",728 "outputs": [],729 "stateMutability": "nonpayable",730 "type": "function"731 },732 {733 "inputs": [734 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },735 {736 "components": [737 { "internalType": "string", "name": "key", "type": "string" },738 { "internalType": "bytes", "name": "value", "type": "bytes" }739 ],740 "internalType": "struct Property[]",741 "name": "properties",742 "type": "tuple[]"743 }744 ],745 "name": "setProperties",746 "outputs": [],747 "stateMutability": "nonpayable",748 "type": "function"749 },750 {751 "inputs": [752 {753 "components": [754 { "internalType": "string", "name": "key", "type": "string" },755 {756 "components": [757 {758 "internalType": "enum TokenPermissionField",759 "name": "code",760 "type": "uint8"761 },762 { "internalType": "bool", "name": "value", "type": "bool" }763 ],764 "internalType": "struct PropertyPermission[]",765 "name": "permissions",766 "type": "tuple[]"767 }768 ],769 "internalType": "struct TokenPropertyPermission[]",770 "name": "permissions",771 "type": "tuple[]"772 }773 ],774 "name": "setTokenPropertyPermissions",775 "outputs": [],776 "stateMutability": "nonpayable",777 "type": "function"778 },779 {780 "inputs": [781 { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }782 ],783 "name": "supportsInterface",784 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],785 "stateMutability": "view",786 "type": "function"787 },788 {789 "inputs": [],790 "name": "symbol",791 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],792 "stateMutability": "view",793 "type": "function"794 },795 {796 "inputs": [797 { "internalType": "uint256", "name": "index", "type": "uint256" }798 ],799 "name": "tokenByIndex",800 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],801 "stateMutability": "view",802 "type": "function"803 },804 {805 "inputs": [806 { "internalType": "uint256", "name": "token", "type": "uint256" }807 ],808 "name": "tokenContractAddress",809 "outputs": [{ "internalType": "address", "name": "", "type": "address" }],810 "stateMutability": "view",811 "type": "function"812 },813 {814 "inputs": [815 { "internalType": "address", "name": "owner", "type": "address" },816 { "internalType": "uint256", "name": "index", "type": "uint256" }817 ],818 "name": "tokenOfOwnerByIndex",819 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],820 "stateMutability": "view",821 "type": "function"822 },823 {824 "inputs": [],825 "name": "tokenPropertyPermissions",826 "outputs": [827 {828 "components": [829 { "internalType": "string", "name": "key", "type": "string" },830 {831 "components": [832 {833 "internalType": "enum TokenPermissionField",834 "name": "code",835 "type": "uint8"836 },837 { "internalType": "bool", "name": "value", "type": "bool" }838 ],839 "internalType": "struct PropertyPermission[]",840 "name": "permissions",841 "type": "tuple[]"842 }843 ],844 "internalType": "struct TokenPropertyPermission[]",845 "name": "",846 "type": "tuple[]"847 }848 ],849 "stateMutability": "view",850 "type": "function"851 },852 {853 "inputs": [854 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }855 ],856 "name": "tokenURI",857 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],858 "stateMutability": "view",859 "type": "function"860 },861 {862 "inputs": [],863 "name": "totalSupply",864 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],865 "stateMutability": "view",866 "type": "function"867 },868 {869 "inputs": [870 { "internalType": "address", "name": "to", "type": "address" },871 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }872 ],873 "name": "transfer",874 "outputs": [],875 "stateMutability": "nonpayable",876 "type": "function"877 },878 {879 "inputs": [880 {881 "components": [882 { "internalType": "address", "name": "eth", "type": "address" },883 { "internalType": "uint256", "name": "sub", "type": "uint256" }884 ],885 "internalType": "struct CrossAddress",886 "name": "to",887 "type": "tuple"888 },889 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }890 ],891 "name": "transferCross",892 "outputs": [],893 "stateMutability": "nonpayable",894 "type": "function"895 },896 {897 "inputs": [898 { "internalType": "address", "name": "from", "type": "address" },899 { "internalType": "address", "name": "to", "type": "address" },900 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }901 ],902 "name": "transferFrom",903 "outputs": [],904 "stateMutability": "nonpayable",905 "type": "function"906 },907 {908 "inputs": [909 {910 "components": [911 { "internalType": "address", "name": "eth", "type": "address" },912 { "internalType": "uint256", "name": "sub", "type": "uint256" }913 ],914 "internalType": "struct CrossAddress",915 "name": "from",916 "type": "tuple"917 },918 {919 "components": [920 { "internalType": "address", "name": "eth", "type": "address" },921 { "internalType": "uint256", "name": "sub", "type": "uint256" }922 ],923 "internalType": "struct CrossAddress",924 "name": "to",925 "type": "tuple"926 },927 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }928 ],929 "name": "transferFromCross",930 "outputs": [],931 "stateMutability": "nonpayable",932 "type": "function"933 },934 {935 "inputs": [],936 "name": "uniqueCollectionType",937 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],938 "stateMutability": "view",939 "type": "function"940 }941]tests/src/eth/abi/reFungibleToken.jsondiffbeforeafterboth--- a/tests/src/eth/abi/reFungibleToken.json
+++ b/tests/src/eth/abi/reFungibleToken.json
@@ -98,6 +98,16 @@
},
{
"inputs": [
+ { "internalType": "address", "name": "from", "type": "address" },
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
+ ],
+ "name": "burnFrom",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
{
"components": [
{ "internalType": "address", "name": "eth", "type": "address" },