difftreelog
fix after fix eevm_coder
in: master
7 files changed
Cargo.lockdiffbeforeafterboth--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2445,8 +2445,8 @@
[[package]]
name = "evm-coder"
-version = "0.3.0"
-source = "git+https://github.com/uniquenetwork/evm-coder?tag=v0.3.0#c4bfdf39d84fbe74c6178417177f2a7f81d92bdd"
+version = "0.3.1"
+source = "git+https://github.com/uniquenetwork/evm-coder?tag=v0.3.1#21e61c627f71337d6b8a03899fe8de14bfbf67aa"
dependencies = [
"ethereum",
"evm-coder-procedural",
@@ -2457,8 +2457,8 @@
[[package]]
name = "evm-coder-procedural"
-version = "0.3.0"
-source = "git+https://github.com/uniquenetwork/evm-coder?tag=v0.3.0#c4bfdf39d84fbe74c6178417177f2a7f81d92bdd"
+version = "0.3.1"
+source = "git+https://github.com/uniquenetwork/evm-coder?tag=v0.3.1#21e61c627f71337d6b8a03899fe8de14bfbf67aa"
dependencies = [
"Inflector",
"hex",
Cargo.tomldiffbeforeafterboth1[workspace]2default-members = ['client/*', 'node/*', 'runtime/opal']3members = [4 'client/*',5 'crates/*',6 'node/*',7 'pallets/*',8 'primitives/*',9 'runtime/opal',10 'runtime/quartz',11 'runtime/tests',12 'runtime/unique',13]14package.version = "0.9.37"15resolver = "2"1617[profile.release]18panic = 'unwind'1920[workspace.dependencies]21# Unique22evm-coder = { git = "https://github.com/uniquenetwork/evm-coder", tag = "v0.3.0", default-features = false }23struct-versioning = { path = "crates/struct-versioning" }24precompile-utils-macro = { path = "runtime/common/ethereum/precompiles/utils/macro" }25up-common = { path = "primitives/common", default-features = false }26up-data-structs = { path = "primitives/data-structs", default-features = false }27up-pov-estimate-rpc = { path = "primitives/pov-estimate-rpc", default-features = false }28up-rpc = { path = "primitives/rpc", default-features = false }29up-sponsorship = { default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.37" }30uc-rpc = { path = "client/rpc" }31unique-rpc = { path = "node/rpc" }32pallet-charge-transaction = { package = "pallet-template-transaction-payment", default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.37" }33pallet-collator-selection = { default-features = false, path = "pallets/collator-selection" }34pallet-common = { default-features = false, path = "pallets/common" }35pallet-configuration = { default-features = false, path = "pallets/configuration" }36pallet-evm-coder-substrate = { default-features = false, path = "pallets/evm-coder-substrate" }37pallet-evm-contract-helpers = { path = "pallets/evm-contract-helpers", default-features = false }38pallet-evm-migration = { path = "pallets/evm-migration", default-features = false }39pallet-evm-transaction-payment = { path = "pallets/evm-transaction-payment", default-features = false }40pallet-foreign-assets = { default-features = false, path = "pallets/foreign-assets" }41pallet-fungible = { default-features = false, path = "pallets/fungible" }42pallet-identity = { default-features = false, path = "pallets/identity" }43pallet-inflation = { path = "pallets/inflation", default-features = false }44pallet-maintenance = { default-features = false, path = "pallets/maintenance" }45pallet-nonfungible = { default-features = false, path = "pallets/nonfungible" }46pallet-refungible = { default-features = false, path = "pallets/refungible" }47pallet-structure = { default-features = false, path = "pallets/structure" }48pallet-unique = { path = "pallets/unique", default-features = false }49pallet-unique-scheduler-v2 = { path = "pallets/scheduler-v2", default-features = false }50pallet-test-utils = { default-features = false, path = "test-pallets/utils" }51pallet-app-promotion = { path = "pallets/app-promotion", default-features = false }52app-promotion-rpc = { path = "primitives/app_promotion_rpc", default-features = false }5354# Unique: Runtimes55unique-runtime = { path = "runtime/unique" }56quartz-runtime = { path = "runtime/quartz" }57opal-runtime = { path = "runtime/opal" }5859# Frontier (Unique patches over the Parity version)60fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }61fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }62fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }63fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }64fc-db = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }65fc-rpc = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }66fc-rpc-core = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }67fp-storage = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }68fc-consensus = { git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }69fc-mapping-sync = { git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }70pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }71pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }72pallet-base-fee = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }73pallet-evm-precompile-simple = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }7475# Parity76codec = { default-features = false, features = ['derive'], package = 'parity-scale-codec', version = "3.2.2" }77scale-info = { version = "2.1.1", default-features = false, features = ["derive"] }78polkadot-cli = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.37" }79polkadot-primitives = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.37" }80polkadot-service = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.37" }81cumulus-client-cli = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37" }82cumulus-client-consensus-aura = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37" }83cumulus-client-consensus-common = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37" }84cumulus-client-network = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37" }85cumulus-client-service = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37" }86cumulus-primitives-parachain-inherent = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37" }87cumulus-relay-chain-inprocess-interface = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37" }88cumulus-relay-chain-interface = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37" }89cumulus-relay-chain-minimal-node = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37" }90cumulus-pallet-aura-ext = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37", default-features = false }91cumulus-pallet-dmp-queue = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37", default-features = false }92cumulus-pallet-parachain-system = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37", default-features = false }93cumulus-pallet-xcm = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37", default-features = false }94cumulus-pallet-xcmp-queue = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37", default-features = false }95cumulus-primitives-core = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37", default-features = false }96cumulus-primitives-timestamp = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37", default-features = false }97cumulus-primitives-utility = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37", default-features = false }98frame-executive = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }99frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }100frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }101frame-system-rpc-runtime-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }102pallet-aura = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }103pallet-authorship = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }104pallet-balances = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }105pallet-randomness-collective-flip = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }106pallet-session = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }107pallet-sudo = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }108pallet-timestamp = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }109pallet-transaction-payment = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }110pallet-transaction-payment-rpc-runtime-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }111pallet-treasury = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }112pallet-xcm = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.37", default-features = false }113pallet-transaction-payment-rpc = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }114parachain-info = { default-features = false, git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37" }115polkadot-parachain = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.37", default-features = false }116sp-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }117sp-arithmetic = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }118sp-block-builder = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }119sp-consensus-aura = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }120sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }121sp-inherents = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }122sp-io = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }123sp-offchain = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }124sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }125sp-session = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }126sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }127sp-transaction-pool = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }128sp-version = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }129sp-staking = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }130sp-tracing = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }131sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }132sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }133sp-timestamp = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }134sp-externalities = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }135sp-state-machine = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }136sp-trie = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }137substrate-prometheus-endpoint = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }138sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }139sc-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }140sc-network = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }141sc-rpc = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }142sc-rpc-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }143sc-service = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }144sc-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }145sc-basic-authorship = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }146sc-chain-spec = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }147sc-cli = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }148sc-consensus = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }149sc-consensus-manual-seal = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }150sc-executor = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }151sc-sysinfo = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }152sc-telemetry = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }153sc-tracing = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }154substrate-frame-rpc-system = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }155xcm = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.37", default-features = false }156xcm-builder = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.37", default-features = false }157xcm-executor = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.37", default-features = false }158159# Parity: Build utils160substrate-wasm-builder = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }161substrate-build-script-utils = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }162163# Parity: Benchmarking164frame-benchmarking-cli = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }165frame-system-benchmarking = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }166frame-benchmarking = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }167168# Parity: Try Runtime169try-runtime-cli = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }170frame-try-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }171172# ORML173orml-tokens = { git = "https://github.com/open-web3-stack/open-runtime-module-library", branch = "polkadot-v0.9.37", default-features = false }174orml-traits = { git = "https://github.com/open-web3-stack/open-runtime-module-library", branch = "polkadot-v0.9.37", default-features = false }175orml-vesting = { git = "https://github.com/open-web3-stack/open-runtime-module-library", branch = "polkadot-v0.9.37", default-features = false }176orml-xtokens = { git = "https://github.com/open-web3-stack/open-runtime-module-library", branch = "polkadot-v0.9.37", default-features = false }177178# Other179smallvec = "1.6.1"180derivative = { version = "2.2.0", features = ["use_core"] }181serde = { default-features = false, features = ['derive'], version = "1.0.136" }182log = { version = "0.4.16", default-features = false }183num_enum = { version = "0.5.3", default-features = false }184hex-literal = "0.3.4"185impl-trait-for-tuples = "0.2.2"186logtest = "2.0.0"187ethereum = { version = "0.14.0", default-features = false }188evm-core = { default-features = false, version = "0.37.0" }189primitive-types = { version = "0.12.1", default-features = false }190jsonrpsee = { version = "0.16.2", features = ["macros", "server"] }1[workspace]2default-members = ['client/*', 'node/*', 'runtime/opal']3members = [4 'client/*',5 'crates/*',6 'node/*',7 'pallets/*',8 'primitives/*',9 'runtime/opal',10 'runtime/quartz',11 'runtime/tests',12 'runtime/unique',13]14package.version = "0.9.37"15resolver = "2"1617[profile.release]18panic = 'unwind'1920[workspace.dependencies]21# Unique22app-promotion-rpc = { path = "primitives/app_promotion_rpc", default-features = false }23evm-coder = { git = "https://github.com/uniquenetwork/evm-coder", tag = "v0.3.1", default-features = false }24pallet-app-promotion = { path = "pallets/app-promotion", default-features = false }25pallet-charge-transaction = { package = "pallet-template-transaction-payment", default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.37" }26pallet-collator-selection = { default-features = false, path = "pallets/collator-selection" }27pallet-common = { default-features = false, path = "pallets/common" }28pallet-configuration = { default-features = false, path = "pallets/configuration" }29pallet-evm-coder-substrate = { default-features = false, path = "pallets/evm-coder-substrate" }30pallet-evm-contract-helpers = { path = "pallets/evm-contract-helpers", default-features = false }31pallet-evm-migration = { path = "pallets/evm-migration", default-features = false }32pallet-evm-transaction-payment = { path = "pallets/evm-transaction-payment", default-features = false }33pallet-foreign-assets = { default-features = false, path = "pallets/foreign-assets" }34pallet-fungible = { default-features = false, path = "pallets/fungible" }35pallet-identity = { default-features = false, path = "pallets/identity" }36pallet-inflation = { path = "pallets/inflation", default-features = false }37pallet-maintenance = { default-features = false, path = "pallets/maintenance" }38pallet-nonfungible = { default-features = false, path = "pallets/nonfungible" }39pallet-refungible = { default-features = false, path = "pallets/refungible" }40pallet-structure = { default-features = false, path = "pallets/structure" }41pallet-test-utils = { default-features = false, path = "test-pallets/utils" }42pallet-unique = { path = "pallets/unique", default-features = false }43pallet-unique-scheduler-v2 = { path = "pallets/scheduler-v2", default-features = false }44precompile-utils-macro = { path = "runtime/common/ethereum/precompiles/utils/macro" }45struct-versioning = { path = "crates/struct-versioning" }46uc-rpc = { path = "client/rpc" }47unique-rpc = { path = "node/rpc" }48up-common = { path = "primitives/common", default-features = false }49up-data-structs = { path = "primitives/data-structs", default-features = false }50up-pov-estimate-rpc = { path = "primitives/pov-estimate-rpc", default-features = false }51up-rpc = { path = "primitives/rpc", default-features = false }52up-sponsorship = { default-features = false, git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.37" }5354# Unique: Runtimes55opal-runtime = { path = "runtime/opal" }56quartz-runtime = { path = "runtime/quartz" }57unique-runtime = { path = "runtime/unique" }5859# Frontier (Unique patches over the Parity version)60fc-consensus = { git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }61fc-db = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }62fc-mapping-sync = { git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }63fc-rpc = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }64fc-rpc-core = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }65fp-evm = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }66fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }67fp-rpc = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }68fp-self-contained = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }69fp-storage = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }70pallet-base-fee = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }71pallet-ethereum = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }72pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }73pallet-evm-precompile-simple = { default-features = false, git = "https://github.com/uniquenetwork/unique-frontier", branch = "unique-polkadot-v0.9.37" }7475# Parity76codec = { default-features = false, features = ['derive'], package = 'parity-scale-codec', version = "3.2.2" }77cumulus-client-cli = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37" }78cumulus-client-consensus-aura = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37" }79cumulus-client-consensus-common = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37" }80cumulus-client-network = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37" }81cumulus-client-service = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37" }82cumulus-pallet-aura-ext = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37", default-features = false }83cumulus-pallet-dmp-queue = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37", default-features = false }84cumulus-pallet-parachain-system = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37", default-features = false }85cumulus-pallet-xcm = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37", default-features = false }86cumulus-pallet-xcmp-queue = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37", default-features = false }87cumulus-primitives-core = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37", default-features = false }88cumulus-primitives-parachain-inherent = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37" }89cumulus-primitives-timestamp = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37", default-features = false }90cumulus-primitives-utility = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37", default-features = false }91cumulus-relay-chain-inprocess-interface = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37" }92cumulus-relay-chain-interface = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37" }93cumulus-relay-chain-minimal-node = { git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37" }94frame-executive = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }95frame-support = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }96frame-system = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }97frame-system-rpc-runtime-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }98pallet-aura = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }99pallet-authorship = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }100pallet-balances = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }101pallet-randomness-collective-flip = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }102pallet-session = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }103pallet-sudo = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }104pallet-timestamp = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }105pallet-transaction-payment = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }106pallet-transaction-payment-rpc = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }107pallet-transaction-payment-rpc-runtime-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }108pallet-treasury = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }109pallet-xcm = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.37", default-features = false }110parachain-info = { default-features = false, git = "https://github.com/paritytech/cumulus", branch = "polkadot-v0.9.37" }111polkadot-cli = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.37" }112polkadot-parachain = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.37", default-features = false }113polkadot-primitives = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.37" }114polkadot-service = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.37" }115sc-basic-authorship = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }116sc-chain-spec = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }117sc-cli = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }118sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }119sc-consensus = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }120sc-consensus-manual-seal = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }121sc-executor = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }122sc-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }123sc-network = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }124sc-rpc = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }125sc-rpc-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }126sc-service = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }127sc-sysinfo = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }128sc-telemetry = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }129sc-tracing = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }130sc-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }131scale-info = { version = "2.1.1", default-features = false, features = ["derive"] }132sp-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }133sp-arithmetic = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }134sp-block-builder = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }135sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }136sp-consensus-aura = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }137sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }138sp-externalities = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }139sp-inherents = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }140sp-io = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }141sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }142sp-offchain = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }143sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }144sp-session = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }145sp-staking = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }146sp-state-machine = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }147sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }148sp-timestamp = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }149sp-tracing = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }150sp-transaction-pool = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }151sp-trie = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }152sp-version = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }153substrate-frame-rpc-system = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }154substrate-prometheus-endpoint = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }155xcm = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.37", default-features = false }156xcm-builder = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.37", default-features = false }157xcm-executor = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.37", default-features = false }158159# Parity: Build utils160substrate-build-script-utils = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }161substrate-wasm-builder = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }162163# Parity: Benchmarking164frame-benchmarking = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }165frame-benchmarking-cli = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }166frame-system-benchmarking = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }167168# Parity: Try Runtime169frame-try-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }170try-runtime-cli = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" }171172# ORML173orml-tokens = { git = "https://github.com/open-web3-stack/open-runtime-module-library", branch = "polkadot-v0.9.37", default-features = false }174orml-traits = { git = "https://github.com/open-web3-stack/open-runtime-module-library", branch = "polkadot-v0.9.37", default-features = false }175orml-vesting = { git = "https://github.com/open-web3-stack/open-runtime-module-library", branch = "polkadot-v0.9.37", default-features = false }176orml-xtokens = { git = "https://github.com/open-web3-stack/open-runtime-module-library", branch = "polkadot-v0.9.37", default-features = false }177178# Other179derivative = { version = "2.2.0", features = ["use_core"] }180ethereum = { version = "0.14.0", default-features = false }181evm-core = { default-features = false, version = "0.37.0" }182hex-literal = "0.3.4"183impl-trait-for-tuples = "0.2.2"184jsonrpsee = { version = "0.16.2", features = ["macros", "server"] }185log = { version = "0.4.16", default-features = false }186logtest = "2.0.0"187num_enum = { version = "0.5.3", default-features = false }188primitive-types = { version = "0.12.1", default-features = false }189serde = { default-features = false, features = ['derive'], version = "1.0.136" }190smallvec = "1.6.1"pallets/fungible/src/stubs/UniqueFungible.soldiffbeforeafterboth--- a/pallets/fungible/src/stubs/UniqueFungible.sol
+++ b/pallets/fungible/src/stubs/UniqueFungible.sol
@@ -0,0 +1,751 @@
+// SPDX-License-Identifier: OTHER
+// This code is automatically generated
+
+pragma solidity >=0.8.0 <0.9.0;
+
+/// @dev common stubs holder
+contract Dummy {
+ uint8 dummy;
+ string stub_error = "this contract is implemented in native";
+}
+
+contract ERC165 is Dummy {
+ function supportsInterface(bytes4 interfaceID) external view returns (bool) {
+ require(false, stub_error);
+ interfaceID;
+ return true;
+ }
+}
+
+/// @title A contract that allows you to work with collections.
+/// @dev the ERC-165 identifier for this interface is 0x2a14cfd1
+contract Collection is Dummy, ERC165 {
+ // /// Set collection property.
+ // ///
+ // /// @param key Property key.
+ // /// @param value Propery value.
+ // /// @dev EVM selector for this function is: 0x2f073f66,
+ // /// or in textual repr: setCollectionProperty(string,bytes)
+ // function setCollectionProperty(string memory key, bytes memory value) public {
+ // require(false, stub_error);
+ // key;
+ // value;
+ // dummy = 0;
+ // }
+
+ /// Set collection properties.
+ ///
+ /// @param properties Vector of properties key/value pair.
+ /// @dev EVM selector for this function is: 0x50b26b2a,
+ /// or in textual repr: setCollectionProperties((string,bytes)[])
+ function setCollectionProperties(Property[] memory properties) public {
+ require(false, stub_error);
+ properties;
+ dummy = 0;
+ }
+
+ // /// Delete collection property.
+ // ///
+ // /// @param key Property key.
+ // /// @dev EVM selector for this function is: 0x7b7debce,
+ // /// or in textual repr: deleteCollectionProperty(string)
+ // function deleteCollectionProperty(string memory key) public {
+ // require(false, stub_error);
+ // key;
+ // dummy = 0;
+ // }
+
+ /// Delete collection properties.
+ ///
+ /// @param keys Properties keys.
+ /// @dev EVM selector for this function is: 0xee206ee3,
+ /// or in textual repr: deleteCollectionProperties(string[])
+ function deleteCollectionProperties(string[] memory keys) public {
+ require(false, stub_error);
+ keys;
+ dummy = 0;
+ }
+
+ /// Get collection property.
+ ///
+ /// @dev Throws error if key not found.
+ ///
+ /// @param key Property key.
+ /// @return bytes The property corresponding to the key.
+ /// @dev EVM selector for this function is: 0xcf24fd6d,
+ /// or in textual repr: collectionProperty(string)
+ function collectionProperty(string memory key) public view returns (bytes memory) {
+ require(false, stub_error);
+ key;
+ dummy;
+ return hex"";
+ }
+
+ /// Get collection properties.
+ ///
+ /// @param keys Properties keys. Empty keys for all propertyes.
+ /// @return Vector of properties key/value pairs.
+ /// @dev EVM selector for this function is: 0x285fb8e6,
+ /// or in textual repr: collectionProperties(string[])
+ function collectionProperties(string[] memory keys) public view returns (Property[] memory) {
+ require(false, stub_error);
+ keys;
+ dummy;
+ return new Property[](0);
+ }
+
+ // /// Set the sponsor of the collection.
+ // ///
+ // /// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
+ // ///
+ // /// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.
+ // /// @dev EVM selector for this function is: 0x7623402e,
+ // /// or in textual repr: setCollectionSponsor(address)
+ // function setCollectionSponsor(address sponsor) public {
+ // require(false, stub_error);
+ // sponsor;
+ // dummy = 0;
+ // }
+
+ /// Set the sponsor of the collection.
+ ///
+ /// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
+ ///
+ /// @param sponsor Cross account address of the sponsor from whose account funds will be debited for operations with the contract.
+ /// @dev EVM selector for this function is: 0x84a1d5a8,
+ /// or in textual repr: setCollectionSponsorCross((address,uint256))
+ function setCollectionSponsorCross(CrossAddress memory sponsor) public {
+ require(false, stub_error);
+ sponsor;
+ dummy = 0;
+ }
+
+ /// Whether there is a pending sponsor.
+ /// @dev EVM selector for this function is: 0x058ac185,
+ /// or in textual repr: hasCollectionPendingSponsor()
+ function hasCollectionPendingSponsor() public view returns (bool) {
+ require(false, stub_error);
+ dummy;
+ return false;
+ }
+
+ /// Collection sponsorship confirmation.
+ ///
+ /// @dev After setting the sponsor for the collection, it must be confirmed with this function.
+ /// @dev EVM selector for this function is: 0x3c50e97a,
+ /// or in textual repr: confirmCollectionSponsorship()
+ function confirmCollectionSponsorship() public {
+ require(false, stub_error);
+ dummy = 0;
+ }
+
+ /// Remove collection sponsor.
+ /// @dev EVM selector for this function is: 0x6e0326a3,
+ /// or in textual repr: removeCollectionSponsor()
+ function removeCollectionSponsor() public {
+ require(false, stub_error);
+ dummy = 0;
+ }
+
+ /// Get current sponsor.
+ ///
+ /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
+ /// @dev EVM selector for this function is: 0x6ec0a9f1,
+ /// or in textual repr: collectionSponsor()
+ function collectionSponsor() public view returns (CrossAddress memory) {
+ require(false, stub_error);
+ dummy;
+ return CrossAddress(0x0000000000000000000000000000000000000000, 0);
+ }
+
+ /// Get current collection limits.
+ ///
+ /// @return Array of collection limits
+ /// @dev EVM selector for this function is: 0xf63bc572,
+ /// or in textual repr: collectionLimits()
+ function collectionLimits() public view returns (CollectionLimit[] memory) {
+ require(false, stub_error);
+ dummy;
+ return new CollectionLimit[](0);
+ }
+
+ /// Set limits for the collection.
+ /// @dev Throws error if limit not found.
+ /// @param limit Some limit.
+ /// @dev EVM selector for this function is: 0x2316ee74,
+ /// or in textual repr: setCollectionLimit((uint8,(bool,uint256)))
+ function setCollectionLimit(CollectionLimit memory limit) public {
+ require(false, stub_error);
+ limit;
+ dummy = 0;
+ }
+
+ /// Get contract address.
+ /// @dev EVM selector for this function is: 0xf6b4dfb4,
+ /// or in textual repr: contractAddress()
+ function contractAddress() public view returns (address) {
+ require(false, stub_error);
+ dummy;
+ return 0x0000000000000000000000000000000000000000;
+ }
+
+ /// Add collection admin.
+ /// @param newAdmin Cross account administrator address.
+ /// @dev EVM selector for this function is: 0x859aa7d6,
+ /// or in textual repr: addCollectionAdminCross((address,uint256))
+ function addCollectionAdminCross(CrossAddress memory newAdmin) public {
+ require(false, stub_error);
+ newAdmin;
+ dummy = 0;
+ }
+
+ /// Remove collection admin.
+ /// @param admin Cross account administrator address.
+ /// @dev EVM selector for this function is: 0x6c0cd173,
+ /// or in textual repr: removeCollectionAdminCross((address,uint256))
+ function removeCollectionAdminCross(CrossAddress memory admin) public {
+ require(false, stub_error);
+ admin;
+ dummy = 0;
+ }
+
+ // /// Add collection admin.
+ // /// @param newAdmin Address of the added administrator.
+ // /// @dev EVM selector for this function is: 0x92e462c7,
+ // /// or in textual repr: addCollectionAdmin(address)
+ // function addCollectionAdmin(address newAdmin) public {
+ // require(false, stub_error);
+ // newAdmin;
+ // dummy = 0;
+ // }
+
+ // /// Remove collection admin.
+ // ///
+ // /// @param admin Address of the removed administrator.
+ // /// @dev EVM selector for this function is: 0xfafd7b42,
+ // /// or in textual repr: removeCollectionAdmin(address)
+ // function removeCollectionAdmin(address admin) public {
+ // require(false, stub_error);
+ // admin;
+ // dummy = 0;
+ // }
+
+ /// Toggle accessibility of collection nesting.
+ ///
+ /// @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'
+ /// @dev EVM selector for this function is: 0x112d4586,
+ /// or in textual repr: setCollectionNesting(bool)
+ function setCollectionNesting(bool enable) public {
+ require(false, stub_error);
+ enable;
+ dummy = 0;
+ }
+
+ /// Toggle accessibility of collection nesting.
+ ///
+ /// @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'
+ /// @param collections Addresses of collections that will be available for nesting.
+ /// @dev EVM selector for this function is: 0x64872396,
+ /// or in textual repr: setCollectionNesting(bool,address[])
+ function setCollectionNesting(bool enable, address[] memory collections) public {
+ require(false, stub_error);
+ enable;
+ collections;
+ dummy = 0;
+ }
+
+ /// Returns nesting for a collection
+ /// @dev EVM selector for this function is: 0x22d25bfe,
+ /// or in textual repr: collectionNestingRestrictedCollectionIds()
+ function collectionNestingRestrictedCollectionIds() public view returns (CollectionNesting memory) {
+ require(false, stub_error);
+ dummy;
+ return CollectionNesting(false, new uint256[](0));
+ }
+
+ /// Returns permissions for a collection
+ /// @dev EVM selector for this function is: 0x5b2eaf4b,
+ /// or in textual repr: collectionNestingPermissions()
+ function collectionNestingPermissions() public view returns (CollectionNestingPermission[] memory) {
+ require(false, stub_error);
+ dummy;
+ return new CollectionNestingPermission[](0);
+ }
+
+ /// Set the collection access method.
+ /// @param mode Access mode
+ /// @dev EVM selector for this function is: 0x41835d4c,
+ /// or in textual repr: setCollectionAccess(uint8)
+ function setCollectionAccess(AccessMode mode) public {
+ require(false, stub_error);
+ mode;
+ dummy = 0;
+ }
+
+ /// Checks that user allowed to operate with collection.
+ ///
+ /// @param user User address to check.
+ /// @dev EVM selector for this function is: 0x91b6df49,
+ /// or in textual repr: allowlistedCross((address,uint256))
+ function allowlistedCross(CrossAddress memory user) public view returns (bool) {
+ require(false, stub_error);
+ user;
+ dummy;
+ return false;
+ }
+
+ // /// Add the user to the allowed list.
+ // ///
+ // /// @param user Address of a trusted user.
+ // /// @dev EVM selector for this function is: 0x67844fe6,
+ // /// or in textual repr: addToCollectionAllowList(address)
+ // function addToCollectionAllowList(address user) public {
+ // require(false, stub_error);
+ // user;
+ // dummy = 0;
+ // }
+
+ /// Add user to allowed list.
+ ///
+ /// @param user User cross account address.
+ /// @dev EVM selector for this function is: 0xa0184a3a,
+ /// or in textual repr: addToCollectionAllowListCross((address,uint256))
+ function addToCollectionAllowListCross(CrossAddress memory user) public {
+ require(false, stub_error);
+ user;
+ dummy = 0;
+ }
+
+ // /// Remove the user from the allowed list.
+ // ///
+ // /// @param user Address of a removed user.
+ // /// @dev EVM selector for this function is: 0x85c51acb,
+ // /// or in textual repr: removeFromCollectionAllowList(address)
+ // function removeFromCollectionAllowList(address user) public {
+ // require(false, stub_error);
+ // user;
+ // dummy = 0;
+ // }
+
+ /// Remove user from allowed list.
+ ///
+ /// @param user User cross account address.
+ /// @dev EVM selector for this function is: 0x09ba452a,
+ /// or in textual repr: removeFromCollectionAllowListCross((address,uint256))
+ function removeFromCollectionAllowListCross(CrossAddress memory user) public {
+ require(false, stub_error);
+ user;
+ dummy = 0;
+ }
+
+ /// Switch permission for minting.
+ ///
+ /// @param mode Enable if "true".
+ /// @dev EVM selector for this function is: 0x00018e84,
+ /// or in textual repr: setCollectionMintMode(bool)
+ function setCollectionMintMode(bool mode) public {
+ require(false, stub_error);
+ mode;
+ dummy = 0;
+ }
+
+ // /// Check that account is the owner or admin of the collection
+ // ///
+ // /// @param user account to verify
+ // /// @return "true" if account is the owner or admin
+ // /// @dev EVM selector for this function is: 0x9811b0c7,
+ // /// or in textual repr: isOwnerOrAdmin(address)
+ // function isOwnerOrAdmin(address user) public view returns (bool) {
+ // require(false, stub_error);
+ // user;
+ // dummy;
+ // return false;
+ // }
+
+ /// Check that account is the owner or admin of the collection
+ ///
+ /// @param user User cross account to verify
+ /// @return "true" if account is the owner or admin
+ /// @dev EVM selector for this function is: 0x3e75a905,
+ /// or in textual repr: isOwnerOrAdminCross((address,uint256))
+ function isOwnerOrAdminCross(CrossAddress memory user) public view returns (bool) {
+ require(false, stub_error);
+ user;
+ dummy;
+ return false;
+ }
+
+ /// Returns collection type
+ ///
+ /// @return `Fungible` or `NFT` or `ReFungible`
+ /// @dev EVM selector for this function is: 0xd34b55b8,
+ /// or in textual repr: uniqueCollectionType()
+ function uniqueCollectionType() public view returns (string memory) {
+ require(false, stub_error);
+ dummy;
+ return "";
+ }
+
+ /// Get collection owner.
+ ///
+ /// @return Tuble with sponsor address and his substrate mirror.
+ /// If address is canonical then substrate mirror is zero and vice versa.
+ /// @dev EVM selector for this function is: 0xdf727d3b,
+ /// or in textual repr: collectionOwner()
+ function collectionOwner() public view returns (CrossAddress memory) {
+ require(false, stub_error);
+ dummy;
+ return CrossAddress(0x0000000000000000000000000000000000000000, 0);
+ }
+
+ // /// Changes collection owner to another account
+ // ///
+ // /// @dev Owner can be changed only by current owner
+ // /// @param newOwner new owner account
+ // /// @dev EVM selector for this function is: 0x4f53e226,
+ // /// or in textual repr: changeCollectionOwner(address)
+ // function changeCollectionOwner(address newOwner) public {
+ // require(false, stub_error);
+ // newOwner;
+ // dummy = 0;
+ // }
+
+ /// Get collection administrators
+ ///
+ /// @return Vector of tuples with admins address and his substrate mirror.
+ /// If address is canonical then substrate mirror is zero and vice versa.
+ /// @dev EVM selector for this function is: 0x5813216b,
+ /// or in textual repr: collectionAdmins()
+ function collectionAdmins() public view returns (CrossAddress[] memory) {
+ require(false, stub_error);
+ dummy;
+ return new CrossAddress[](0);
+ }
+
+ /// Changes collection owner to another account
+ ///
+ /// @dev Owner can be changed only by current owner
+ /// @param newOwner new owner cross account
+ /// @dev EVM selector for this function is: 0x6496c497,
+ /// or in textual repr: changeCollectionOwnerCross((address,uint256))
+ function changeCollectionOwnerCross(CrossAddress memory newOwner) public {
+ require(false, stub_error);
+ newOwner;
+ dummy = 0;
+ }
+}
+
+/// Cross account struct
+struct CrossAddress {
+ address eth;
+ uint256 sub;
+}
+
+/// Ethereum representation of `AccessMode` (see [`up_data_structs::AccessMode`]).
+enum AccessMode {
+ /// Access grant for owner and admins. Used as default.
+ Normal,
+ /// Like a [`Normal`](AccessMode::Normal) but also users in allow list.
+ AllowList
+}
+
+/// Ethereum representation of `NestingPermissions` (see [`up_data_structs::NestingPermissions`]) field.
+struct CollectionNestingPermission {
+ CollectionPermissionField field;
+ bool value;
+}
+
+/// Ethereum representation of `NestingPermissions` (see [`up_data_structs::NestingPermissions`]) fields as an enumeration.
+enum CollectionPermissionField {
+ /// Owner of token can nest tokens under it.
+ TokenOwner,
+ /// Admin of token collection can nest tokens under token.
+ CollectionAdmin
+}
+
+/// Nested collections.
+struct CollectionNesting {
+ bool token_owner;
+ uint256[] ids;
+}
+
+/// [`CollectionLimits`](up_data_structs::CollectionLimits) field representation for EVM.
+struct CollectionLimit {
+ CollectionLimitField field;
+ OptionUint256 value;
+}
+
+/// Optional value
+struct OptionUint256 {
+ /// Shows the status of accessibility of value
+ bool status;
+ /// Actual value if `status` is true
+ uint256 value;
+}
+
+/// [`CollectionLimits`](up_data_structs::CollectionLimits) fields representation for EVM.
+enum CollectionLimitField {
+ /// How many tokens can a user have on one account.
+ AccountTokenOwnership,
+ /// How many bytes of data are available for sponsorship.
+ SponsoredDataSize,
+ /// In any case, chain default: [`SponsoringRateLimit::SponsoringDisabled`]
+ SponsoredDataRateLimit,
+ /// How many tokens can be mined into this collection.
+ TokenLimit,
+ /// Timeouts for transfer sponsoring.
+ SponsorTransferTimeout,
+ /// Timeout for sponsoring an approval in passed blocks.
+ SponsorApproveTimeout,
+ /// Whether the collection owner of the collection can send tokens (which belong to other users).
+ OwnerCanTransfer,
+ /// Can the collection owner burn other people's tokens.
+ OwnerCanDestroy,
+ /// Is it possible to send tokens from this collection between users.
+ TransferEnabled
+}
+
+/// Ethereum representation of collection [`PropertyKey`](up_data_structs::PropertyKey) and [`PropertyValue`](up_data_structs::PropertyValue).
+struct Property {
+ string key;
+ bytes value;
+}
+
+/// @dev the ERC-165 identifier for this interface is 0x85d7dea6
+contract ERC20UniqueExtensions is Dummy, ERC165 {
+ /// @dev Function to check the amount of tokens that an owner allowed to a spender.
+ /// @param owner crossAddress The address which owns the funds.
+ /// @param spender crossAddress The address which will spend the funds.
+ /// @return A uint256 specifying the amount of tokens still available for the spender.
+ /// @dev EVM selector for this function is: 0xe0af4bd7,
+ /// or in textual repr: allowanceCross((address,uint256),(address,uint256))
+ function allowanceCross(CrossAddress memory owner, CrossAddress memory spender) public view returns (uint256) {
+ require(false, stub_error);
+ owner;
+ spender;
+ dummy;
+ return 0;
+ }
+
+ /// @notice A description for the collection.
+ /// @dev EVM selector for this function is: 0x7284e416,
+ /// or in textual repr: description()
+ function description() public view returns (string memory) {
+ require(false, stub_error);
+ dummy;
+ return "";
+ }
+
+ /// @dev EVM selector for this function is: 0x269e6158,
+ /// or in textual repr: mintCross((address,uint256),uint256)
+ function mintCross(CrossAddress memory to, uint256 amount) public returns (bool) {
+ require(false, stub_error);
+ to;
+ amount;
+ dummy = 0;
+ return false;
+ }
+
+ /// @dev EVM selector for this function is: 0x0ecd0ab0,
+ /// or in textual repr: approveCross((address,uint256),uint256)
+ function approveCross(CrossAddress memory spender, uint256 amount) public returns (bool) {
+ require(false, stub_error);
+ spender;
+ amount;
+ dummy = 0;
+ return false;
+ }
+
+ // /// Burn tokens from account
+ // /// @dev Function that burns an `amount` of the tokens of a given account,
+ // /// deducting from the sender's allowance for said account.
+ // /// @param from The account whose tokens will be burnt.
+ // /// @param amount The amount that will be burnt.
+ // /// @dev EVM selector for this function is: 0x79cc6790,
+ // /// or in textual repr: burnFrom(address,uint256)
+ // function burnFrom(address from, uint256 amount) public returns (bool) {
+ // require(false, stub_error);
+ // from;
+ // amount;
+ // dummy = 0;
+ // return false;
+ // }
+
+ /// Burn tokens from account
+ /// @dev Function that burns an `amount` of the tokens of a given account,
+ /// deducting from the sender's allowance for said account.
+ /// @param from The account whose tokens will be burnt.
+ /// @param amount The amount that will be burnt.
+ /// @dev EVM selector for this function is: 0xbb2f5a58,
+ /// or in textual repr: burnFromCross((address,uint256),uint256)
+ function burnFromCross(CrossAddress memory from, uint256 amount) public returns (bool) {
+ require(false, stub_error);
+ from;
+ amount;
+ dummy = 0;
+ return false;
+ }
+
+ /// Mint tokens for multiple accounts.
+ /// @param amounts array of pairs of account address and amount
+ /// @dev EVM selector for this function is: 0x1acf2d55,
+ /// or in textual repr: mintBulk((address,uint256)[])
+ function mintBulk(AmountForAddress[] memory amounts) public returns (bool) {
+ require(false, stub_error);
+ amounts;
+ dummy = 0;
+ return false;
+ }
+
+ /// @dev EVM selector for this function is: 0x2ada85ff,
+ /// or in textual repr: transferCross((address,uint256),uint256)
+ function transferCross(CrossAddress memory to, uint256 amount) public returns (bool) {
+ require(false, stub_error);
+ to;
+ amount;
+ dummy = 0;
+ return false;
+ }
+
+ /// @dev EVM selector for this function is: 0xd5cf430b,
+ /// or in textual repr: transferFromCross((address,uint256),(address,uint256),uint256)
+ function transferFromCross(
+ CrossAddress memory from,
+ CrossAddress memory to,
+ uint256 amount
+ ) public returns (bool) {
+ require(false, stub_error);
+ from;
+ to;
+ amount;
+ dummy = 0;
+ return false;
+ }
+
+ /// @notice Returns collection helper contract address
+ /// @dev EVM selector for this function is: 0x1896cce6,
+ /// or in textual repr: collectionHelperAddress()
+ function collectionHelperAddress() public view returns (address) {
+ require(false, stub_error);
+ dummy;
+ return 0x0000000000000000000000000000000000000000;
+ }
+}
+
+struct AmountForAddress {
+ address to;
+ uint256 amount;
+}
+
+/// @dev the ERC-165 identifier for this interface is 0x40c10f19
+contract ERC20Mintable is Dummy, ERC165 {
+ /// Mint tokens for `to` account.
+ /// @param to account that will receive minted tokens
+ /// @param amount amount of tokens to mint
+ /// @dev EVM selector for this function is: 0x40c10f19,
+ /// or in textual repr: mint(address,uint256)
+ function mint(address to, uint256 amount) public returns (bool) {
+ require(false, stub_error);
+ to;
+ amount;
+ dummy = 0;
+ return false;
+ }
+}
+
+/// @dev inlined interface
+contract ERC20Events {
+ event Transfer(address indexed from, address indexed to, uint256 value);
+ event Approval(address indexed owner, address indexed spender, uint256 value);
+}
+
+/// @dev the ERC-165 identifier for this interface is 0x942e8b22
+contract ERC20 is Dummy, ERC165, ERC20Events {
+ /// @dev EVM selector for this function is: 0x06fdde03,
+ /// or in textual repr: name()
+ function name() public view returns (string memory) {
+ require(false, stub_error);
+ dummy;
+ return "";
+ }
+
+ /// @dev EVM selector for this function is: 0x95d89b41,
+ /// or in textual repr: symbol()
+ function symbol() public view returns (string memory) {
+ require(false, stub_error);
+ dummy;
+ return "";
+ }
+
+ /// @dev EVM selector for this function is: 0x18160ddd,
+ /// or in textual repr: totalSupply()
+ function totalSupply() public view returns (uint256) {
+ require(false, stub_error);
+ dummy;
+ return 0;
+ }
+
+ /// @dev EVM selector for this function is: 0x313ce567,
+ /// or in textual repr: decimals()
+ function decimals() public view returns (uint8) {
+ require(false, stub_error);
+ dummy;
+ return 0;
+ }
+
+ /// @dev EVM selector for this function is: 0x70a08231,
+ /// or in textual repr: balanceOf(address)
+ function balanceOf(address owner) public view returns (uint256) {
+ require(false, stub_error);
+ owner;
+ dummy;
+ return 0;
+ }
+
+ /// @dev EVM selector for this function is: 0xa9059cbb,
+ /// or in textual repr: transfer(address,uint256)
+ function transfer(address to, uint256 amount) public returns (bool) {
+ require(false, stub_error);
+ to;
+ amount;
+ dummy = 0;
+ return false;
+ }
+
+ /// @dev EVM selector for this function is: 0x23b872dd,
+ /// or in textual repr: transferFrom(address,address,uint256)
+ function transferFrom(
+ address from,
+ address to,
+ uint256 amount
+ ) public returns (bool) {
+ require(false, stub_error);
+ from;
+ to;
+ amount;
+ dummy = 0;
+ return false;
+ }
+
+ /// @dev EVM selector for this function is: 0x095ea7b3,
+ /// or in textual repr: approve(address,uint256)
+ function approve(address spender, uint256 amount) public returns (bool) {
+ require(false, stub_error);
+ spender;
+ amount;
+ dummy = 0;
+ return false;
+ }
+
+ /// @dev EVM selector for this function is: 0xdd62ed3e,
+ /// or in textual repr: allowance(address,address)
+ function allowance(address owner, address spender) public view returns (uint256) {
+ require(false, stub_error);
+ owner;
+ spender;
+ dummy;
+ return 0;
+ }
+}
+
+contract UniqueFungible is Dummy, ERC165, ERC20, ERC20Mintable, ERC20UniqueExtensions, Collection {}
pallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterbothbinary blob — no preview
pallets/refungible/src/stubs/UniqueRefungible.rawdiffbeforeafterbothbinary blob — no preview
pallets/unique/src/eth/stubs/CollectionHelpers.rawdiffbeforeafterbothbinary blob — no preview
tests/src/eth/api/UniqueFungible.soldiffbeforeafterboth--- a/tests/src/eth/api/UniqueFungible.sol
+++ b/tests/src/eth/api/UniqueFungible.sol
@@ -0,0 +1,485 @@
+// SPDX-License-Identifier: OTHER
+// This code is automatically generated
+
+pragma solidity >=0.8.0 <0.9.0;
+
+/// @dev common stubs holder
+interface Dummy {
+
+}
+
+interface ERC165 is Dummy {
+ function supportsInterface(bytes4 interfaceID) external view returns (bool);
+}
+
+/// @title A contract that allows you to work with collections.
+/// @dev the ERC-165 identifier for this interface is 0x2a14cfd1
+interface Collection is Dummy, ERC165 {
+ // /// Set collection property.
+ // ///
+ // /// @param key Property key.
+ // /// @param value Propery value.
+ // /// @dev EVM selector for this function is: 0x2f073f66,
+ // /// or in textual repr: setCollectionProperty(string,bytes)
+ // function setCollectionProperty(string memory key, bytes memory value) external;
+
+ /// Set collection properties.
+ ///
+ /// @param properties Vector of properties key/value pair.
+ /// @dev EVM selector for this function is: 0x50b26b2a,
+ /// or in textual repr: setCollectionProperties((string,bytes)[])
+ function setCollectionProperties(Property[] memory properties) external;
+
+ // /// Delete collection property.
+ // ///
+ // /// @param key Property key.
+ // /// @dev EVM selector for this function is: 0x7b7debce,
+ // /// or in textual repr: deleteCollectionProperty(string)
+ // function deleteCollectionProperty(string memory key) external;
+
+ /// Delete collection properties.
+ ///
+ /// @param keys Properties keys.
+ /// @dev EVM selector for this function is: 0xee206ee3,
+ /// or in textual repr: deleteCollectionProperties(string[])
+ function deleteCollectionProperties(string[] memory keys) external;
+
+ /// Get collection property.
+ ///
+ /// @dev Throws error if key not found.
+ ///
+ /// @param key Property key.
+ /// @return bytes The property corresponding to the key.
+ /// @dev EVM selector for this function is: 0xcf24fd6d,
+ /// or in textual repr: collectionProperty(string)
+ function collectionProperty(string memory key) external view returns (bytes memory);
+
+ /// Get collection properties.
+ ///
+ /// @param keys Properties keys. Empty keys for all propertyes.
+ /// @return Vector of properties key/value pairs.
+ /// @dev EVM selector for this function is: 0x285fb8e6,
+ /// or in textual repr: collectionProperties(string[])
+ function collectionProperties(string[] memory keys) external view returns (Property[] memory);
+
+ // /// Set the sponsor of the collection.
+ // ///
+ // /// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
+ // ///
+ // /// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.
+ // /// @dev EVM selector for this function is: 0x7623402e,
+ // /// or in textual repr: setCollectionSponsor(address)
+ // function setCollectionSponsor(address sponsor) external;
+
+ /// Set the sponsor of the collection.
+ ///
+ /// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
+ ///
+ /// @param sponsor Cross account address of the sponsor from whose account funds will be debited for operations with the contract.
+ /// @dev EVM selector for this function is: 0x84a1d5a8,
+ /// or in textual repr: setCollectionSponsorCross((address,uint256))
+ function setCollectionSponsorCross(CrossAddress memory sponsor) external;
+
+ /// Whether there is a pending sponsor.
+ /// @dev EVM selector for this function is: 0x058ac185,
+ /// or in textual repr: hasCollectionPendingSponsor()
+ function hasCollectionPendingSponsor() external view returns (bool);
+
+ /// Collection sponsorship confirmation.
+ ///
+ /// @dev After setting the sponsor for the collection, it must be confirmed with this function.
+ /// @dev EVM selector for this function is: 0x3c50e97a,
+ /// or in textual repr: confirmCollectionSponsorship()
+ function confirmCollectionSponsorship() external;
+
+ /// Remove collection sponsor.
+ /// @dev EVM selector for this function is: 0x6e0326a3,
+ /// or in textual repr: removeCollectionSponsor()
+ function removeCollectionSponsor() external;
+
+ /// Get current sponsor.
+ ///
+ /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
+ /// @dev EVM selector for this function is: 0x6ec0a9f1,
+ /// or in textual repr: collectionSponsor()
+ function collectionSponsor() external view returns (CrossAddress memory);
+
+ /// Get current collection limits.
+ ///
+ /// @return Array of collection limits
+ /// @dev EVM selector for this function is: 0xf63bc572,
+ /// or in textual repr: collectionLimits()
+ function collectionLimits() external view returns (CollectionLimit[] memory);
+
+ /// Set limits for the collection.
+ /// @dev Throws error if limit not found.
+ /// @param limit Some limit.
+ /// @dev EVM selector for this function is: 0x2316ee74,
+ /// or in textual repr: setCollectionLimit((uint8,(bool,uint256)))
+ function setCollectionLimit(CollectionLimit memory limit) external;
+
+ /// Get contract address.
+ /// @dev EVM selector for this function is: 0xf6b4dfb4,
+ /// or in textual repr: contractAddress()
+ function contractAddress() external view returns (address);
+
+ /// Add collection admin.
+ /// @param newAdmin Cross account administrator address.
+ /// @dev EVM selector for this function is: 0x859aa7d6,
+ /// or in textual repr: addCollectionAdminCross((address,uint256))
+ function addCollectionAdminCross(CrossAddress memory newAdmin) external;
+
+ /// Remove collection admin.
+ /// @param admin Cross account administrator address.
+ /// @dev EVM selector for this function is: 0x6c0cd173,
+ /// or in textual repr: removeCollectionAdminCross((address,uint256))
+ function removeCollectionAdminCross(CrossAddress memory admin) external;
+
+ // /// Add collection admin.
+ // /// @param newAdmin Address of the added administrator.
+ // /// @dev EVM selector for this function is: 0x92e462c7,
+ // /// or in textual repr: addCollectionAdmin(address)
+ // function addCollectionAdmin(address newAdmin) external;
+
+ // /// Remove collection admin.
+ // ///
+ // /// @param admin Address of the removed administrator.
+ // /// @dev EVM selector for this function is: 0xfafd7b42,
+ // /// or in textual repr: removeCollectionAdmin(address)
+ // function removeCollectionAdmin(address admin) external;
+
+ /// Toggle accessibility of collection nesting.
+ ///
+ /// @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'
+ /// @dev EVM selector for this function is: 0x112d4586,
+ /// or in textual repr: setCollectionNesting(bool)
+ function setCollectionNesting(bool enable) external;
+
+ /// Toggle accessibility of collection nesting.
+ ///
+ /// @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'
+ /// @param collections Addresses of collections that will be available for nesting.
+ /// @dev EVM selector for this function is: 0x64872396,
+ /// or in textual repr: setCollectionNesting(bool,address[])
+ function setCollectionNesting(bool enable, address[] memory collections) external;
+
+ /// Returns nesting for a collection
+ /// @dev EVM selector for this function is: 0x22d25bfe,
+ /// or in textual repr: collectionNestingRestrictedCollectionIds()
+ function collectionNestingRestrictedCollectionIds() external view returns (CollectionNesting memory);
+
+ /// Returns permissions for a collection
+ /// @dev EVM selector for this function is: 0x5b2eaf4b,
+ /// or in textual repr: collectionNestingPermissions()
+ function collectionNestingPermissions() external view returns (CollectionNestingPermission[] memory);
+
+ /// Set the collection access method.
+ /// @param mode Access mode
+ /// @dev EVM selector for this function is: 0x41835d4c,
+ /// or in textual repr: setCollectionAccess(uint8)
+ function setCollectionAccess(AccessMode mode) external;
+
+ /// Checks that user allowed to operate with collection.
+ ///
+ /// @param user User address to check.
+ /// @dev EVM selector for this function is: 0x91b6df49,
+ /// or in textual repr: allowlistedCross((address,uint256))
+ function allowlistedCross(CrossAddress memory user) external view returns (bool);
+
+ // /// Add the user to the allowed list.
+ // ///
+ // /// @param user Address of a trusted user.
+ // /// @dev EVM selector for this function is: 0x67844fe6,
+ // /// or in textual repr: addToCollectionAllowList(address)
+ // function addToCollectionAllowList(address user) external;
+
+ /// Add user to allowed list.
+ ///
+ /// @param user User cross account address.
+ /// @dev EVM selector for this function is: 0xa0184a3a,
+ /// or in textual repr: addToCollectionAllowListCross((address,uint256))
+ function addToCollectionAllowListCross(CrossAddress memory user) external;
+
+ // /// Remove the user from the allowed list.
+ // ///
+ // /// @param user Address of a removed user.
+ // /// @dev EVM selector for this function is: 0x85c51acb,
+ // /// or in textual repr: removeFromCollectionAllowList(address)
+ // function removeFromCollectionAllowList(address user) external;
+
+ /// Remove user from allowed list.
+ ///
+ /// @param user User cross account address.
+ /// @dev EVM selector for this function is: 0x09ba452a,
+ /// or in textual repr: removeFromCollectionAllowListCross((address,uint256))
+ function removeFromCollectionAllowListCross(CrossAddress memory user) external;
+
+ /// Switch permission for minting.
+ ///
+ /// @param mode Enable if "true".
+ /// @dev EVM selector for this function is: 0x00018e84,
+ /// or in textual repr: setCollectionMintMode(bool)
+ function setCollectionMintMode(bool mode) external;
+
+ // /// Check that account is the owner or admin of the collection
+ // ///
+ // /// @param user account to verify
+ // /// @return "true" if account is the owner or admin
+ // /// @dev EVM selector for this function is: 0x9811b0c7,
+ // /// or in textual repr: isOwnerOrAdmin(address)
+ // function isOwnerOrAdmin(address user) external view returns (bool);
+
+ /// Check that account is the owner or admin of the collection
+ ///
+ /// @param user User cross account to verify
+ /// @return "true" if account is the owner or admin
+ /// @dev EVM selector for this function is: 0x3e75a905,
+ /// or in textual repr: isOwnerOrAdminCross((address,uint256))
+ function isOwnerOrAdminCross(CrossAddress memory user) external view returns (bool);
+
+ /// Returns collection type
+ ///
+ /// @return `Fungible` or `NFT` or `ReFungible`
+ /// @dev EVM selector for this function is: 0xd34b55b8,
+ /// or in textual repr: uniqueCollectionType()
+ function uniqueCollectionType() external view returns (string memory);
+
+ /// Get collection owner.
+ ///
+ /// @return Tuble with sponsor address and his substrate mirror.
+ /// If address is canonical then substrate mirror is zero and vice versa.
+ /// @dev EVM selector for this function is: 0xdf727d3b,
+ /// or in textual repr: collectionOwner()
+ function collectionOwner() external view returns (CrossAddress memory);
+
+ // /// Changes collection owner to another account
+ // ///
+ // /// @dev Owner can be changed only by current owner
+ // /// @param newOwner new owner account
+ // /// @dev EVM selector for this function is: 0x4f53e226,
+ // /// or in textual repr: changeCollectionOwner(address)
+ // function changeCollectionOwner(address newOwner) external;
+
+ /// Get collection administrators
+ ///
+ /// @return Vector of tuples with admins address and his substrate mirror.
+ /// If address is canonical then substrate mirror is zero and vice versa.
+ /// @dev EVM selector for this function is: 0x5813216b,
+ /// or in textual repr: collectionAdmins()
+ function collectionAdmins() external view returns (CrossAddress[] memory);
+
+ /// Changes collection owner to another account
+ ///
+ /// @dev Owner can be changed only by current owner
+ /// @param newOwner new owner cross account
+ /// @dev EVM selector for this function is: 0x6496c497,
+ /// or in textual repr: changeCollectionOwnerCross((address,uint256))
+ function changeCollectionOwnerCross(CrossAddress memory newOwner) external;
+}
+
+/// Cross account struct
+struct CrossAddress {
+ address eth;
+ uint256 sub;
+}
+
+/// Ethereum representation of `AccessMode` (see [`up_data_structs::AccessMode`]).
+enum AccessMode {
+ /// Access grant for owner and admins. Used as default.
+ Normal,
+ /// Like a [`Normal`](AccessMode::Normal) but also users in allow list.
+ AllowList
+}
+
+/// Ethereum representation of `NestingPermissions` (see [`up_data_structs::NestingPermissions`]) field.
+struct CollectionNestingPermission {
+ CollectionPermissionField field;
+ bool value;
+}
+
+/// Ethereum representation of `NestingPermissions` (see [`up_data_structs::NestingPermissions`]) fields as an enumeration.
+enum CollectionPermissionField {
+ /// Owner of token can nest tokens under it.
+ TokenOwner,
+ /// Admin of token collection can nest tokens under token.
+ CollectionAdmin
+}
+
+/// Nested collections.
+struct CollectionNesting {
+ bool token_owner;
+ uint256[] ids;
+}
+
+/// [`CollectionLimits`](up_data_structs::CollectionLimits) field representation for EVM.
+struct CollectionLimit {
+ CollectionLimitField field;
+ OptionUint256 value;
+}
+
+/// Optional value
+struct OptionUint256 {
+ /// Shows the status of accessibility of value
+ bool status;
+ /// Actual value if `status` is true
+ uint256 value;
+}
+
+/// [`CollectionLimits`](up_data_structs::CollectionLimits) fields representation for EVM.
+enum CollectionLimitField {
+ /// How many tokens can a user have on one account.
+ AccountTokenOwnership,
+ /// How many bytes of data are available for sponsorship.
+ SponsoredDataSize,
+ /// In any case, chain default: [`SponsoringRateLimit::SponsoringDisabled`]
+ SponsoredDataRateLimit,
+ /// How many tokens can be mined into this collection.
+ TokenLimit,
+ /// Timeouts for transfer sponsoring.
+ SponsorTransferTimeout,
+ /// Timeout for sponsoring an approval in passed blocks.
+ SponsorApproveTimeout,
+ /// Whether the collection owner of the collection can send tokens (which belong to other users).
+ OwnerCanTransfer,
+ /// Can the collection owner burn other people's tokens.
+ OwnerCanDestroy,
+ /// Is it possible to send tokens from this collection between users.
+ TransferEnabled
+}
+
+/// Ethereum representation of collection [`PropertyKey`](up_data_structs::PropertyKey) and [`PropertyValue`](up_data_structs::PropertyValue).
+struct Property {
+ string key;
+ bytes value;
+}
+
+/// @dev the ERC-165 identifier for this interface is 0x85d7dea6
+interface ERC20UniqueExtensions is Dummy, ERC165 {
+ /// @dev Function to check the amount of tokens that an owner allowed to a spender.
+ /// @param owner crossAddress The address which owns the funds.
+ /// @param spender crossAddress The address which will spend the funds.
+ /// @return A uint256 specifying the amount of tokens still available for the spender.
+ /// @dev EVM selector for this function is: 0xe0af4bd7,
+ /// or in textual repr: allowanceCross((address,uint256),(address,uint256))
+ function allowanceCross(CrossAddress memory owner, CrossAddress memory spender) external view returns (uint256);
+
+ /// @notice A description for the collection.
+ /// @dev EVM selector for this function is: 0x7284e416,
+ /// or in textual repr: description()
+ function description() external view returns (string memory);
+
+ /// @dev EVM selector for this function is: 0x269e6158,
+ /// or in textual repr: mintCross((address,uint256),uint256)
+ function mintCross(CrossAddress memory to, uint256 amount) external returns (bool);
+
+ /// @dev EVM selector for this function is: 0x0ecd0ab0,
+ /// or in textual repr: approveCross((address,uint256),uint256)
+ function approveCross(CrossAddress memory spender, uint256 amount) external returns (bool);
+
+ // /// Burn tokens from account
+ // /// @dev Function that burns an `amount` of the tokens of a given account,
+ // /// deducting from the sender's allowance for said account.
+ // /// @param from The account whose tokens will be burnt.
+ // /// @param amount The amount that will be burnt.
+ // /// @dev EVM selector for this function is: 0x79cc6790,
+ // /// or in textual repr: burnFrom(address,uint256)
+ // function burnFrom(address from, uint256 amount) external returns (bool);
+
+ /// Burn tokens from account
+ /// @dev Function that burns an `amount` of the tokens of a given account,
+ /// deducting from the sender's allowance for said account.
+ /// @param from The account whose tokens will be burnt.
+ /// @param amount The amount that will be burnt.
+ /// @dev EVM selector for this function is: 0xbb2f5a58,
+ /// or in textual repr: burnFromCross((address,uint256),uint256)
+ function burnFromCross(CrossAddress memory from, uint256 amount) external returns (bool);
+
+ /// Mint tokens for multiple accounts.
+ /// @param amounts array of pairs of account address and amount
+ /// @dev EVM selector for this function is: 0x1acf2d55,
+ /// or in textual repr: mintBulk((address,uint256)[])
+ function mintBulk(AmountForAddress[] memory amounts) external returns (bool);
+
+ /// @dev EVM selector for this function is: 0x2ada85ff,
+ /// or in textual repr: transferCross((address,uint256),uint256)
+ function transferCross(CrossAddress memory to, uint256 amount) external returns (bool);
+
+ /// @dev EVM selector for this function is: 0xd5cf430b,
+ /// or in textual repr: transferFromCross((address,uint256),(address,uint256),uint256)
+ function transferFromCross(
+ CrossAddress memory from,
+ CrossAddress memory to,
+ uint256 amount
+ ) external returns (bool);
+
+ /// @notice Returns collection helper contract address
+ /// @dev EVM selector for this function is: 0x1896cce6,
+ /// or in textual repr: collectionHelperAddress()
+ function collectionHelperAddress() external view returns (address);
+}
+
+struct AmountForAddress {
+ address to;
+ uint256 amount;
+}
+
+/// @dev the ERC-165 identifier for this interface is 0x40c10f19
+interface ERC20Mintable is Dummy, ERC165 {
+ /// Mint tokens for `to` account.
+ /// @param to account that will receive minted tokens
+ /// @param amount amount of tokens to mint
+ /// @dev EVM selector for this function is: 0x40c10f19,
+ /// or in textual repr: mint(address,uint256)
+ function mint(address to, uint256 amount) external returns (bool);
+}
+
+/// @dev inlined interface
+interface ERC20Events {
+ event Transfer(address indexed from, address indexed to, uint256 value);
+ event Approval(address indexed owner, address indexed spender, uint256 value);
+}
+
+/// @dev the ERC-165 identifier for this interface is 0x942e8b22
+interface ERC20 is Dummy, ERC165, ERC20Events {
+ /// @dev EVM selector for this function is: 0x06fdde03,
+ /// or in textual repr: name()
+ function name() external view returns (string memory);
+
+ /// @dev EVM selector for this function is: 0x95d89b41,
+ /// or in textual repr: symbol()
+ function symbol() external view returns (string memory);
+
+ /// @dev EVM selector for this function is: 0x18160ddd,
+ /// or in textual repr: totalSupply()
+ function totalSupply() external view returns (uint256);
+
+ /// @dev EVM selector for this function is: 0x313ce567,
+ /// or in textual repr: decimals()
+ function decimals() external view returns (uint8);
+
+ /// @dev EVM selector for this function is: 0x70a08231,
+ /// or in textual repr: balanceOf(address)
+ function balanceOf(address owner) external view returns (uint256);
+
+ /// @dev EVM selector for this function is: 0xa9059cbb,
+ /// or in textual repr: transfer(address,uint256)
+ function transfer(address to, uint256 amount) external returns (bool);
+
+ /// @dev EVM selector for this function is: 0x23b872dd,
+ /// or in textual repr: transferFrom(address,address,uint256)
+ function transferFrom(
+ address from,
+ address to,
+ uint256 amount
+ ) external returns (bool);
+
+ /// @dev EVM selector for this function is: 0x095ea7b3,
+ /// or in textual repr: approve(address,uint256)
+ function approve(address spender, uint256 amount) external returns (bool);
+
+ /// @dev EVM selector for this function is: 0xdd62ed3e,
+ /// or in textual repr: allowance(address,address)
+ function allowance(address owner, address spender) external view returns (uint256);
+}
+
+interface UniqueFungible is Dummy, ERC165, ERC20, ERC20Mintable, ERC20UniqueExtensions, Collection {}