difftreelog
CORE-386 Add methodt to evm
in: master
11 files changed
pallets/common/src/erc.rsdiffbeforeafterboth--- a/pallets/common/src/erc.rs
+++ b/pallets/common/src/erc.rs
@@ -21,8 +21,9 @@
};
pub use pallet_evm::{PrecompileOutput, PrecompileResult, PrecompileHandle, account::CrossAccountId};
use pallet_evm_coder_substrate::dispatch_to_evm;
+use sp_core::{H160, U256, H256};
use sp_std::vec::Vec;
-use up_data_structs::{Property, SponsoringRateLimit};
+use up_data_structs::{Property, SponsoringRateLimit, NestingRule, OwnerRestrictedSet};
use alloc::format;
use crate::{Pallet, CollectionHandle, Config, CollectionProperties};
@@ -46,7 +47,10 @@
}
#[solidity_interface(name = "Collection")]
-impl<T: Config> CollectionHandle<T> {
+impl<T: Config> CollectionHandle<T>
+// where
+// T::AccountId: From<H256>
+{
fn set_collection_property(&mut self, caller: caller, key: string, value: bytes) -> Result<()> {
let caller = T::CrossAccountId::from_eth(caller);
let key = <Vec<u8>>::from(key)
@@ -165,6 +169,89 @@
fn contract_address(&self, _caller: caller) -> Result<address> {
Ok(crate::eth::collection_id_to_address(self.id))
}
+
+ // fn add_admin_substrate(&self, caller: caller, new_admin: uint256) -> Result<void> {
+ // let mut new_admin_h256 = H256::default();
+ // new_admin.to_little_endian(&mut new_admin_h256.0);
+ // let account_id = T::AccountId::from(new_admin_h256);
+ // let caller = T::CrossAccountId::from_eth(caller);
+ // let new_admin = T::CrossAccountId::from_sub(account_id);
+ // <Pallet<T>>::toggle_admin(&self, &caller, &new_admin, true)
+ // .map_err(dispatch_to_evm::<T>)?;
+ // Ok(())
+ // }
+
+ // fn remove_admin_substrate(&self, caller: caller, new_admin: uint256) -> Result<void> {
+ // let mut new_admin_h256 = H256::default();
+ // new_admin.to_little_endian(&mut new_admin_h256.0);
+ // let account_id = T::AccountId::from(new_admin_h256);
+ // let caller = T::CrossAccountId::from_eth(caller);
+ // let new_admin = T::CrossAccountId::from_sub(account_id);
+ // <Pallet<T>>::toggle_admin(&self, &caller, &new_admin, false)
+ // .map_err(dispatch_to_evm::<T>)?;
+ // Ok(())
+ // }
+
+ fn add_admin(&self, caller: caller, new_admin: address) -> Result<void> {
+ let caller = T::CrossAccountId::from_eth(caller);
+ self.check_is_owner_or_admin(&caller)
+ .map_err(dispatch_to_evm::<T>)?;
+ let new_admin = T::CrossAccountId::from_eth(new_admin);
+ <Pallet<T>>::toggle_admin(&self, &caller, &new_admin, true)
+ .map_err(dispatch_to_evm::<T>)?;
+ Ok(())
+ }
+
+ fn remove_admin(&self, caller: caller, admin: address) -> Result<void> {
+ let caller = T::CrossAccountId::from_eth(caller);
+ self.check_is_owner_or_admin(&caller)
+ .map_err(dispatch_to_evm::<T>)?;
+ let admin = T::CrossAccountId::from_eth(admin);
+ <Pallet<T>>::toggle_admin(&self, &caller, &admin, false)
+ .map_err(dispatch_to_evm::<T>)?;
+ Ok(())
+ }
+
+ #[solidity(rename_selector = "setNesting")]
+ fn set_nesting_bool(&mut self, caller: caller, enable: bool) -> Result<void> {
+ let caller = T::CrossAccountId::from_eth(caller);
+ self.check_is_owner_or_admin(&caller)
+ .map_err(dispatch_to_evm::<T>)?;
+ self.collection.permissions.nesting = Some(match enable {
+ false => NestingRule::Disabled,
+ true => NestingRule::Owner,
+ });
+ save(self);
+ Ok(())
+ }
+
+ #[solidity(rename_selector = "setNesting")]
+ fn set_nesting(&mut self, caller: caller, enable: bool, collections: Vec<address>) -> Result<void> {
+ if collections.is_empty() {
+ return Err("No addresses provided".into());
+ }
+ if collections.len() >= OwnerRestrictedSet::bound() {
+ return Err(Error::Revert(format!("Out of bound: {} >= {}", collections.len(), OwnerRestrictedSet::bound())));
+ }
+ let caller = T::CrossAccountId::from_eth(caller);
+ self.check_is_owner_or_admin(&caller)
+ .map_err(dispatch_to_evm::<T>)?;
+ self.collection.permissions.nesting = Some(match enable {
+ false => NestingRule::Disabled,
+ true => {
+ let mut bv = OwnerRestrictedSet::new();
+ for i in collections {
+ bv.try_insert(
+ crate::eth::map_eth_to_id(&i)
+ .ok_or(Error::Revert("Can't convert address into collection id".into()))?
+ ).map_err(|e| Error::Revert(format!("{:?}", e)))?;
+ }
+ NestingRule::OwnerRestricted (bv)
+ }
+ });
+ save(self);
+ Ok(())
+ }
}
fn check_is_owner<T: Config>(caller: caller, collection: &CollectionHandle<T>) -> Result<()> {
pallets/common/src/lib.rsdiffbeforeafterboth--- a/pallets/common/src/lib.rs
+++ b/pallets/common/src/lib.rs
@@ -126,9 +126,11 @@
pub fn new(id: CollectionId) -> Option<Self> {
Self::new_with_gas_limit(id, u64::MAX)
}
+
pub fn try_get(id: CollectionId) -> Result<Self, DispatchError> {
Ok(Self::new(id).ok_or(<Error<T>>::CollectionNotFound)?)
}
+
pub fn consume_store_reads(&self, reads: u64) -> evm_coder::execution::Result<()> {
self.recorder
.consume_gas(T::GasWeightMapping::weight_to_gas(
@@ -137,6 +139,7 @@
.saturating_mul(reads),
))
}
+
pub fn consume_store_writes(&self, writes: u64) -> evm_coder::execution::Result<()> {
self.recorder
.consume_gas(T::GasWeightMapping::weight_to_gas(
@@ -145,6 +148,7 @@
.saturating_mul(writes),
))
}
+
pub fn save(self) -> DispatchResult {
<CollectionById<T>>::insert(self.id, self.collection);
Ok(())
@@ -163,6 +167,7 @@
true
}
}
+
impl<T: Config> Deref for CollectionHandle<T> {
type Target = Collection<T::AccountId>;
pallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterbothbinary blob — no preview
pallets/nonfungible/src/stubs/UniqueNFT.soldiffbeforeafterboth--- a/pallets/nonfungible/src/stubs/UniqueNFT.sol
+++ b/pallets/nonfungible/src/stubs/UniqueNFT.sol
@@ -51,6 +51,105 @@
event MintingFinished();
}
+// Selector: 3a54513b
+contract Collection is Dummy, ERC165 {
+ // Selector: setCollectionProperty(string,bytes) 2f073f66
+ function setCollectionProperty(string memory key, bytes memory value)
+ public
+ {
+ require(false, stub_error);
+ key;
+ value;
+ dummy = 0;
+ }
+
+ // Selector: deleteCollectionProperty(string) 7b7debce
+ function deleteCollectionProperty(string memory key) public {
+ require(false, stub_error);
+ key;
+ dummy = 0;
+ }
+
+ // Throws error if key not found
+ //
+ // Selector: collectionProperty(string) cf24fd6d
+ function collectionProperty(string memory key)
+ public
+ view
+ returns (bytes memory)
+ {
+ require(false, stub_error);
+ key;
+ dummy;
+ return hex"";
+ }
+
+ // Selector: ethSetSponsor(address) 8f9af356
+ function ethSetSponsor(address sponsor) public {
+ require(false, stub_error);
+ sponsor;
+ dummy = 0;
+ }
+
+ // Selector: ethConfirmSponsorship() a8580d1a
+ function ethConfirmSponsorship() public {
+ require(false, stub_error);
+ dummy = 0;
+ }
+
+ // Selector: setLimit(string,uint32) 68db30ca
+ function setLimit(string memory limit, uint32 value) public {
+ require(false, stub_error);
+ limit;
+ value;
+ dummy = 0;
+ }
+
+ // Selector: setLimit(string,bool) ea67e4c2
+ function setLimit(string memory limit, bool value) public {
+ require(false, stub_error);
+ limit;
+ value;
+ dummy = 0;
+ }
+
+ // Selector: contractAddress() f6b4dfb4
+ function contractAddress() public view returns (address) {
+ require(false, stub_error);
+ dummy;
+ return 0x0000000000000000000000000000000000000000;
+ }
+
+ // Selector: addAdmin(address) 70480275
+ function addAdmin(address newAdmin) public view {
+ require(false, stub_error);
+ newAdmin;
+ dummy;
+ }
+
+ // Selector: removeAdmin(address) 1785f53c
+ function removeAdmin(address admin) public view {
+ require(false, stub_error);
+ admin;
+ dummy;
+ }
+
+ // Selector: setNesting(bool) e8fc50dd
+ function setNesting(bool enable) public {
+ require(false, stub_error);
+ enable;
+ dummy = 0;
+ }
+
+ // Selector: setNesting(bool,address[]) 7df12a9a
+ function setNesting(bool enable, address[] memory collections) public {
+ require(false, stub_error);
+ enable;
+ collections;
+ dummy = 0;
+ }
+}
+
// Selector: 41369377
contract TokenProperties is Dummy, ERC165 {
// Selector: setTokenPropertyPermission(string,bool,bool,bool) 222d97fa
@@ -327,76 +426,6 @@
require(false, stub_error);
dummy;
return 0;
- }
-}
-
-// Selector: c894dc35
-contract Collection is Dummy, ERC165 {
- // Selector: setCollectionProperty(string,bytes) 2f073f66
- function setCollectionProperty(string memory key, bytes memory value)
- public
- {
- require(false, stub_error);
- key;
- value;
- dummy = 0;
- }
-
- // Selector: deleteCollectionProperty(string) 7b7debce
- function deleteCollectionProperty(string memory key) public {
- require(false, stub_error);
- key;
- dummy = 0;
- }
-
- // Throws error if key not found
- //
- // Selector: collectionProperty(string) cf24fd6d
- function collectionProperty(string memory key)
- public
- view
- returns (bytes memory)
- {
- require(false, stub_error);
- key;
- dummy;
- return hex"";
- }
-
- // Selector: ethSetSponsor(address) 8f9af356
- function ethSetSponsor(address sponsor) public {
- require(false, stub_error);
- sponsor;
- dummy = 0;
- }
-
- // Selector: ethConfirmSponsorship() a8580d1a
- function ethConfirmSponsorship() public {
- require(false, stub_error);
- dummy = 0;
- }
-
- // Selector: setLimit(string,uint32) 68db30ca
- function setLimit(string memory limit, uint32 value) public {
- require(false, stub_error);
- limit;
- value;
- dummy = 0;
- }
-
- // Selector: setLimit(string,bool) ea67e4c2
- function setLimit(string memory limit, bool value) public {
- require(false, stub_error);
- limit;
- value;
- dummy = 0;
- }
-
- // Selector: contractAddress() f6b4dfb4
- function contractAddress() public view returns (address) {
- require(false, stub_error);
- dummy;
- return 0x0000000000000000000000000000000000000000;
}
}
primitives/data-structs/src/lib.rsdiffbeforeafterboth--- a/primitives/data-structs/src/lib.rs
+++ b/primitives/data-structs/src/lib.rs
@@ -454,6 +454,8 @@
}
}
+pub type OwnerRestrictedSet = BoundedBTreeSet<CollectionId, ConstU32<16>>;
+
#[derive(Encode, Decode, Clone, PartialEq, TypeInfo, MaxEncodedLen, Derivative)]
#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
#[derivative(Debug)]
@@ -466,7 +468,7 @@
OwnerRestricted(
#[cfg_attr(feature = "serde1", serde(with = "bounded::set_serde"))]
#[derivative(Debug(format_with = "bounded::set_debug"))]
- BoundedBTreeSet<CollectionId, ConstU32<16>>,
+ OwnerRestrictedSet,
),
/// Used for tests
Permissive,
tests/src/eth/api/UniqueNFT.soldiffbeforeafterboth--- a/tests/src/eth/api/UniqueNFT.sol
+++ b/tests/src/eth/api/UniqueNFT.sol
@@ -42,6 +42,51 @@
event MintingFinished();
}
+// Selector: 3a54513b
+interface Collection is Dummy, ERC165 {
+ // Selector: setCollectionProperty(string,bytes) 2f073f66
+ function setCollectionProperty(string memory key, bytes memory value)
+ external;
+
+ // Selector: deleteCollectionProperty(string) 7b7debce
+ function deleteCollectionProperty(string memory key) external;
+
+ // Throws error if key not found
+ //
+ // Selector: collectionProperty(string) cf24fd6d
+ function collectionProperty(string memory key)
+ external
+ view
+ returns (bytes memory);
+
+ // Selector: ethSetSponsor(address) 8f9af356
+ function ethSetSponsor(address sponsor) external;
+
+ // Selector: ethConfirmSponsorship() a8580d1a
+ function ethConfirmSponsorship() external;
+
+ // Selector: setLimit(string,uint32) 68db30ca
+ function setLimit(string memory limit, uint32 value) external;
+
+ // Selector: setLimit(string,bool) ea67e4c2
+ function setLimit(string memory limit, bool value) external;
+
+ // Selector: contractAddress() f6b4dfb4
+ function contractAddress() external view returns (address);
+
+ // Selector: addAdmin(address) 70480275
+ function addAdmin(address newAdmin) external view;
+
+ // Selector: removeAdmin(address) 1785f53c
+ function removeAdmin(address admin) external view;
+
+ // Selector: setNesting(bool) e8fc50dd
+ function setNesting(bool enable) external;
+
+ // Selector: setNesting(bool,address[]) 7df12a9a
+ function setNesting(bool enable, address[] memory collections) external;
+}
+
// Selector: 41369377
interface TokenProperties is Dummy, ERC165 {
// Selector: setTokenPropertyPermission(string,bool,bool,bool) 222d97fa
@@ -189,39 +234,6 @@
// Selector: totalSupply() 18160ddd
function totalSupply() external view returns (uint256);
-}
-
-// Selector: c894dc35
-interface Collection is Dummy, ERC165 {
- // Selector: setCollectionProperty(string,bytes) 2f073f66
- function setCollectionProperty(string memory key, bytes memory value)
- external;
-
- // Selector: deleteCollectionProperty(string) 7b7debce
- function deleteCollectionProperty(string memory key) external;
-
- // Throws error if key not found
- //
- // Selector: collectionProperty(string) cf24fd6d
- function collectionProperty(string memory key)
- external
- view
- returns (bytes memory);
-
- // Selector: ethSetSponsor(address) 8f9af356
- function ethSetSponsor(address sponsor) external;
-
- // Selector: ethConfirmSponsorship() a8580d1a
- function ethConfirmSponsorship() external;
-
- // Selector: setLimit(string,uint32) 68db30ca
- function setLimit(string memory limit, uint32 value) external;
-
- // Selector: setLimit(string,bool) ea67e4c2
- function setLimit(string memory limit, bool value) external;
-
- // Selector: contractAddress() f6b4dfb4
- function contractAddress() external view returns (address);
}
// Selector: d74d154f
tests/src/eth/createCollection.test.tsdiffbeforeafterboth--- a/tests/src/eth/createCollection.test.ts
+++ b/tests/src/eth/createCollection.test.ts
@@ -30,13 +30,13 @@
describe('Create collection from EVM', () => {
itWeb3('Create collection', async ({api, web3}) => {
const owner = await createEthAccountWithBalance(api, web3);
- const helper = evmCollectionHelpers(web3, owner);
+ const collectionHelper = evmCollectionHelpers(web3, owner);
const collectionName = 'CollectionEVM';
const description = 'Some description';
const tokenPrefix = 'token prefix';
const collectionCountBefore = await getCreatedCollectionCount(api);
- const result = await helper.methods
+ const result = await collectionHelper.methods
.createNonfungibleCollection(collectionName, description, tokenPrefix)
.send();
const collectionCountAfter = await getCreatedCollectionCount(api);
tests/src/eth/nonFungibleAbi.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 "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 { "internalType": "address", "name": "approved", "type": "address" },86 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }87 ],88 "name": "approve",89 "outputs": [],90 "stateMutability": "nonpayable",91 "type": "function"92 },93 {94 "inputs": [95 { "internalType": "address", "name": "owner", "type": "address" }96 ],97 "name": "balanceOf",98 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],99 "stateMutability": "view",100 "type": "function"101 },102 {103 "inputs": [104 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }105 ],106 "name": "burn",107 "outputs": [],108 "stateMutability": "nonpayable",109 "type": "function"110 },111 {112 "inputs": [113 { "internalType": "address", "name": "from", "type": "address" },114 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }115 ],116 "name": "burnFrom",117 "outputs": [],118 "stateMutability": "nonpayable",119 "type": "function"120 },121 {122 "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],123 "name": "collectionProperty",124 "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],125 "stateMutability": "view",126 "type": "function"127 },128 {129 "inputs": [],130 "name": "contractAddress",131 "outputs": [{ "internalType": "address", "name": "", "type": "address" }],132 "stateMutability": "view",133 "type": "function"134 },135 {136 "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],137 "name": "deleteCollectionProperty",138 "outputs": [],139 "stateMutability": "nonpayable",140 "type": "function"141 },142 {143 "inputs": [144 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },145 { "internalType": "string", "name": "key", "type": "string" }146 ],147 "name": "deleteProperty",148 "outputs": [],149 "stateMutability": "nonpayable",150 "type": "function"151 },152 {153 "inputs": [],154 "name": "ethConfirmSponsorship",155 "outputs": [],156 "stateMutability": "nonpayable",157 "type": "function"158 },159 {160 "inputs": [161 { "internalType": "address", "name": "sponsor", "type": "address" }162 ],163 "name": "ethSetSponsor",164 "outputs": [],165 "stateMutability": "nonpayable",166 "type": "function"167 },168 {169 "inputs": [],170 "name": "finishMinting",171 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],172 "stateMutability": "nonpayable",173 "type": "function"174 },175 {176 "inputs": [177 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }178 ],179 "name": "getApproved",180 "outputs": [{ "internalType": "address", "name": "", "type": "address" }],181 "stateMutability": "view",182 "type": "function"183 },184 {185 "inputs": [186 { "internalType": "address", "name": "owner", "type": "address" },187 { "internalType": "address", "name": "operator", "type": "address" }188 ],189 "name": "isApprovedForAll",190 "outputs": [{ "internalType": "address", "name": "", "type": "address" }],191 "stateMutability": "view",192 "type": "function"193 },194 {195 "inputs": [196 { "internalType": "address", "name": "to", "type": "address" },197 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }198 ],199 "name": "mint",200 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],201 "stateMutability": "nonpayable",202 "type": "function"203 },204 {205 "inputs": [206 { "internalType": "address", "name": "to", "type": "address" },207 { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }208 ],209 "name": "mintBulk",210 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],211 "stateMutability": "nonpayable",212 "type": "function"213 },214 {215 "inputs": [216 { "internalType": "address", "name": "to", "type": "address" },217 {218 "components": [219 { "internalType": "uint256", "name": "field_0", "type": "uint256" },220 { "internalType": "string", "name": "field_1", "type": "string" }221 ],222 "internalType": "struct Tuple0[]",223 "name": "tokens",224 "type": "tuple[]"225 }226 ],227 "name": "mintBulkWithTokenURI",228 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],229 "stateMutability": "nonpayable",230 "type": "function"231 },232 {233 "inputs": [234 { "internalType": "address", "name": "to", "type": "address" },235 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },236 { "internalType": "string", "name": "tokenUri", "type": "string" }237 ],238 "name": "mintWithTokenURI",239 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],240 "stateMutability": "nonpayable",241 "type": "function"242 },243 {244 "inputs": [],245 "name": "mintingFinished",246 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],247 "stateMutability": "view",248 "type": "function"249 },250 {251 "inputs": [],252 "name": "name",253 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],254 "stateMutability": "view",255 "type": "function"256 },257 {258 "inputs": [],259 "name": "nextTokenId",260 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],261 "stateMutability": "view",262 "type": "function"263 },264 {265 "inputs": [266 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }267 ],268 "name": "ownerOf",269 "outputs": [{ "internalType": "address", "name": "", "type": "address" }],270 "stateMutability": "view",271 "type": "function"272 },273 {274 "inputs": [275 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },276 { "internalType": "string", "name": "key", "type": "string" }277 ],278 "name": "property",279 "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],280 "stateMutability": "view",281 "type": "function"282 },283 {284 "inputs": [285 { "internalType": "address", "name": "from", "type": "address" },286 { "internalType": "address", "name": "to", "type": "address" },287 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }288 ],289 "name": "safeTransferFrom",290 "outputs": [],291 "stateMutability": "nonpayable",292 "type": "function"293 },294 {295 "inputs": [296 { "internalType": "address", "name": "from", "type": "address" },297 { "internalType": "address", "name": "to", "type": "address" },298 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },299 { "internalType": "bytes", "name": "data", "type": "bytes" }300 ],301 "name": "safeTransferFromWithData",302 "outputs": [],303 "stateMutability": "nonpayable",304 "type": "function"305 },306 {307 "inputs": [308 { "internalType": "address", "name": "operator", "type": "address" },309 { "internalType": "bool", "name": "approved", "type": "bool" }310 ],311 "name": "setApprovalForAll",312 "outputs": [],313 "stateMutability": "nonpayable",314 "type": "function"315 },316 {317 "inputs": [318 { "internalType": "string", "name": "key", "type": "string" },319 { "internalType": "bytes", "name": "value", "type": "bytes" }320 ],321 "name": "setCollectionProperty",322 "outputs": [],323 "stateMutability": "nonpayable",324 "type": "function"325 },326 {327 "inputs": [328 { "internalType": "string", "name": "limit", "type": "string" },329 { "internalType": "uint32", "name": "value", "type": "uint32" }330 ],331 "name": "setLimit",332 "outputs": [],333 "stateMutability": "nonpayable",334 "type": "function"335 },336 {337 "inputs": [338 { "internalType": "string", "name": "limit", "type": "string" },339 { "internalType": "bool", "name": "value", "type": "bool" }340 ],341 "name": "setLimit",342 "outputs": [],343 "stateMutability": "nonpayable",344 "type": "function"345 },346 {347 "inputs": [348 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },349 { "internalType": "string", "name": "key", "type": "string" },350 { "internalType": "bytes", "name": "value", "type": "bytes" }351 ],352 "name": "setProperty",353 "outputs": [],354 "stateMutability": "nonpayable",355 "type": "function"356 },357 {358 "inputs": [359 { "internalType": "string", "name": "key", "type": "string" },360 { "internalType": "bool", "name": "isMutable", "type": "bool" },361 { "internalType": "bool", "name": "collectionAdmin", "type": "bool" },362 { "internalType": "bool", "name": "tokenOwner", "type": "bool" }363 ],364 "name": "setTokenPropertyPermission",365 "outputs": [],366 "stateMutability": "nonpayable",367 "type": "function"368 },369 {370 "inputs": [371 { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }372 ],373 "name": "supportsInterface",374 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],375 "stateMutability": "view",376 "type": "function"377 },378 {379 "inputs": [],380 "name": "symbol",381 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],382 "stateMutability": "view",383 "type": "function"384 },385 {386 "inputs": [387 { "internalType": "uint256", "name": "index", "type": "uint256" }388 ],389 "name": "tokenByIndex",390 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],391 "stateMutability": "view",392 "type": "function"393 },394 {395 "inputs": [396 { "internalType": "address", "name": "owner", "type": "address" },397 { "internalType": "uint256", "name": "index", "type": "uint256" }398 ],399 "name": "tokenOfOwnerByIndex",400 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],401 "stateMutability": "view",402 "type": "function"403 },404 {405 "inputs": [406 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }407 ],408 "name": "tokenURI",409 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],410 "stateMutability": "view",411 "type": "function"412 },413 {414 "inputs": [],415 "name": "totalSupply",416 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],417 "stateMutability": "view",418 "type": "function"419 },420 {421 "inputs": [422 { "internalType": "address", "name": "to", "type": "address" },423 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }424 ],425 "name": "transfer",426 "outputs": [],427 "stateMutability": "nonpayable",428 "type": "function"429 },430 {431 "inputs": [432 { "internalType": "address", "name": "from", "type": "address" },433 { "internalType": "address", "name": "to", "type": "address" },434 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }435 ],436 "name": "transferFrom",437 "outputs": [],438 "stateMutability": "nonpayable",439 "type": "function"440 }441]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 { "internalType": "address", "name": "newAdmin", "type": "address" }86 ],87 "name": "addAdmin",88 "outputs": [],89 "stateMutability": "view",90 "type": "function"91 },92 {93 "inputs": [94 { "internalType": "address", "name": "approved", "type": "address" },95 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }96 ],97 "name": "approve",98 "outputs": [],99 "stateMutability": "nonpayable",100 "type": "function"101 },102 {103 "inputs": [104 { "internalType": "address", "name": "owner", "type": "address" }105 ],106 "name": "balanceOf",107 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],108 "stateMutability": "view",109 "type": "function"110 },111 {112 "inputs": [113 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }114 ],115 "name": "burn",116 "outputs": [],117 "stateMutability": "nonpayable",118 "type": "function"119 },120 {121 "inputs": [122 { "internalType": "address", "name": "from", "type": "address" },123 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }124 ],125 "name": "burnFrom",126 "outputs": [],127 "stateMutability": "nonpayable",128 "type": "function"129 },130 {131 "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],132 "name": "collectionProperty",133 "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],134 "stateMutability": "view",135 "type": "function"136 },137 {138 "inputs": [],139 "name": "contractAddress",140 "outputs": [{ "internalType": "address", "name": "", "type": "address" }],141 "stateMutability": "view",142 "type": "function"143 },144 {145 "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],146 "name": "deleteCollectionProperty",147 "outputs": [],148 "stateMutability": "nonpayable",149 "type": "function"150 },151 {152 "inputs": [153 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },154 { "internalType": "string", "name": "key", "type": "string" }155 ],156 "name": "deleteProperty",157 "outputs": [],158 "stateMutability": "nonpayable",159 "type": "function"160 },161 {162 "inputs": [],163 "name": "ethConfirmSponsorship",164 "outputs": [],165 "stateMutability": "nonpayable",166 "type": "function"167 },168 {169 "inputs": [170 { "internalType": "address", "name": "sponsor", "type": "address" }171 ],172 "name": "ethSetSponsor",173 "outputs": [],174 "stateMutability": "nonpayable",175 "type": "function"176 },177 {178 "inputs": [],179 "name": "finishMinting",180 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],181 "stateMutability": "nonpayable",182 "type": "function"183 },184 {185 "inputs": [186 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }187 ],188 "name": "getApproved",189 "outputs": [{ "internalType": "address", "name": "", "type": "address" }],190 "stateMutability": "view",191 "type": "function"192 },193 {194 "inputs": [195 { "internalType": "address", "name": "owner", "type": "address" },196 { "internalType": "address", "name": "operator", "type": "address" }197 ],198 "name": "isApprovedForAll",199 "outputs": [{ "internalType": "address", "name": "", "type": "address" }],200 "stateMutability": "view",201 "type": "function"202 },203 {204 "inputs": [205 { "internalType": "address", "name": "to", "type": "address" },206 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }207 ],208 "name": "mint",209 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],210 "stateMutability": "nonpayable",211 "type": "function"212 },213 {214 "inputs": [215 { "internalType": "address", "name": "to", "type": "address" },216 { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }217 ],218 "name": "mintBulk",219 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],220 "stateMutability": "nonpayable",221 "type": "function"222 },223 {224 "inputs": [225 { "internalType": "address", "name": "to", "type": "address" },226 {227 "components": [228 { "internalType": "uint256", "name": "field_0", "type": "uint256" },229 { "internalType": "string", "name": "field_1", "type": "string" }230 ],231 "internalType": "struct Tuple0[]",232 "name": "tokens",233 "type": "tuple[]"234 }235 ],236 "name": "mintBulkWithTokenURI",237 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],238 "stateMutability": "nonpayable",239 "type": "function"240 },241 {242 "inputs": [243 { "internalType": "address", "name": "to", "type": "address" },244 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },245 { "internalType": "string", "name": "tokenUri", "type": "string" }246 ],247 "name": "mintWithTokenURI",248 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],249 "stateMutability": "nonpayable",250 "type": "function"251 },252 {253 "inputs": [],254 "name": "mintingFinished",255 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],256 "stateMutability": "view",257 "type": "function"258 },259 {260 "inputs": [],261 "name": "name",262 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],263 "stateMutability": "view",264 "type": "function"265 },266 {267 "inputs": [],268 "name": "nextTokenId",269 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],270 "stateMutability": "view",271 "type": "function"272 },273 {274 "inputs": [275 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }276 ],277 "name": "ownerOf",278 "outputs": [{ "internalType": "address", "name": "", "type": "address" }],279 "stateMutability": "view",280 "type": "function"281 },282 {283 "inputs": [284 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },285 { "internalType": "string", "name": "key", "type": "string" }286 ],287 "name": "property",288 "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],289 "stateMutability": "view",290 "type": "function"291 },292 {293 "inputs": [294 { "internalType": "address", "name": "admin", "type": "address" }295 ],296 "name": "removeAdmin",297 "outputs": [],298 "stateMutability": "view",299 "type": "function"300 },301 {302 "inputs": [303 { "internalType": "address", "name": "from", "type": "address" },304 { "internalType": "address", "name": "to", "type": "address" },305 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }306 ],307 "name": "safeTransferFrom",308 "outputs": [],309 "stateMutability": "nonpayable",310 "type": "function"311 },312 {313 "inputs": [314 { "internalType": "address", "name": "from", "type": "address" },315 { "internalType": "address", "name": "to", "type": "address" },316 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },317 { "internalType": "bytes", "name": "data", "type": "bytes" }318 ],319 "name": "safeTransferFromWithData",320 "outputs": [],321 "stateMutability": "nonpayable",322 "type": "function"323 },324 {325 "inputs": [326 { "internalType": "address", "name": "operator", "type": "address" },327 { "internalType": "bool", "name": "approved", "type": "bool" }328 ],329 "name": "setApprovalForAll",330 "outputs": [],331 "stateMutability": "nonpayable",332 "type": "function"333 },334 {335 "inputs": [336 { "internalType": "string", "name": "key", "type": "string" },337 { "internalType": "bytes", "name": "value", "type": "bytes" }338 ],339 "name": "setCollectionProperty",340 "outputs": [],341 "stateMutability": "nonpayable",342 "type": "function"343 },344 {345 "inputs": [346 { "internalType": "string", "name": "limit", "type": "string" },347 { "internalType": "uint32", "name": "value", "type": "uint32" }348 ],349 "name": "setLimit",350 "outputs": [],351 "stateMutability": "nonpayable",352 "type": "function"353 },354 {355 "inputs": [356 { "internalType": "string", "name": "limit", "type": "string" },357 { "internalType": "bool", "name": "value", "type": "bool" }358 ],359 "name": "setLimit",360 "outputs": [],361 "stateMutability": "nonpayable",362 "type": "function"363 },364 {365 "inputs": [366 { "internalType": "bool", "name": "enable", "type": "bool" },367 {368 "internalType": "address[]",369 "name": "collections",370 "type": "address[]"371 }372 ],373 "name": "setNesting",374 "outputs": [],375 "stateMutability": "nonpayable",376 "type": "function"377 },378 {379 "inputs": [{ "internalType": "bool", "name": "enable", "type": "bool" }],380 "name": "setNesting",381 "outputs": [],382 "stateMutability": "nonpayable",383 "type": "function"384 },385 {386 "inputs": [387 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },388 { "internalType": "string", "name": "key", "type": "string" },389 { "internalType": "bytes", "name": "value", "type": "bytes" }390 ],391 "name": "setProperty",392 "outputs": [],393 "stateMutability": "nonpayable",394 "type": "function"395 },396 {397 "inputs": [398 { "internalType": "string", "name": "key", "type": "string" },399 { "internalType": "bool", "name": "isMutable", "type": "bool" },400 { "internalType": "bool", "name": "collectionAdmin", "type": "bool" },401 { "internalType": "bool", "name": "tokenOwner", "type": "bool" }402 ],403 "name": "setTokenPropertyPermission",404 "outputs": [],405 "stateMutability": "nonpayable",406 "type": "function"407 },408 {409 "inputs": [410 { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }411 ],412 "name": "supportsInterface",413 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],414 "stateMutability": "view",415 "type": "function"416 },417 {418 "inputs": [],419 "name": "symbol",420 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],421 "stateMutability": "view",422 "type": "function"423 },424 {425 "inputs": [426 { "internalType": "uint256", "name": "index", "type": "uint256" }427 ],428 "name": "tokenByIndex",429 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],430 "stateMutability": "view",431 "type": "function"432 },433 {434 "inputs": [435 { "internalType": "address", "name": "owner", "type": "address" },436 { "internalType": "uint256", "name": "index", "type": "uint256" }437 ],438 "name": "tokenOfOwnerByIndex",439 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],440 "stateMutability": "view",441 "type": "function"442 },443 {444 "inputs": [445 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }446 ],447 "name": "tokenURI",448 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],449 "stateMutability": "view",450 "type": "function"451 },452 {453 "inputs": [],454 "name": "totalSupply",455 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],456 "stateMutability": "view",457 "type": "function"458 },459 {460 "inputs": [461 { "internalType": "address", "name": "to", "type": "address" },462 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }463 ],464 "name": "transfer",465 "outputs": [],466 "stateMutability": "nonpayable",467 "type": "function"468 },469 {470 "inputs": [471 { "internalType": "address", "name": "from", "type": "address" },472 { "internalType": "address", "name": "to", "type": "address" },473 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }474 ],475 "name": "transferFrom",476 "outputs": [],477 "stateMutability": "nonpayable",478 "type": "function"479 }480]tests/src/eth/proxy/nonFungibleProxy.test.tsdiffbeforeafterboth--- a/tests/src/eth/proxy/nonFungibleProxy.test.ts
+++ b/tests/src/eth/proxy/nonFungibleProxy.test.ts
@@ -15,7 +15,7 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
import {createCollectionExpectSuccess, createItemExpectSuccess} from '../../util/helpers';
-import {collectionIdToAddress, createEthAccount, createEthAccountWithBalance, GAS_ARGS, itWeb3, normalizeEvents} from '../util/helpers';
+import {collectionIdToAddress, createEthAccount, createEthAccountWithBalance, evmCollection, evmCollectionHelpers, GAS_ARGS, getCollectionAddressFromResult, itWeb3, normalizeEvents} from '../util/helpers';
import nonFungibleAbi from '../nonFungibleAbi.json';
import {expect} from 'chai';
import {submitTransactionAsync} from '../../substrate/substrate-api';
@@ -87,20 +87,19 @@
});
describe('NFT (Via EVM proxy): Plain calls', () => {
- //TODO: CORE-302 add eth methods
- itWeb3.skip('Can perform mint()', async ({web3, api, privateKeyWrapper}) => {
- const collection = await createCollectionExpectSuccess({
- mode: {type: 'NFT'},
- });
- const alice = privateKeyWrapper('//Alice');
+ itWeb3('Can perform mint()', async ({web3, api}) => {
+ const owner = await createEthAccountWithBalance(api, web3);
+ const collectionHelper = evmCollectionHelpers(web3, owner);
+ const result = await collectionHelper.methods
+ .createNonfungibleCollection('A', 'A', 'A')
+ .send();
+ const {collectionIdAddress} = await getCollectionAddressFromResult(api, result);
const caller = await createEthAccountWithBalance(api, web3);
const receiver = createEthAccount(web3);
-
- const address = collectionIdToAddress(collection);
- const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}));
-
- const changeAdminTx = api.tx.unique.addCollectionAdmin(collection, {Ethereum: contract.options.address});
- await submitTransactionAsync(alice, changeAdminTx);
+ const collectionEvmOwned = evmCollection(web3, owner, collectionIdAddress);
+ const collectionEvm = evmCollection(web3, caller, collectionIdAddress);
+ const contract = await proxyWrap(api, web3, collectionEvm);
+ await collectionEvmOwned.methods.addAdmin(contract.options.address).send();
{
const nextTokenId = await contract.methods.nextTokenId().call();
@@ -111,10 +110,11 @@
'Test URI',
).send({from: caller});
const events = normalizeEvents(result.events);
+ events[0].address = events[0].address.toLocaleLowerCase();
expect(events).to.be.deep.equal([
{
- address,
+ address: collectionIdAddress.toLocaleLowerCase(),
event: 'Transfer',
args: {
from: '0x0000000000000000000000000000000000000000',
tests/src/interfaces/augment-api-rpc.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-rpc.ts
+++ b/tests/src/interfaces/augment-api-rpc.ts
@@ -18,7 +18,7 @@
import type { EthAccount, EthCallRequest, EthFilter, EthFilterChanges, EthLog, EthReceipt, EthRichBlock, EthSubKind, EthSubParams, EthSyncStatus, EthTransaction, EthTransactionRequest, EthWork } from '@polkadot/types/interfaces/eth';
import type { Extrinsic } from '@polkadot/types/interfaces/extrinsics';
import type { EncodedFinalityProofs, JustificationNotification, ReportedRoundStates } from '@polkadot/types/interfaces/grandpa';
-import type { MmrLeafBatchProof, MmrLeafProof } from '@polkadot/types/interfaces/mmr';
+import type { MmrLeafProof } from '@polkadot/types/interfaces/mmr';
import type { StorageKind } from '@polkadot/types/interfaces/offchain';
import type { FeeDetails, RuntimeDispatchInfo } from '@polkadot/types/interfaces/payment';
import type { RpcMethods } from '@polkadot/types/interfaces/rpc';
@@ -354,14 +354,10 @@
subscribeJustifications: AugmentedRpc<() => Observable<JustificationNotification>>;
};
mmr: {
- /**
- * Generate MMR proof for the given leaf indices.
- **/
- generateBatchProof: AugmentedRpc<(leafIndices: Vec<u64> | (u64 | AnyNumber | Uint8Array)[], at?: BlockHash | string | Uint8Array) => Observable<MmrLeafProof>>;
/**
* Generate MMR proof for given leaf index.
**/
- generateProof: AugmentedRpc<(leafIndex: u64 | AnyNumber | Uint8Array, at?: BlockHash | string | Uint8Array) => Observable<MmrLeafBatchProof>>;
+ generateProof: AugmentedRpc<(leafIndex: u64 | AnyNumber | Uint8Array, at?: BlockHash | string | Uint8Array) => Observable<MmrLeafProof>>;
};
net: {
/**
tests/src/interfaces/augment-types.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-types.ts
+++ b/tests/src/interfaces/augment-types.ts
@@ -3,7 +3,7 @@
import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportPalletId, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletXcmCall, PalletXcmError, PalletXcmEvent, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsNestingRule, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRmrkAccountIdOrCollectionNftTuple, UpDataStructsRmrkBaseInfo, UpDataStructsRmrkBasicResource, UpDataStructsRmrkCollectionInfo, UpDataStructsRmrkComposableResource, UpDataStructsRmrkEquippableList, UpDataStructsRmrkFixedPart, UpDataStructsRmrkNftChild, UpDataStructsRmrkNftInfo, UpDataStructsRmrkPartType, UpDataStructsRmrkPropertyInfo, UpDataStructsRmrkResourceInfo, UpDataStructsRmrkResourceTypes, UpDataStructsRmrkRoyaltyInfo, UpDataStructsRmrkSlotPart, UpDataStructsRmrkSlotResource, UpDataStructsRmrkTheme, UpDataStructsRmrkThemeProperty, UpDataStructsRpcCollection, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenChild, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from './default';
import type { Data, StorageKey } from '@polkadot/types';
-import type { BitVec, Bool, Bytes, I128, I16, I256, I32, I64, I8, Json, Null, OptionBool, Raw, Text, Type, U128, U16, U256, U32, U64, U8, USize, bool, i128, i16, i256, i32, i64, i8, u128, u16, u256, u32, u64, u8, usize } from '@polkadot/types-codec';
+import type { BitVec, Bool, Bytes, I128, I16, I256, I32, I64, I8, Json, Null, Raw, Text, Type, U128, U16, U256, U32, U64, U8, USize, bool, i128, i16, i256, i32, i64, i8, u128, u16, u256, u32, u64, u8, usize } from '@polkadot/types-codec';
import type { AssetApproval, AssetApprovalKey, AssetBalance, AssetDestroyWitness, AssetDetails, AssetMetadata, TAssetBalance, TAssetDepositBalance } from '@polkadot/types/interfaces/assets';
import type { BlockAttestations, IncludedBlocks, MoreAttestations } from '@polkadot/types/interfaces/attestations';
import type { RawAuraPreDigest } from '@polkadot/types/interfaces/aura';
@@ -36,7 +36,7 @@
import type { AuthIndex, AuthoritySignature, Heartbeat, HeartbeatTo244, OpaqueMultiaddr, OpaqueNetworkState, OpaquePeerId } from '@polkadot/types/interfaces/imOnline';
import type { CallIndex, LotteryConfig } from '@polkadot/types/interfaces/lottery';
import type { ErrorMetadataLatest, ErrorMetadataV10, ErrorMetadataV11, ErrorMetadataV12, ErrorMetadataV13, ErrorMetadataV14, ErrorMetadataV9, EventMetadataLatest, EventMetadataV10, EventMetadataV11, EventMetadataV12, EventMetadataV13, EventMetadataV14, EventMetadataV9, ExtrinsicMetadataLatest, ExtrinsicMetadataV11, ExtrinsicMetadataV12, ExtrinsicMetadataV13, ExtrinsicMetadataV14, FunctionArgumentMetadataLatest, FunctionArgumentMetadataV10, FunctionArgumentMetadataV11, FunctionArgumentMetadataV12, FunctionArgumentMetadataV13, FunctionArgumentMetadataV14, FunctionArgumentMetadataV9, FunctionMetadataLatest, FunctionMetadataV10, FunctionMetadataV11, FunctionMetadataV12, FunctionMetadataV13, FunctionMetadataV14, FunctionMetadataV9, MetadataAll, MetadataLatest, MetadataV10, MetadataV11, MetadataV12, MetadataV13, MetadataV14, MetadataV9, ModuleConstantMetadataV10, ModuleConstantMetadataV11, ModuleConstantMetadataV12, ModuleConstantMetadataV13, ModuleConstantMetadataV9, ModuleMetadataV10, ModuleMetadataV11, ModuleMetadataV12, ModuleMetadataV13, ModuleMetadataV9, PalletCallMetadataLatest, PalletCallMetadataV14, PalletConstantMetadataLatest, PalletConstantMetadataV14, PalletErrorMetadataLatest, PalletErrorMetadataV14, PalletEventMetadataLatest, PalletEventMetadataV14, PalletMetadataLatest, PalletMetadataV14, PalletStorageMetadataLatest, PalletStorageMetadataV14, PortableType, PortableTypeV14, SignedExtensionMetadataLatest, SignedExtensionMetadataV14, StorageEntryMetadataLatest, StorageEntryMetadataV10, StorageEntryMetadataV11, StorageEntryMetadataV12, StorageEntryMetadataV13, StorageEntryMetadataV14, StorageEntryMetadataV9, StorageEntryModifierLatest, StorageEntryModifierV10, StorageEntryModifierV11, StorageEntryModifierV12, StorageEntryModifierV13, StorageEntryModifierV14, StorageEntryModifierV9, StorageEntryTypeLatest, StorageEntryTypeV10, StorageEntryTypeV11, StorageEntryTypeV12, StorageEntryTypeV13, StorageEntryTypeV14, StorageEntryTypeV9, StorageHasher, StorageHasherV10, StorageHasherV11, StorageHasherV12, StorageHasherV13, StorageHasherV14, StorageHasherV9, StorageMetadataV10, StorageMetadataV11, StorageMetadataV12, StorageMetadataV13, StorageMetadataV9 } from '@polkadot/types/interfaces/metadata';
-import type { MmrLeafBatchProof, MmrLeafProof } from '@polkadot/types/interfaces/mmr';
+import type { MmrLeafProof } from '@polkadot/types/interfaces/mmr';
import type { StorageKind } from '@polkadot/types/interfaces/offchain';
import type { DeferredOffenceOf, Kind, OffenceDetails, Offender, OpaqueTimeSlot, ReportIdOf, Reporter } from '@polkadot/types/interfaces/offences';
import type { AbridgedCandidateReceipt, AbridgedHostConfiguration, AbridgedHrmpChannel, AssignmentId, AssignmentKind, AttestedCandidate, AuctionIndex, AuthorityDiscoveryId, AvailabilityBitfield, AvailabilityBitfieldRecord, BackedCandidate, Bidder, BufferedSessionChange, CandidateCommitments, CandidateDescriptor, CandidateHash, CandidateInfo, CandidatePendingAvailability, CandidateReceipt, CollatorId, CollatorSignature, CommittedCandidateReceipt, CoreAssignment, CoreIndex, CoreOccupied, DisputeLocation, DisputeResult, DisputeState, DisputeStatement, DisputeStatementSet, DoubleVoteReport, DownwardMessage, ExplicitDisputeStatement, GlobalValidationData, GlobalValidationSchedule, GroupIndex, HeadData, HostConfiguration, HrmpChannel, HrmpChannelId, HrmpOpenChannelRequest, InboundDownwardMessage, InboundHrmpMessage, InboundHrmpMessages, IncomingParachain, IncomingParachainDeploy, IncomingParachainFixed, InvalidDisputeStatementKind, LeasePeriod, LeasePeriodOf, LocalValidationData, MessageIngestionType, MessageQueueChain, MessagingStateSnapshot, MessagingStateSnapshotEgressEntry, MultiDisputeStatementSet, NewBidder, OutboundHrmpMessage, ParaGenesisArgs, ParaId, ParaInfo, ParaLifecycle, ParaPastCodeMeta, ParaScheduling, ParaValidatorIndex, ParachainDispatchOrigin, ParachainInherentData, ParachainProposal, ParachainsInherentData, ParathreadClaim, ParathreadClaimQueue, ParathreadEntry, PersistedValidationData, QueuedParathread, RegisteredParachainInfo, RelayBlockNumber, RelayChainBlockNumber, RelayChainHash, RelayHash, Remark, ReplacementTimes, Retriable, Scheduling, ServiceQuality, SessionInfo, SessionInfoValidatorGroup, SignedAvailabilityBitfield, SignedAvailabilityBitfields, SigningContext, SlotRange, SlotRange10, Statement, SubId, SystemInherentData, TransientValidationData, UpgradeGoAhead, UpgradeRestriction, UpwardMessage, ValidDisputeStatementKind, ValidationCode, ValidationCodeHash, ValidationData, ValidationDataType, ValidationFunctionParams, ValidatorSignature, ValidityAttestation, VecInboundHrmpMessage, WinnersData, WinnersData10, WinnersDataTuple, WinnersDataTuple10, WinningData, WinningData10, WinningDataEntry } from '@polkadot/types/interfaces/parachains';
@@ -661,7 +661,6 @@
MetadataV14: MetadataV14;
MetadataV9: MetadataV9;
MigrationStatusResult: MigrationStatusResult;
- MmrLeafBatchProof: MmrLeafBatchProof;
MmrLeafProof: MmrLeafProof;
MmrRootHash: MmrRootHash;
ModuleConstantMetadataV10: ModuleConstantMetadataV10;
@@ -728,7 +727,6 @@
OpenTipTip: OpenTipTip;
OpenTipTo225: OpenTipTo225;
OperatingMode: OperatingMode;
- OptionBool: OptionBool;
Origin: Origin;
OriginCaller: OriginCaller;
OriginKindV0: OriginKindV0;