difftreelog
Merge pull request #1054 from UniqueNetwork/feature/refactor-tests-eth
in: master
111 files changed
Makefilediffbeforeafterboth--- a/Makefile
+++ b/Makefile
@@ -7,25 +7,25 @@
@echo " bench-unique"
NATIVE_FUNGIBLE_EVM_STUBS=./pallets/balances-adapter/src/stubs
-NATIVE_FUNGIBLE_EVM_ABI=./js-packages/tests/eth/abi/nativeFungible.json
+NATIVE_FUNGIBLE_EVM_ABI=./js-packages/evm-abi/abi/nativeFungible.json
FUNGIBLE_EVM_STUBS=./pallets/fungible/src/stubs
-FUNGIBLE_EVM_ABI=./js-packages/tests/eth/abi/fungible.json
+FUNGIBLE_EVM_ABI=./js-packages/evm-abi/abi/fungible.json
NONFUNGIBLE_EVM_STUBS=./pallets/nonfungible/src/stubs
-NONFUNGIBLE_EVM_ABI=./js-packages/tests/eth/abi/nonFungible.json
+NONFUNGIBLE_EVM_ABI=./js-packages/evm-abi/abi/nonFungible.json
REFUNGIBLE_EVM_STUBS=./pallets/refungible/src/stubs
-REFUNGIBLE_EVM_ABI=./js-packages/tests/eth/abi/reFungible.json
-REFUNGIBLE_TOKEN_EVM_ABI=./js-packages/tests/eth/abi/reFungibleToken.json
+REFUNGIBLE_EVM_ABI=./js-packages/evm-abi/abi/reFungible.json
+REFUNGIBLE_TOKEN_EVM_ABI=./js-packages/evm-abi/abi/reFungibleToken.json
CONTRACT_HELPERS_STUBS=./pallets/evm-contract-helpers/src/stubs/
-CONTRACT_HELPERS_ABI=./js-packages/tests/eth/abi/contractHelpers.json
+CONTRACT_HELPERS_ABI=./js-packages/evm-abi/abi/contractHelpers.json
COLLECTION_HELPER_STUBS=./pallets/unique/src/eth/stubs/
-COLLECTION_HELPER_ABI=./js-packages/tests/eth/abi/collectionHelpers.json
+COLLECTION_HELPER_ABI=./js-packages/evm-abi/abi/collectionHelpers.json
-TESTS_API=./js-packages/tests/eth/api/
+TESTS_API=./js-packages/evm-abi/api/
.PHONY: regenerate_solidity
regenerate_solidity: UniqueFungible.sol UniqueNFT.sol UniqueRefungible.sol UniqueRefungibleToken.sol ContractHelpers.sol CollectionHelpers.sol
js-packages/evm-abi/abi/collectionHelpers.jsondiffbeforeafterboth--- /dev/null
+++ b/js-packages/evm-abi/abi/collectionHelpers.json
@@ -0,0 +1,267 @@
+[
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "collectionId",
+ "type": "address"
+ }
+ ],
+ "name": "CollectionChanged",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "collectionId",
+ "type": "address"
+ }
+ ],
+ "name": "CollectionCreated",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "collectionId",
+ "type": "address"
+ }
+ ],
+ "name": "CollectionDestroyed",
+ "type": "event"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint32", "name": "collectionId", "type": "uint32" }
+ ],
+ "name": "collectionAddress",
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "collectionCreationFee",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "collectionAddress",
+ "type": "address"
+ }
+ ],
+ "name": "collectionId",
+ "outputs": [{ "internalType": "uint32", "name": "", "type": "uint32" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "string", "name": "name", "type": "string" },
+ { "internalType": "string", "name": "description", "type": "string" },
+ {
+ "internalType": "string",
+ "name": "token_prefix",
+ "type": "string"
+ },
+ {
+ "internalType": "enum CollectionMode",
+ "name": "mode",
+ "type": "uint8"
+ },
+ { "internalType": "uint8", "name": "decimals", "type": "uint8" },
+ {
+ "components": [
+ { "internalType": "string", "name": "key", "type": "string" },
+ { "internalType": "bytes", "name": "value", "type": "bytes" }
+ ],
+ "internalType": "struct Property[]",
+ "name": "properties",
+ "type": "tuple[]"
+ },
+ {
+ "components": [
+ { "internalType": "string", "name": "key", "type": "string" },
+ {
+ "components": [
+ {
+ "internalType": "enum TokenPermissionField",
+ "name": "code",
+ "type": "uint8"
+ },
+ { "internalType": "bool", "name": "value", "type": "bool" }
+ ],
+ "internalType": "struct PropertyPermission[]",
+ "name": "permissions",
+ "type": "tuple[]"
+ }
+ ],
+ "internalType": "struct TokenPropertyPermission[]",
+ "name": "token_property_permissions",
+ "type": "tuple[]"
+ },
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress[]",
+ "name": "admin_list",
+ "type": "tuple[]"
+ },
+ {
+ "components": [
+ { "internalType": "bool", "name": "token_owner", "type": "bool" },
+ {
+ "internalType": "bool",
+ "name": "collection_admin",
+ "type": "bool"
+ },
+ {
+ "internalType": "address[]",
+ "name": "restricted",
+ "type": "address[]"
+ }
+ ],
+ "internalType": "struct CollectionNestingAndPermission",
+ "name": "nesting_settings",
+ "type": "tuple"
+ },
+ {
+ "components": [
+ {
+ "internalType": "enum CollectionLimitField",
+ "name": "field",
+ "type": "uint8"
+ },
+ { "internalType": "uint256", "name": "value", "type": "uint256" }
+ ],
+ "internalType": "struct CollectionLimitValue[]",
+ "name": "limits",
+ "type": "tuple[]"
+ },
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "pending_sponsor",
+ "type": "tuple"
+ },
+ {
+ "internalType": "CollectionFlags",
+ "name": "flags",
+ "type": "uint8"
+ }
+ ],
+ "internalType": "struct CreateCollectionData",
+ "name": "data",
+ "type": "tuple"
+ }
+ ],
+ "name": "createCollection",
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "string", "name": "name", "type": "string" },
+ { "internalType": "uint8", "name": "decimals", "type": "uint8" },
+ { "internalType": "string", "name": "description", "type": "string" },
+ { "internalType": "string", "name": "tokenPrefix", "type": "string" }
+ ],
+ "name": "createFTCollection",
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "string", "name": "name", "type": "string" },
+ { "internalType": "string", "name": "description", "type": "string" },
+ { "internalType": "string", "name": "tokenPrefix", "type": "string" }
+ ],
+ "name": "createNFTCollection",
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "string", "name": "name", "type": "string" },
+ { "internalType": "string", "name": "description", "type": "string" },
+ { "internalType": "string", "name": "tokenPrefix", "type": "string" }
+ ],
+ "name": "createRFTCollection",
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "collectionAddress",
+ "type": "address"
+ }
+ ],
+ "name": "destroyCollection",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "collectionAddress",
+ "type": "address"
+ }
+ ],
+ "name": "isCollectionExist",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "collection", "type": "address" },
+ { "internalType": "string", "name": "baseUri", "type": "string" }
+ ],
+ "name": "makeCollectionERC721MetadataCompatible",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }
+ ],
+ "name": "supportsInterface",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ }
+]
js-packages/evm-abi/abi/contractHelpers.jsondiffbeforeafterboth--- /dev/null
+++ b/js-packages/evm-abi/abi/contractHelpers.json
@@ -0,0 +1,326 @@
+[
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "contractAddress",
+ "type": "address"
+ }
+ ],
+ "name": "ContractSponsorRemoved",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "contractAddress",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "sponsor",
+ "type": "address"
+ }
+ ],
+ "name": "ContractSponsorSet",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "contractAddress",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "sponsor",
+ "type": "address"
+ }
+ ],
+ "name": "ContractSponsorshipConfirmed",
+ "type": "event"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "contractAddress",
+ "type": "address"
+ },
+ { "internalType": "address", "name": "user", "type": "address" }
+ ],
+ "name": "allowed",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "contractAddress",
+ "type": "address"
+ }
+ ],
+ "name": "allowlistEnabled",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "contractAddress",
+ "type": "address"
+ }
+ ],
+ "name": "confirmSponsorship",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "contractAddress",
+ "type": "address"
+ }
+ ],
+ "name": "contractOwner",
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "contractAddress",
+ "type": "address"
+ }
+ ],
+ "name": "hasPendingSponsor",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "contractAddress",
+ "type": "address"
+ }
+ ],
+ "name": "hasSponsor",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "contractAddress",
+ "type": "address"
+ }
+ ],
+ "name": "removeSponsor",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "contractAddress",
+ "type": "address"
+ }
+ ],
+ "name": "selfSponsoredEnable",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "contractAddress",
+ "type": "address"
+ },
+ { "internalType": "address", "name": "sponsor", "type": "address" }
+ ],
+ "name": "setSponsor",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "contractAddress",
+ "type": "address"
+ },
+ { "internalType": "uint256", "name": "feeLimit", "type": "uint256" }
+ ],
+ "name": "setSponsoringFeeLimit",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "contractAddress",
+ "type": "address"
+ },
+ {
+ "internalType": "enum SponsoringModeT",
+ "name": "mode",
+ "type": "uint8"
+ }
+ ],
+ "name": "setSponsoringMode",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "contractAddress",
+ "type": "address"
+ },
+ { "internalType": "uint32", "name": "rateLimit", "type": "uint32" }
+ ],
+ "name": "setSponsoringRateLimit",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "contractAddress",
+ "type": "address"
+ }
+ ],
+ "name": "sponsor",
+ "outputs": [
+ {
+ "components": [
+ { "internalType": "bool", "name": "status", "type": "bool" },
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "value",
+ "type": "tuple"
+ }
+ ],
+ "internalType": "struct OptionCrossAddress",
+ "name": "",
+ "type": "tuple"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "contractAddress",
+ "type": "address"
+ }
+ ],
+ "name": "sponsoringEnabled",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "contractAddress",
+ "type": "address"
+ }
+ ],
+ "name": "sponsoringFeeLimit",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "contractAddress",
+ "type": "address"
+ }
+ ],
+ "name": "sponsoringRateLimit",
+ "outputs": [{ "internalType": "uint32", "name": "", "type": "uint32" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }
+ ],
+ "name": "supportsInterface",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "contractAddress",
+ "type": "address"
+ },
+ { "internalType": "address", "name": "user", "type": "address" },
+ { "internalType": "bool", "name": "isAllowed", "type": "bool" }
+ ],
+ "name": "toggleAllowed",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "contractAddress",
+ "type": "address"
+ },
+ { "internalType": "bool", "name": "enabled", "type": "bool" }
+ ],
+ "name": "toggleAllowlist",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ }
+]
js-packages/evm-abi/abi/fungible.jsondiffbeforeafterboth--- /dev/null
+++ b/js-packages/evm-abi/abi/fungible.json
@@ -0,0 +1,722 @@
+[
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "Approval",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "Transfer",
+ "type": "event"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "newAdmin",
+ "type": "tuple"
+ }
+ ],
+ "name": "addCollectionAdminCross",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "user",
+ "type": "tuple"
+ }
+ ],
+ "name": "addToCollectionAllowListCross",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "owner", "type": "address" },
+ { "internalType": "address", "name": "spender", "type": "address" }
+ ],
+ "name": "allowance",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "owner",
+ "type": "tuple"
+ },
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "spender",
+ "type": "tuple"
+ }
+ ],
+ "name": "allowanceCross",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "user",
+ "type": "tuple"
+ }
+ ],
+ "name": "allowlistedCross",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "spender", "type": "address" },
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
+ ],
+ "name": "approve",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "spender",
+ "type": "tuple"
+ },
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
+ ],
+ "name": "approveCross",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "owner", "type": "address" }
+ ],
+ "name": "balanceOf",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "owner",
+ "type": "tuple"
+ }
+ ],
+ "name": "balanceOfCross",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "from",
+ "type": "tuple"
+ },
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
+ ],
+ "name": "burnFromCross",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "newOwner",
+ "type": "tuple"
+ }
+ ],
+ "name": "changeCollectionOwnerCross",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "collectionAdmins",
+ "outputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress[]",
+ "name": "",
+ "type": "tuple[]"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "collectionHelperAddress",
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "collectionLimits",
+ "outputs": [
+ {
+ "components": [
+ {
+ "internalType": "enum CollectionLimitField",
+ "name": "field",
+ "type": "uint8"
+ },
+ {
+ "components": [
+ { "internalType": "bool", "name": "status", "type": "bool" },
+ { "internalType": "uint256", "name": "value", "type": "uint256" }
+ ],
+ "internalType": "struct OptionUint256",
+ "name": "value",
+ "type": "tuple"
+ }
+ ],
+ "internalType": "struct CollectionLimit[]",
+ "name": "",
+ "type": "tuple[]"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "collectionNesting",
+ "outputs": [
+ {
+ "components": [
+ { "internalType": "bool", "name": "token_owner", "type": "bool" },
+ {
+ "internalType": "bool",
+ "name": "collection_admin",
+ "type": "bool"
+ },
+ {
+ "internalType": "address[]",
+ "name": "restricted",
+ "type": "address[]"
+ }
+ ],
+ "internalType": "struct CollectionNestingAndPermission",
+ "name": "",
+ "type": "tuple"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "collectionOwner",
+ "outputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "",
+ "type": "tuple"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "string[]", "name": "keys", "type": "string[]" }
+ ],
+ "name": "collectionProperties",
+ "outputs": [
+ {
+ "components": [
+ { "internalType": "string", "name": "key", "type": "string" },
+ { "internalType": "bytes", "name": "value", "type": "bytes" }
+ ],
+ "internalType": "struct Property[]",
+ "name": "",
+ "type": "tuple[]"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],
+ "name": "collectionProperty",
+ "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "collectionSponsor",
+ "outputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "",
+ "type": "tuple"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "confirmCollectionSponsorship",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "contractAddress",
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "decimals",
+ "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "string[]", "name": "keys", "type": "string[]" }
+ ],
+ "name": "deleteCollectionProperties",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "description",
+ "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "hasCollectionPendingSponsor",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "user",
+ "type": "tuple"
+ }
+ ],
+ "name": "isOwnerOrAdminCross",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "to", "type": "address" },
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
+ ],
+ "name": "mint",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "to", "type": "address" },
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
+ ],
+ "internalType": "struct AmountForAddress[]",
+ "name": "amounts",
+ "type": "tuple[]"
+ }
+ ],
+ "name": "mintBulk",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "to",
+ "type": "tuple"
+ },
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
+ ],
+ "name": "mintCross",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "name",
+ "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "admin",
+ "type": "tuple"
+ }
+ ],
+ "name": "removeCollectionAdminCross",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "removeCollectionSponsor",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "user",
+ "type": "tuple"
+ }
+ ],
+ "name": "removeFromCollectionAllowListCross",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "enum AccessMode", "name": "mode", "type": "uint8" }
+ ],
+ "name": "setCollectionAccess",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ {
+ "internalType": "enum CollectionLimitField",
+ "name": "field",
+ "type": "uint8"
+ },
+ {
+ "components": [
+ { "internalType": "bool", "name": "status", "type": "bool" },
+ { "internalType": "uint256", "name": "value", "type": "uint256" }
+ ],
+ "internalType": "struct OptionUint256",
+ "name": "value",
+ "type": "tuple"
+ }
+ ],
+ "internalType": "struct CollectionLimit",
+ "name": "limit",
+ "type": "tuple"
+ }
+ ],
+ "name": "setCollectionLimit",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [{ "internalType": "bool", "name": "mode", "type": "bool" }],
+ "name": "setCollectionMintMode",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "bool", "name": "token_owner", "type": "bool" },
+ {
+ "internalType": "bool",
+ "name": "collection_admin",
+ "type": "bool"
+ },
+ {
+ "internalType": "address[]",
+ "name": "restricted",
+ "type": "address[]"
+ }
+ ],
+ "internalType": "struct CollectionNestingAndPermission",
+ "name": "collectionNestingAndPermissions",
+ "type": "tuple"
+ }
+ ],
+ "name": "setCollectionNesting",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "string", "name": "key", "type": "string" },
+ { "internalType": "bytes", "name": "value", "type": "bytes" }
+ ],
+ "internalType": "struct Property[]",
+ "name": "properties",
+ "type": "tuple[]"
+ }
+ ],
+ "name": "setCollectionProperties",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "sponsor",
+ "type": "tuple"
+ }
+ ],
+ "name": "setCollectionSponsorCross",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }
+ ],
+ "name": "supportsInterface",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "symbol",
+ "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "totalSupply",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "to", "type": "address" },
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
+ ],
+ "name": "transfer",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "to",
+ "type": "tuple"
+ },
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
+ ],
+ "name": "transferCross",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "from", "type": "address" },
+ { "internalType": "address", "name": "to", "type": "address" },
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
+ ],
+ "name": "transferFrom",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "from",
+ "type": "tuple"
+ },
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "to",
+ "type": "tuple"
+ },
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
+ ],
+ "name": "transferFromCross",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "uniqueCollectionType",
+ "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
+ "stateMutability": "view",
+ "type": "function"
+ }
+]
js-packages/evm-abi/abi/fungibleDeprecated.jsondiffbeforeafterboth--- /dev/null
+++ b/js-packages/evm-abi/abi/fungibleDeprecated.json
@@ -0,0 +1,151 @@
+[
+ {
+ "inputs": [
+ { "internalType": "address", "name": "newAdmin", "type": "address" }
+ ],
+ "name": "addCollectionAdmin",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "user", "type": "address" }
+ ],
+ "name": "addToCollectionAllowList",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "from", "type": "address" },
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
+ ],
+ "name": "burnFrom",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "newOwner", "type": "address" }
+ ],
+ "name": "changeCollectionOwner",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],
+ "name": "deleteCollectionProperty",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "user", "type": "address" }
+ ],
+ "name": "isOwnerOrAdmin",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "admin", "type": "address" }
+ ],
+ "name": "removeCollectionAdmin",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "user", "type": "address" }
+ ],
+ "name": "removeFromCollectionAllowList",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "string", "name": "key", "type": "string" },
+ { "internalType": "bytes", "name": "value", "type": "bytes" }
+ ],
+ "name": "setCollectionProperty",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "sponsor", "type": "address" }
+ ],
+ "name": "setCollectionSponsor",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "collectionNestingPermissions",
+ "outputs": [
+ {
+ "components": [
+ {
+ "internalType": "enum CollectionPermissionField",
+ "name": "field",
+ "type": "uint8"
+ },
+ { "internalType": "bool", "name": "value", "type": "bool" }
+ ],
+ "internalType": "struct CollectionNestingPermission[]",
+ "name": "",
+ "type": "tuple[]"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "collectionNestingRestrictedCollectionIds",
+ "outputs": [
+ {
+ "components": [
+ { "internalType": "bool", "name": "token_owner", "type": "bool" },
+ { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }
+ ],
+ "internalType": "struct CollectionNesting",
+ "name": "",
+ "type": "tuple"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [{ "internalType": "bool", "name": "enable", "type": "bool" }],
+ "name": "setCollectionNesting",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "bool", "name": "enable", "type": "bool" },
+ {
+ "internalType": "address[]",
+ "name": "collections",
+ "type": "address[]"
+ }
+ ],
+ "name": "setCollectionNesting",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ }
+]
js-packages/evm-abi/abi/nativeFungible.jsondiffbeforeafterboth--- /dev/null
+++ b/js-packages/evm-abi/abi/nativeFungible.json
@@ -0,0 +1,201 @@
+[
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "Approval",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "Transfer",
+ "type": "event"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "owner", "type": "address" },
+ { "internalType": "address", "name": "spender", "type": "address" }
+ ],
+ "name": "allowance",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "spender", "type": "address" },
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
+ ],
+ "name": "approve",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "owner", "type": "address" }
+ ],
+ "name": "balanceOf",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "owner",
+ "type": "tuple"
+ }
+ ],
+ "name": "balanceOfCross",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "decimals",
+ "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "name",
+ "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }
+ ],
+ "name": "supportsInterface",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "symbol",
+ "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "totalSupply",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "to", "type": "address" },
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
+ ],
+ "name": "transfer",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "to",
+ "type": "tuple"
+ },
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
+ ],
+ "name": "transferCross",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "from", "type": "address" },
+ { "internalType": "address", "name": "to", "type": "address" },
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
+ ],
+ "name": "transferFrom",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "from",
+ "type": "tuple"
+ },
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "to",
+ "type": "tuple"
+ },
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
+ ],
+ "name": "transferFromCross",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ }
+]
js-packages/evm-abi/abi/nonFungible.jsondiffbeforeafterboth--- /dev/null
+++ b/js-packages/evm-abi/abi/nonFungible.json
@@ -0,0 +1,988 @@
+[
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "approved",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "uint256",
+ "name": "tokenId",
+ "type": "uint256"
+ }
+ ],
+ "name": "Approval",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "operator",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "bool",
+ "name": "approved",
+ "type": "bool"
+ }
+ ],
+ "name": "ApprovalForAll",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "uint256",
+ "name": "tokenId",
+ "type": "uint256"
+ }
+ ],
+ "name": "TokenChanged",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "uint256",
+ "name": "tokenId",
+ "type": "uint256"
+ }
+ ],
+ "name": "Transfer",
+ "type": "event"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "newAdmin",
+ "type": "tuple"
+ }
+ ],
+ "name": "addCollectionAdminCross",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "user",
+ "type": "tuple"
+ }
+ ],
+ "name": "addToCollectionAllowListCross",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "user",
+ "type": "tuple"
+ }
+ ],
+ "name": "allowlistedCross",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "approved", "type": "address" },
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "approve",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "approved",
+ "type": "tuple"
+ },
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "approveCross",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "owner", "type": "address" }
+ ],
+ "name": "balanceOf",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "owner",
+ "type": "tuple"
+ }
+ ],
+ "name": "balanceOfCross",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "burn",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "from",
+ "type": "tuple"
+ },
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "burnFromCross",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "newOwner",
+ "type": "tuple"
+ }
+ ],
+ "name": "changeCollectionOwnerCross",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "collectionAdmins",
+ "outputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress[]",
+ "name": "",
+ "type": "tuple[]"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "collectionHelperAddress",
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "collectionLimits",
+ "outputs": [
+ {
+ "components": [
+ {
+ "internalType": "enum CollectionLimitField",
+ "name": "field",
+ "type": "uint8"
+ },
+ {
+ "components": [
+ { "internalType": "bool", "name": "status", "type": "bool" },
+ { "internalType": "uint256", "name": "value", "type": "uint256" }
+ ],
+ "internalType": "struct OptionUint256",
+ "name": "value",
+ "type": "tuple"
+ }
+ ],
+ "internalType": "struct CollectionLimit[]",
+ "name": "",
+ "type": "tuple[]"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "collectionNesting",
+ "outputs": [
+ {
+ "components": [
+ { "internalType": "bool", "name": "token_owner", "type": "bool" },
+ {
+ "internalType": "bool",
+ "name": "collection_admin",
+ "type": "bool"
+ },
+ {
+ "internalType": "address[]",
+ "name": "restricted",
+ "type": "address[]"
+ }
+ ],
+ "internalType": "struct CollectionNestingAndPermission",
+ "name": "",
+ "type": "tuple"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "collectionOwner",
+ "outputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "",
+ "type": "tuple"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "string[]", "name": "keys", "type": "string[]" }
+ ],
+ "name": "collectionProperties",
+ "outputs": [
+ {
+ "components": [
+ { "internalType": "string", "name": "key", "type": "string" },
+ { "internalType": "bytes", "name": "value", "type": "bytes" }
+ ],
+ "internalType": "struct Property[]",
+ "name": "",
+ "type": "tuple[]"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],
+ "name": "collectionProperty",
+ "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "collectionSponsor",
+ "outputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "",
+ "type": "tuple"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "confirmCollectionSponsorship",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "contractAddress",
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "string[]", "name": "keys", "type": "string[]" }
+ ],
+ "name": "deleteCollectionProperties",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
+ { "internalType": "string[]", "name": "keys", "type": "string[]" }
+ ],
+ "name": "deleteProperties",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "description",
+ "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "getApproved",
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "hasCollectionPendingSponsor",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "owner", "type": "address" },
+ { "internalType": "address", "name": "operator", "type": "address" }
+ ],
+ "name": "isApprovedForAll",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "user",
+ "type": "tuple"
+ }
+ ],
+ "name": "isOwnerOrAdminCross",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [{ "internalType": "address", "name": "to", "type": "address" }],
+ "name": "mint",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "owner",
+ "type": "tuple"
+ },
+ {
+ "components": [
+ { "internalType": "string", "name": "key", "type": "string" },
+ { "internalType": "bytes", "name": "value", "type": "bytes" }
+ ],
+ "internalType": "struct Property[]",
+ "name": "properties",
+ "type": "tuple[]"
+ }
+ ],
+ "internalType": "struct MintTokenData[]",
+ "name": "data",
+ "type": "tuple[]"
+ }
+ ],
+ "name": "mintBulkCross",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "to",
+ "type": "tuple"
+ },
+ {
+ "components": [
+ { "internalType": "string", "name": "key", "type": "string" },
+ { "internalType": "bytes", "name": "value", "type": "bytes" }
+ ],
+ "internalType": "struct Property[]",
+ "name": "properties",
+ "type": "tuple[]"
+ }
+ ],
+ "name": "mintCross",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "to", "type": "address" },
+ { "internalType": "string", "name": "tokenUri", "type": "string" }
+ ],
+ "name": "mintWithTokenURI",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "name",
+ "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "nextTokenId",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "ownerOf",
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "ownerOfCross",
+ "outputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "",
+ "type": "tuple"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
+ { "internalType": "string[]", "name": "keys", "type": "string[]" }
+ ],
+ "name": "properties",
+ "outputs": [
+ {
+ "components": [
+ { "internalType": "string", "name": "key", "type": "string" },
+ { "internalType": "bytes", "name": "value", "type": "bytes" }
+ ],
+ "internalType": "struct Property[]",
+ "name": "",
+ "type": "tuple[]"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
+ { "internalType": "string", "name": "key", "type": "string" }
+ ],
+ "name": "property",
+ "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "admin",
+ "type": "tuple"
+ }
+ ],
+ "name": "removeCollectionAdminCross",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "removeCollectionSponsor",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "user",
+ "type": "tuple"
+ }
+ ],
+ "name": "removeFromCollectionAllowListCross",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "from", "type": "address" },
+ { "internalType": "address", "name": "to", "type": "address" },
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "safeTransferFrom",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "from", "type": "address" },
+ { "internalType": "address", "name": "to", "type": "address" },
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
+ { "internalType": "bytes", "name": "data", "type": "bytes" }
+ ],
+ "name": "safeTransferFrom",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "operator", "type": "address" },
+ { "internalType": "bool", "name": "approved", "type": "bool" }
+ ],
+ "name": "setApprovalForAll",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "enum AccessMode", "name": "mode", "type": "uint8" }
+ ],
+ "name": "setCollectionAccess",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ {
+ "internalType": "enum CollectionLimitField",
+ "name": "field",
+ "type": "uint8"
+ },
+ {
+ "components": [
+ { "internalType": "bool", "name": "status", "type": "bool" },
+ { "internalType": "uint256", "name": "value", "type": "uint256" }
+ ],
+ "internalType": "struct OptionUint256",
+ "name": "value",
+ "type": "tuple"
+ }
+ ],
+ "internalType": "struct CollectionLimit",
+ "name": "limit",
+ "type": "tuple"
+ }
+ ],
+ "name": "setCollectionLimit",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [{ "internalType": "bool", "name": "mode", "type": "bool" }],
+ "name": "setCollectionMintMode",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "bool", "name": "token_owner", "type": "bool" },
+ {
+ "internalType": "bool",
+ "name": "collection_admin",
+ "type": "bool"
+ },
+ {
+ "internalType": "address[]",
+ "name": "restricted",
+ "type": "address[]"
+ }
+ ],
+ "internalType": "struct CollectionNestingAndPermission",
+ "name": "collectionNestingAndPermissions",
+ "type": "tuple"
+ }
+ ],
+ "name": "setCollectionNesting",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "string", "name": "key", "type": "string" },
+ { "internalType": "bytes", "name": "value", "type": "bytes" }
+ ],
+ "internalType": "struct Property[]",
+ "name": "properties",
+ "type": "tuple[]"
+ }
+ ],
+ "name": "setCollectionProperties",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "sponsor",
+ "type": "tuple"
+ }
+ ],
+ "name": "setCollectionSponsorCross",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
+ {
+ "components": [
+ { "internalType": "string", "name": "key", "type": "string" },
+ { "internalType": "bytes", "name": "value", "type": "bytes" }
+ ],
+ "internalType": "struct Property[]",
+ "name": "properties",
+ "type": "tuple[]"
+ }
+ ],
+ "name": "setProperties",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "string", "name": "key", "type": "string" },
+ {
+ "components": [
+ {
+ "internalType": "enum TokenPermissionField",
+ "name": "code",
+ "type": "uint8"
+ },
+ { "internalType": "bool", "name": "value", "type": "bool" }
+ ],
+ "internalType": "struct PropertyPermission[]",
+ "name": "permissions",
+ "type": "tuple[]"
+ }
+ ],
+ "internalType": "struct TokenPropertyPermission[]",
+ "name": "permissions",
+ "type": "tuple[]"
+ }
+ ],
+ "name": "setTokenPropertyPermissions",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }
+ ],
+ "name": "supportsInterface",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "symbol",
+ "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "index", "type": "uint256" }
+ ],
+ "name": "tokenByIndex",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "owner", "type": "address" },
+ { "internalType": "uint256", "name": "index", "type": "uint256" }
+ ],
+ "name": "tokenOfOwnerByIndex",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "tokenPropertyPermissions",
+ "outputs": [
+ {
+ "components": [
+ { "internalType": "string", "name": "key", "type": "string" },
+ {
+ "components": [
+ {
+ "internalType": "enum TokenPermissionField",
+ "name": "code",
+ "type": "uint8"
+ },
+ { "internalType": "bool", "name": "value", "type": "bool" }
+ ],
+ "internalType": "struct PropertyPermission[]",
+ "name": "permissions",
+ "type": "tuple[]"
+ }
+ ],
+ "internalType": "struct TokenPropertyPermission[]",
+ "name": "",
+ "type": "tuple[]"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "tokenURI",
+ "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "totalSupply",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "to", "type": "address" },
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "transfer",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "to",
+ "type": "tuple"
+ },
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "transferCross",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "from", "type": "address" },
+ { "internalType": "address", "name": "to", "type": "address" },
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "transferFrom",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "from",
+ "type": "tuple"
+ },
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "to",
+ "type": "tuple"
+ },
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "transferFromCross",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "uniqueCollectionType",
+ "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
+ "stateMutability": "view",
+ "type": "function"
+ }
+]
js-packages/evm-abi/abi/nonFungibleDeprecated.jsondiffbeforeafterboth--- /dev/null
+++ b/js-packages/evm-abi/abi/nonFungibleDeprecated.json
@@ -0,0 +1,172 @@
+[
+ {
+ "inputs": [
+ { "internalType": "address", "name": "newAdmin", "type": "address" }
+ ],
+ "name": "addCollectionAdmin",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "user", "type": "address" }
+ ],
+ "name": "addToCollectionAllowList",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "from", "type": "address" },
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "burnFrom",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],
+ "name": "deleteCollectionProperty",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "user", "type": "address" }
+ ],
+ "name": "isOwnerOrAdmin",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "admin", "type": "address" }
+ ],
+ "name": "removeCollectionAdmin",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "user", "type": "address" }
+ ],
+ "name": "removeFromCollectionAllowList",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "string", "name": "key", "type": "string" },
+ { "internalType": "bytes", "name": "value", "type": "bytes" }
+ ],
+ "name": "setCollectionProperty",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "sponsor", "type": "address" }
+ ],
+ "name": "setCollectionSponsor",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
+ { "internalType": "string", "name": "key", "type": "string" },
+ { "internalType": "bytes", "name": "value", "type": "bytes" }
+ ],
+ "name": "setProperty",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "newOwner", "type": "address" }
+ ],
+ "name": "changeCollectionOwner",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
+ { "internalType": "string", "name": "key", "type": "string" }
+ ],
+ "name": "deleteProperty",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "collectionNestingPermissions",
+ "outputs": [
+ {
+ "components": [
+ {
+ "internalType": "enum CollectionPermissionField",
+ "name": "field",
+ "type": "uint8"
+ },
+ { "internalType": "bool", "name": "value", "type": "bool" }
+ ],
+ "internalType": "struct CollectionNestingPermission[]",
+ "name": "",
+ "type": "tuple[]"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "collectionNestingRestrictedCollectionIds",
+ "outputs": [
+ {
+ "components": [
+ { "internalType": "bool", "name": "token_owner", "type": "bool" },
+ { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }
+ ],
+ "internalType": "struct CollectionNesting",
+ "name": "",
+ "type": "tuple"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [{ "internalType": "bool", "name": "enable", "type": "bool" }],
+ "name": "setCollectionNesting",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "bool", "name": "enable", "type": "bool" },
+ {
+ "internalType": "address[]",
+ "name": "collections",
+ "type": "address[]"
+ }
+ ],
+ "name": "setCollectionNesting",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ }
+]
js-packages/evm-abi/abi/reFungible.jsondiffbeforeafterboth--- /dev/null
+++ b/js-packages/evm-abi/abi/reFungible.json
@@ -0,0 +1,995 @@
+[
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "approved",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "uint256",
+ "name": "tokenId",
+ "type": "uint256"
+ }
+ ],
+ "name": "Approval",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "operator",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "bool",
+ "name": "approved",
+ "type": "bool"
+ }
+ ],
+ "name": "ApprovalForAll",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "uint256",
+ "name": "tokenId",
+ "type": "uint256"
+ }
+ ],
+ "name": "TokenChanged",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "uint256",
+ "name": "tokenId",
+ "type": "uint256"
+ }
+ ],
+ "name": "Transfer",
+ "type": "event"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "newAdmin",
+ "type": "tuple"
+ }
+ ],
+ "name": "addCollectionAdminCross",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "user",
+ "type": "tuple"
+ }
+ ],
+ "name": "addToCollectionAllowListCross",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "user",
+ "type": "tuple"
+ }
+ ],
+ "name": "allowlistedCross",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "approved", "type": "address" },
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "approve",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "owner", "type": "address" }
+ ],
+ "name": "balanceOf",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "owner",
+ "type": "tuple"
+ }
+ ],
+ "name": "balanceOfCross",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "burn",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "from",
+ "type": "tuple"
+ },
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "burnFromCross",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "newOwner",
+ "type": "tuple"
+ }
+ ],
+ "name": "changeCollectionOwnerCross",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "collectionAdmins",
+ "outputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress[]",
+ "name": "",
+ "type": "tuple[]"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "collectionHelperAddress",
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "collectionLimits",
+ "outputs": [
+ {
+ "components": [
+ {
+ "internalType": "enum CollectionLimitField",
+ "name": "field",
+ "type": "uint8"
+ },
+ {
+ "components": [
+ { "internalType": "bool", "name": "status", "type": "bool" },
+ { "internalType": "uint256", "name": "value", "type": "uint256" }
+ ],
+ "internalType": "struct OptionUint256",
+ "name": "value",
+ "type": "tuple"
+ }
+ ],
+ "internalType": "struct CollectionLimit[]",
+ "name": "",
+ "type": "tuple[]"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "collectionNesting",
+ "outputs": [
+ {
+ "components": [
+ { "internalType": "bool", "name": "token_owner", "type": "bool" },
+ {
+ "internalType": "bool",
+ "name": "collection_admin",
+ "type": "bool"
+ },
+ {
+ "internalType": "address[]",
+ "name": "restricted",
+ "type": "address[]"
+ }
+ ],
+ "internalType": "struct CollectionNestingAndPermission",
+ "name": "",
+ "type": "tuple"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "collectionOwner",
+ "outputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "",
+ "type": "tuple"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "string[]", "name": "keys", "type": "string[]" }
+ ],
+ "name": "collectionProperties",
+ "outputs": [
+ {
+ "components": [
+ { "internalType": "string", "name": "key", "type": "string" },
+ { "internalType": "bytes", "name": "value", "type": "bytes" }
+ ],
+ "internalType": "struct Property[]",
+ "name": "",
+ "type": "tuple[]"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],
+ "name": "collectionProperty",
+ "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "collectionSponsor",
+ "outputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "",
+ "type": "tuple"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "confirmCollectionSponsorship",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "contractAddress",
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "string[]", "name": "keys", "type": "string[]" }
+ ],
+ "name": "deleteCollectionProperties",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
+ { "internalType": "string[]", "name": "keys", "type": "string[]" }
+ ],
+ "name": "deleteProperties",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "description",
+ "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "getApproved",
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "hasCollectionPendingSponsor",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "owner", "type": "address" },
+ { "internalType": "address", "name": "operator", "type": "address" }
+ ],
+ "name": "isApprovedForAll",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "user",
+ "type": "tuple"
+ }
+ ],
+ "name": "isOwnerOrAdminCross",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [{ "internalType": "address", "name": "to", "type": "address" }],
+ "name": "mint",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ {
+ "components": [
+ {
+ "components": [
+ {
+ "internalType": "address",
+ "name": "eth",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "sub",
+ "type": "uint256"
+ }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "owner",
+ "type": "tuple"
+ },
+ { "internalType": "uint128", "name": "pieces", "type": "uint128" }
+ ],
+ "internalType": "struct OwnerPieces[]",
+ "name": "owners",
+ "type": "tuple[]"
+ },
+ {
+ "components": [
+ { "internalType": "string", "name": "key", "type": "string" },
+ { "internalType": "bytes", "name": "value", "type": "bytes" }
+ ],
+ "internalType": "struct Property[]",
+ "name": "properties",
+ "type": "tuple[]"
+ }
+ ],
+ "internalType": "struct MintTokenData[]",
+ "name": "tokenProperties",
+ "type": "tuple[]"
+ }
+ ],
+ "name": "mintBulkCross",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "to",
+ "type": "tuple"
+ },
+ {
+ "components": [
+ { "internalType": "string", "name": "key", "type": "string" },
+ { "internalType": "bytes", "name": "value", "type": "bytes" }
+ ],
+ "internalType": "struct Property[]",
+ "name": "properties",
+ "type": "tuple[]"
+ }
+ ],
+ "name": "mintCross",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "to", "type": "address" },
+ { "internalType": "string", "name": "tokenUri", "type": "string" }
+ ],
+ "name": "mintWithTokenURI",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "name",
+ "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "nextTokenId",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "ownerOf",
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "ownerOfCross",
+ "outputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "",
+ "type": "tuple"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
+ { "internalType": "string[]", "name": "keys", "type": "string[]" }
+ ],
+ "name": "properties",
+ "outputs": [
+ {
+ "components": [
+ { "internalType": "string", "name": "key", "type": "string" },
+ { "internalType": "bytes", "name": "value", "type": "bytes" }
+ ],
+ "internalType": "struct Property[]",
+ "name": "",
+ "type": "tuple[]"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
+ { "internalType": "string", "name": "key", "type": "string" }
+ ],
+ "name": "property",
+ "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "admin",
+ "type": "tuple"
+ }
+ ],
+ "name": "removeCollectionAdminCross",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "removeCollectionSponsor",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "user",
+ "type": "tuple"
+ }
+ ],
+ "name": "removeFromCollectionAllowListCross",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "from", "type": "address" },
+ { "internalType": "address", "name": "to", "type": "address" },
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "safeTransferFrom",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "from", "type": "address" },
+ { "internalType": "address", "name": "to", "type": "address" },
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
+ { "internalType": "bytes", "name": "data", "type": "bytes" }
+ ],
+ "name": "safeTransferFrom",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "operator", "type": "address" },
+ { "internalType": "bool", "name": "approved", "type": "bool" }
+ ],
+ "name": "setApprovalForAll",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "enum AccessMode", "name": "mode", "type": "uint8" }
+ ],
+ "name": "setCollectionAccess",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ {
+ "internalType": "enum CollectionLimitField",
+ "name": "field",
+ "type": "uint8"
+ },
+ {
+ "components": [
+ { "internalType": "bool", "name": "status", "type": "bool" },
+ { "internalType": "uint256", "name": "value", "type": "uint256" }
+ ],
+ "internalType": "struct OptionUint256",
+ "name": "value",
+ "type": "tuple"
+ }
+ ],
+ "internalType": "struct CollectionLimit",
+ "name": "limit",
+ "type": "tuple"
+ }
+ ],
+ "name": "setCollectionLimit",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [{ "internalType": "bool", "name": "mode", "type": "bool" }],
+ "name": "setCollectionMintMode",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "bool", "name": "token_owner", "type": "bool" },
+ {
+ "internalType": "bool",
+ "name": "collection_admin",
+ "type": "bool"
+ },
+ {
+ "internalType": "address[]",
+ "name": "restricted",
+ "type": "address[]"
+ }
+ ],
+ "internalType": "struct CollectionNestingAndPermission",
+ "name": "collectionNestingAndPermissions",
+ "type": "tuple"
+ }
+ ],
+ "name": "setCollectionNesting",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "string", "name": "key", "type": "string" },
+ { "internalType": "bytes", "name": "value", "type": "bytes" }
+ ],
+ "internalType": "struct Property[]",
+ "name": "properties",
+ "type": "tuple[]"
+ }
+ ],
+ "name": "setCollectionProperties",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "sponsor",
+ "type": "tuple"
+ }
+ ],
+ "name": "setCollectionSponsorCross",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
+ {
+ "components": [
+ { "internalType": "string", "name": "key", "type": "string" },
+ { "internalType": "bytes", "name": "value", "type": "bytes" }
+ ],
+ "internalType": "struct Property[]",
+ "name": "properties",
+ "type": "tuple[]"
+ }
+ ],
+ "name": "setProperties",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "string", "name": "key", "type": "string" },
+ {
+ "components": [
+ {
+ "internalType": "enum TokenPermissionField",
+ "name": "code",
+ "type": "uint8"
+ },
+ { "internalType": "bool", "name": "value", "type": "bool" }
+ ],
+ "internalType": "struct PropertyPermission[]",
+ "name": "permissions",
+ "type": "tuple[]"
+ }
+ ],
+ "internalType": "struct TokenPropertyPermission[]",
+ "name": "permissions",
+ "type": "tuple[]"
+ }
+ ],
+ "name": "setTokenPropertyPermissions",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }
+ ],
+ "name": "supportsInterface",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "symbol",
+ "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "index", "type": "uint256" }
+ ],
+ "name": "tokenByIndex",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "token", "type": "uint256" }
+ ],
+ "name": "tokenContractAddress",
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "owner", "type": "address" },
+ { "internalType": "uint256", "name": "index", "type": "uint256" }
+ ],
+ "name": "tokenOfOwnerByIndex",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "tokenPropertyPermissions",
+ "outputs": [
+ {
+ "components": [
+ { "internalType": "string", "name": "key", "type": "string" },
+ {
+ "components": [
+ {
+ "internalType": "enum TokenPermissionField",
+ "name": "code",
+ "type": "uint8"
+ },
+ { "internalType": "bool", "name": "value", "type": "bool" }
+ ],
+ "internalType": "struct PropertyPermission[]",
+ "name": "permissions",
+ "type": "tuple[]"
+ }
+ ],
+ "internalType": "struct TokenPropertyPermission[]",
+ "name": "",
+ "type": "tuple[]"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "tokenURI",
+ "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "totalSupply",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "to", "type": "address" },
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "transfer",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "to",
+ "type": "tuple"
+ },
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "transferCross",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "from", "type": "address" },
+ { "internalType": "address", "name": "to", "type": "address" },
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "transferFrom",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "from",
+ "type": "tuple"
+ },
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "to",
+ "type": "tuple"
+ },
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "transferFromCross",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "uniqueCollectionType",
+ "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
+ "stateMutability": "view",
+ "type": "function"
+ }
+]
js-packages/evm-abi/abi/reFungibleDeprecated.jsondiffbeforeafterboth--- /dev/null
+++ b/js-packages/evm-abi/abi/reFungibleDeprecated.json
@@ -0,0 +1,200 @@
+[
+ {
+ "inputs": [
+ { "internalType": "address", "name": "newAdmin", "type": "address" }
+ ],
+ "name": "addCollectionAdmin",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "user", "type": "address" }
+ ],
+ "name": "addToCollectionAllowList",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "from", "type": "address" },
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+ ],
+ "name": "burnFrom",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],
+ "name": "deleteCollectionProperty",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "user", "type": "address" }
+ ],
+ "name": "isOwnerOrAdmin",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "admin", "type": "address" }
+ ],
+ "name": "removeCollectionAdmin",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "user", "type": "address" }
+ ],
+ "name": "removeFromCollectionAllowList",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "string", "name": "key", "type": "string" },
+ { "internalType": "bytes", "name": "value", "type": "bytes" }
+ ],
+ "name": "setCollectionProperty",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "sponsor", "type": "address" }
+ ],
+ "name": "setCollectionSponsor",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
+ { "internalType": "string", "name": "key", "type": "string" },
+ { "internalType": "bytes", "name": "value", "type": "bytes" }
+ ],
+ "name": "setProperty",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "newOwner", "type": "address" }
+ ],
+ "name": "changeCollectionOwner",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
+ { "internalType": "string", "name": "key", "type": "string" }
+ ],
+ "name": "deleteProperty",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "to", "type": "address" },
+ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }
+ ],
+ "name": "mintBulk",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "to", "type": "address" },
+ {
+ "components": [
+ { "internalType": "uint256", "name": "field_0", "type": "uint256" },
+ { "internalType": "string", "name": "field_1", "type": "string" }
+ ],
+ "internalType": "struct Tuple0[]",
+ "name": "tokens",
+ "type": "tuple[]"
+ }
+ ],
+ "name": "mintBulkWithTokenURI",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "collectionNestingPermissions",
+ "outputs": [
+ {
+ "components": [
+ {
+ "internalType": "enum CollectionPermissionField",
+ "name": "field",
+ "type": "uint8"
+ },
+ { "internalType": "bool", "name": "value", "type": "bool" }
+ ],
+ "internalType": "struct CollectionNestingPermission[]",
+ "name": "",
+ "type": "tuple[]"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "collectionNestingRestrictedCollectionIds",
+ "outputs": [
+ {
+ "components": [
+ { "internalType": "bool", "name": "token_owner", "type": "bool" },
+ { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }
+ ],
+ "internalType": "struct CollectionNesting",
+ "name": "",
+ "type": "tuple"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [{ "internalType": "bool", "name": "enable", "type": "bool" }],
+ "name": "setCollectionNesting",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "bool", "name": "enable", "type": "bool" },
+ {
+ "internalType": "address[]",
+ "name": "collections",
+ "type": "address[]"
+ }
+ ],
+ "name": "setCollectionNesting",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ }
+]
js-packages/evm-abi/abi/reFungibleToken.jsondiffbeforeafterboth--- /dev/null
+++ b/js-packages/evm-abi/abi/reFungibleToken.json
@@ -0,0 +1,286 @@
+[
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "Approval",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "Transfer",
+ "type": "event"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "owner", "type": "address" },
+ { "internalType": "address", "name": "spender", "type": "address" }
+ ],
+ "name": "allowance",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "owner",
+ "type": "tuple"
+ },
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "spender",
+ "type": "tuple"
+ }
+ ],
+ "name": "allowanceCross",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "spender", "type": "address" },
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
+ ],
+ "name": "approve",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "spender",
+ "type": "tuple"
+ },
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
+ ],
+ "name": "approveCross",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "owner", "type": "address" }
+ ],
+ "name": "balanceOf",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "owner",
+ "type": "tuple"
+ }
+ ],
+ "name": "balanceOfCross",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "from",
+ "type": "tuple"
+ },
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
+ ],
+ "name": "burnFromCross",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "decimals",
+ "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "name",
+ "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "parentToken",
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "parentTokenId",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
+ ],
+ "name": "repartition",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }
+ ],
+ "name": "supportsInterface",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "symbol",
+ "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "totalSupply",
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "to", "type": "address" },
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
+ ],
+ "name": "transfer",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "to",
+ "type": "tuple"
+ },
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
+ ],
+ "name": "transferCross",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ { "internalType": "address", "name": "from", "type": "address" },
+ { "internalType": "address", "name": "to", "type": "address" },
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
+ ],
+ "name": "transferFrom",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "from",
+ "type": "tuple"
+ },
+ {
+ "components": [
+ { "internalType": "address", "name": "eth", "type": "address" },
+ { "internalType": "uint256", "name": "sub", "type": "uint256" }
+ ],
+ "internalType": "struct CrossAddress",
+ "name": "to",
+ "type": "tuple"
+ },
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
+ ],
+ "name": "transferFromCross",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ }
+]
js-packages/evm-abi/abi/reFungibleTokenDeprecated.jsondiffbeforeafterboth--- /dev/null
+++ b/js-packages/evm-abi/abi/reFungibleTokenDeprecated.json
@@ -0,0 +1,12 @@
+[
+ {
+ "inputs": [
+ { "internalType": "address", "name": "from", "type": "address" },
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
+ ],
+ "name": "burnFrom",
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ }
+]
js-packages/evm-abi/api/CollectionHelpers.soldiffbeforeafterboth--- /dev/null
+++ b/js-packages/evm-abi/api/CollectionHelpers.sol
@@ -0,0 +1,233 @@
+// 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);
+}
+
+/// @dev inlined interface
+interface CollectionHelpersEvents {
+ event CollectionCreated(address indexed owner, address indexed collectionId);
+ event CollectionDestroyed(address indexed collectionId);
+ event CollectionChanged(address indexed collectionId);
+}
+
+/// @title Contract, which allows users to operate with collections
+/// @dev the ERC-165 identifier for this interface is 0x94e5af0d
+interface CollectionHelpers is Dummy, ERC165, CollectionHelpersEvents {
+ /// Create a collection
+ /// @return address Address of the newly created collection
+ /// @dev EVM selector for this function is: 0x72b5bea7,
+ /// or in textual repr: createCollection((string,string,string,uint8,uint8,(string,bytes)[],(string,(uint8,bool)[])[],(address,uint256)[],(bool,bool,address[]),(uint8,uint256)[],(address,uint256),uint8))
+ function createCollection(CreateCollectionData memory data) external payable returns (address);
+
+ /// Create an NFT collection
+ /// @param name Name of the collection
+ /// @param description Informative description of the collection
+ /// @param tokenPrefix Token prefix to represent the collection tokens in UI and user applications
+ /// @return address Address of the newly created collection
+ /// @dev EVM selector for this function is: 0x844af658,
+ /// or in textual repr: createNFTCollection(string,string,string)
+ function createNFTCollection(
+ string memory name,
+ string memory description,
+ string memory tokenPrefix
+ ) external payable returns (address);
+
+ // /// Create an NFT collection
+ // /// @param name Name of the collection
+ // /// @param description Informative description of the collection
+ // /// @param tokenPrefix Token prefix to represent the collection tokens in UI and user applications
+ // /// @return address Address of the newly created collection
+ // /// @dev EVM selector for this function is: 0xe34a6844,
+ // /// or in textual repr: createNonfungibleCollection(string,string,string)
+ // function createNonfungibleCollection(string memory name, string memory description, string memory tokenPrefix) external payable returns (address);
+
+ /// @dev EVM selector for this function is: 0xab173450,
+ /// or in textual repr: createRFTCollection(string,string,string)
+ function createRFTCollection(
+ string memory name,
+ string memory description,
+ string memory tokenPrefix
+ ) external payable returns (address);
+
+ /// @dev EVM selector for this function is: 0x7335b79f,
+ /// or in textual repr: createFTCollection(string,uint8,string,string)
+ function createFTCollection(
+ string memory name,
+ uint8 decimals,
+ string memory description,
+ string memory tokenPrefix
+ ) external payable returns (address);
+
+ /// @dev EVM selector for this function is: 0x85624258,
+ /// or in textual repr: makeCollectionERC721MetadataCompatible(address,string)
+ function makeCollectionERC721MetadataCompatible(address collection, string memory baseUri) external;
+
+ /// @dev EVM selector for this function is: 0x564e321f,
+ /// or in textual repr: destroyCollection(address)
+ function destroyCollection(address collectionAddress) external;
+
+ /// Check if a collection exists
+ /// @param collectionAddress Address of the collection in question
+ /// @return bool Does the collection exist?
+ /// @dev EVM selector for this function is: 0xc3de1494,
+ /// or in textual repr: isCollectionExist(address)
+ function isCollectionExist(address collectionAddress) external view returns (bool);
+
+ /// @dev EVM selector for this function is: 0xd23a7ab1,
+ /// or in textual repr: collectionCreationFee()
+ function collectionCreationFee() external view returns (uint256);
+
+ /// Returns address of a collection.
+ /// @param collectionId - CollectionId of the collection
+ /// @return eth mirror address of the collection
+ /// @dev EVM selector for this function is: 0x2e716683,
+ /// or in textual repr: collectionAddress(uint32)
+ function collectionAddress(uint32 collectionId) external view returns (address);
+
+ /// Returns collectionId of a collection.
+ /// @param collectionAddress - Eth address of the collection
+ /// @return collectionId of the collection
+ /// @dev EVM selector for this function is: 0xb5cb7498,
+ /// or in textual repr: collectionId(address)
+ function collectionId(address collectionAddress) external view returns (uint32);
+}
+
+/// Collection properties
+struct CreateCollectionData {
+ /// Collection name
+ string name;
+ /// Collection description
+ string description;
+ /// Token prefix
+ string token_prefix;
+ /// Token type (NFT, FT or RFT)
+ CollectionMode mode;
+ /// Fungible token precision
+ uint8 decimals;
+ /// Custom Properties
+ Property[] properties;
+ /// Permissions for token properties
+ TokenPropertyPermission[] token_property_permissions;
+ /// Collection admins
+ CrossAddress[] admin_list;
+ /// Nesting settings
+ CollectionNestingAndPermission nesting_settings;
+ /// Collection limits
+ CollectionLimitValue[] limits;
+ /// Collection sponsor
+ CrossAddress pending_sponsor;
+ /// Extra collection flags
+ CollectionFlags flags;
+}
+
+type CollectionFlags is uint8;
+
+library CollectionFlagsLib {
+ /// A collection of foreign assets
+ CollectionFlags constant foreignField = CollectionFlags.wrap(128);
+ /// Supports ERC721Metadata
+ CollectionFlags constant erc721metadataField = CollectionFlags.wrap(64);
+ /// External collections can't be managed using `unique` api
+ CollectionFlags constant externalField = CollectionFlags.wrap(1);
+
+ /// Reserved flags
+ function reservedField(uint8 value) public pure returns (CollectionFlags) {
+ require(value < 1 << 5, "out of bound value");
+ return CollectionFlags.wrap(value << 1);
+ }
+}
+
+/// Cross account struct
+struct CrossAddress {
+ address eth;
+ uint256 sub;
+}
+
+/// [`CollectionLimits`](up_data_structs::CollectionLimits) field representation for EVM.
+struct CollectionLimitValue {
+ CollectionLimitField field;
+ 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
+}
+
+/// Nested collections and permissions
+struct CollectionNestingAndPermission {
+ /// Owner of token can nest tokens under it.
+ bool token_owner;
+ /// Admin of token collection can nest tokens under token.
+ bool collection_admin;
+ /// If set - only tokens from specified collections can be nested.
+ address[] restricted;
+}
+
+/// Ethereum representation of Token Property Permissions.
+struct TokenPropertyPermission {
+ /// Token property key.
+ string key;
+ /// Token property permissions.
+ PropertyPermission[] permissions;
+}
+
+/// Ethereum representation of TokenPermissions (see [`up_data_structs::PropertyPermission`]) as an key and value.
+struct PropertyPermission {
+ /// TokenPermission field.
+ TokenPermissionField code;
+ /// TokenPermission value.
+ bool value;
+}
+
+/// Ethereum representation of TokenPermissions (see [`up_data_structs::PropertyPermission`]) fields as an enumeration.
+enum TokenPermissionField {
+ /// Permission to change the property and property permission. See [`up_data_structs::PropertyPermission::mutable`]
+ Mutable,
+ /// Change permission for the collection administrator. See [`up_data_structs::PropertyPermission::token_owner`]
+ TokenOwner,
+ /// Permission to change the property for the owner of the token. See [`up_data_structs::PropertyPermission::collection_admin`]
+ CollectionAdmin
+}
+
+/// Ethereum representation of collection [`PropertyKey`](up_data_structs::PropertyKey) and [`PropertyValue`](up_data_structs::PropertyValue).
+struct Property {
+ string key;
+ bytes value;
+}
+
+/// Type of tokens in collection
+enum CollectionMode {
+ /// Nonfungible
+ Nonfungible,
+ /// Fungible
+ Fungible,
+ /// Refungible
+ Refungible
+}
js-packages/evm-abi/api/ContractHelpers.soldiffbeforeafterboth--- /dev/null
+++ b/js-packages/evm-abi/api/ContractHelpers.sol
@@ -0,0 +1,196 @@
+// 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);
+}
+
+/// @dev inlined interface
+interface ContractHelpersEvents {
+ event ContractSponsorSet(address indexed contractAddress, address sponsor);
+ event ContractSponsorshipConfirmed(address indexed contractAddress, address sponsor);
+ event ContractSponsorRemoved(address indexed contractAddress);
+}
+
+/// @title Magic contract, which allows users to reconfigure other contracts
+/// @dev the ERC-165 identifier for this interface is 0x30afad04
+interface ContractHelpers is Dummy, ERC165, ContractHelpersEvents {
+ /// Get user, which deployed specified contract
+ /// @dev May return zero address in case if contract is deployed
+ /// using uniquenetwork evm-migration pallet, or using other terms not
+ /// intended by pallet-evm
+ /// @dev Returns zero address if contract does not exists
+ /// @param contractAddress Contract to get owner of
+ /// @return address Owner of contract
+ /// @dev EVM selector for this function is: 0x5152b14c,
+ /// or in textual repr: contractOwner(address)
+ function contractOwner(address contractAddress) external view returns (address);
+
+ /// Set sponsor.
+ /// @param contractAddress Contract for which a sponsor is being established.
+ /// @param sponsor User address who set as pending sponsor.
+ /// @dev EVM selector for this function is: 0xf01fba93,
+ /// or in textual repr: setSponsor(address,address)
+ function setSponsor(address contractAddress, address sponsor) external;
+
+ /// Set contract as self sponsored.
+ ///
+ /// @param contractAddress Contract for which a self sponsoring is being enabled.
+ /// @dev EVM selector for this function is: 0x89f7d9ae,
+ /// or in textual repr: selfSponsoredEnable(address)
+ function selfSponsoredEnable(address contractAddress) external;
+
+ /// Remove sponsor.
+ ///
+ /// @param contractAddress Contract for which a sponsorship is being removed.
+ /// @dev EVM selector for this function is: 0xef784250,
+ /// or in textual repr: removeSponsor(address)
+ function removeSponsor(address contractAddress) external;
+
+ /// Confirm sponsorship.
+ ///
+ /// @dev Caller must be same that set via [`setSponsor`].
+ ///
+ /// @param contractAddress Сontract for which need to confirm sponsorship.
+ /// @dev EVM selector for this function is: 0xabc00001,
+ /// or in textual repr: confirmSponsorship(address)
+ function confirmSponsorship(address contractAddress) external;
+
+ /// Get current sponsor.
+ ///
+ /// @param contractAddress The contract for which a sponsor is requested.
+ /// @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: 0x766c4f37,
+ /// or in textual repr: sponsor(address)
+ function sponsor(address contractAddress) external view returns (OptionCrossAddress memory);
+
+ /// Check tat contract has confirmed sponsor.
+ ///
+ /// @param contractAddress The contract for which the presence of a confirmed sponsor is checked.
+ /// @return **true** if contract has confirmed sponsor.
+ /// @dev EVM selector for this function is: 0x97418603,
+ /// or in textual repr: hasSponsor(address)
+ function hasSponsor(address contractAddress) external view returns (bool);
+
+ /// Check tat contract has pending sponsor.
+ ///
+ /// @param contractAddress The contract for which the presence of a pending sponsor is checked.
+ /// @return **true** if contract has pending sponsor.
+ /// @dev EVM selector for this function is: 0x39b9b242,
+ /// or in textual repr: hasPendingSponsor(address)
+ function hasPendingSponsor(address contractAddress) external view returns (bool);
+
+ /// @dev EVM selector for this function is: 0x6027dc61,
+ /// or in textual repr: sponsoringEnabled(address)
+ function sponsoringEnabled(address contractAddress) external view returns (bool);
+
+ /// @dev EVM selector for this function is: 0xfde8a560,
+ /// or in textual repr: setSponsoringMode(address,uint8)
+ function setSponsoringMode(address contractAddress, SponsoringModeT mode) external;
+
+ /// Get current contract sponsoring rate limit
+ /// @param contractAddress Contract to get sponsoring rate limit of
+ /// @return uint32 Amount of blocks between two sponsored transactions
+ /// @dev EVM selector for this function is: 0xf29694d8,
+ /// or in textual repr: sponsoringRateLimit(address)
+ function sponsoringRateLimit(address contractAddress) external view returns (uint32);
+
+ /// Set contract sponsoring rate limit
+ /// @dev Sponsoring rate limit - is a minimum amount of blocks that should
+ /// pass between two sponsored transactions
+ /// @param contractAddress Contract to change sponsoring rate limit of
+ /// @param rateLimit Target rate limit
+ /// @dev Only contract owner can change this setting
+ /// @dev EVM selector for this function is: 0x77b6c908,
+ /// or in textual repr: setSponsoringRateLimit(address,uint32)
+ function setSponsoringRateLimit(address contractAddress, uint32 rateLimit) external;
+
+ /// Set contract sponsoring fee limit
+ /// @dev Sponsoring fee limit - is maximum fee that could be spent by
+ /// single transaction
+ /// @param contractAddress Contract to change sponsoring fee limit of
+ /// @param feeLimit Fee limit
+ /// @dev Only contract owner can change this setting
+ /// @dev EVM selector for this function is: 0x03aed665,
+ /// or in textual repr: setSponsoringFeeLimit(address,uint256)
+ function setSponsoringFeeLimit(address contractAddress, uint256 feeLimit) external;
+
+ /// Get current contract sponsoring fee limit
+ /// @param contractAddress Contract to get sponsoring fee limit of
+ /// @return uint256 Maximum amount of fee that could be spent by single
+ /// transaction
+ /// @dev EVM selector for this function is: 0x75b73606,
+ /// or in textual repr: sponsoringFeeLimit(address)
+ function sponsoringFeeLimit(address contractAddress) external view returns (uint256);
+
+ /// Is specified user present in contract allow list
+ /// @dev Contract owner always implicitly included
+ /// @param contractAddress Contract to check allowlist of
+ /// @param user User to check
+ /// @return bool Is specified users exists in contract allowlist
+ /// @dev EVM selector for this function is: 0x5c658165,
+ /// or in textual repr: allowed(address,address)
+ function allowed(address contractAddress, address user) external view returns (bool);
+
+ /// Toggle user presence in contract allowlist
+ /// @param contractAddress Contract to change allowlist of
+ /// @param user Which user presence should be toggled
+ /// @param isAllowed `true` if user should be allowed to be sponsored
+ /// or call this contract, `false` otherwise
+ /// @dev Only contract owner can change this setting
+ /// @dev EVM selector for this function is: 0x4706cc1c,
+ /// or in textual repr: toggleAllowed(address,address,bool)
+ function toggleAllowed(
+ address contractAddress,
+ address user,
+ bool isAllowed
+ ) external;
+
+ /// Is this contract has allowlist access enabled
+ /// @dev Allowlist always can have users, and it is used for two purposes:
+ /// in case of allowlist sponsoring mode, users will be sponsored if they exist in allowlist
+ /// in case of allowlist access enabled, only users from allowlist may call this contract
+ /// @param contractAddress Contract to get allowlist access of
+ /// @return bool Is specified contract has allowlist access enabled
+ /// @dev EVM selector for this function is: 0xc772ef6c,
+ /// or in textual repr: allowlistEnabled(address)
+ function allowlistEnabled(address contractAddress) external view returns (bool);
+
+ /// Toggle contract allowlist access
+ /// @param contractAddress Contract to change allowlist access of
+ /// @param enabled Should allowlist access to be enabled?
+ /// @dev EVM selector for this function is: 0x36de20f5,
+ /// or in textual repr: toggleAllowlist(address,bool)
+ function toggleAllowlist(address contractAddress, bool enabled) external;
+}
+
+/// Available contract sponsoring modes
+enum SponsoringModeT {
+ /// Sponsoring is disabled
+ Disabled,
+ /// Only users from allowlist will be sponsored
+ Allowlisted,
+ /// All users will be sponsored
+ Generous
+}
+
+/// Optional value
+struct OptionCrossAddress {
+ /// Shows the status of accessibility of value
+ bool status;
+ /// Actual value if `status` is true
+ CrossAddress value;
+}
+
+/// Cross account struct
+struct CrossAddress {
+ address eth;
+ uint256 sub;
+}
js-packages/evm-abi/api/UniqueFungible.soldiffbeforeafterboth--- /dev/null
+++ b/js-packages/evm-abi/api/UniqueFungible.sol
@@ -0,0 +1,510 @@
+// 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 0xb34d97e9
+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;
+
+ /// @dev EVM selector for this function is: 0x0b9f3890,
+ /// or in textual repr: setCollectionNesting((bool,bool,address[]))
+ function setCollectionNesting(CollectionNestingAndPermission memory collectionNestingAndPermissions) 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;
+
+ /// @dev EVM selector for this function is: 0x92c660a8,
+ /// or in textual repr: collectionNesting()
+ function collectionNesting() external view returns (CollectionNestingAndPermission memory);
+
+ // /// 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;
+}
+
+/// Nested collections and permissions
+struct CollectionNestingAndPermission {
+ /// Owner of token can nest tokens under it.
+ bool token_owner;
+ /// Admin of token collection can nest tokens under token.
+ bool collection_admin;
+ /// If set - only tokens from specified collections can be nested.
+ address[] restricted;
+}
+
+/// [`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 0x69d14d3e
+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);
+
+ /// @notice Balance of account
+ /// @param owner An cross address for whom to query the balance
+ /// @return The number of fingibles owned by `owner`, possibly zero
+ /// @dev EVM selector for this function is: 0xec069398,
+ /// or in textual repr: balanceOfCross((address,uint256))
+ function balanceOfCross(CrossAddress memory owner) external view returns (uint256);
+}
+
+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 {}
js-packages/evm-abi/api/UniqueNFT.soldiffbeforeafterboth--- /dev/null
+++ b/js-packages/evm-abi/api/UniqueNFT.sol
@@ -0,0 +1,855 @@
+// 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);
+}
+
+/// @dev inlined interface
+interface ERC721TokenEvent {
+ event TokenChanged(uint256 indexed tokenId);
+}
+
+/// @title A contract that allows to set and delete token properties and change token property permissions.
+/// @dev the ERC-165 identifier for this interface is 0xde0695c2
+interface TokenProperties is Dummy, ERC165, ERC721TokenEvent {
+ // /// @notice Set permissions for token property.
+ // /// @dev Throws error if `msg.sender` is not admin or owner of the collection.
+ // /// @param key Property key.
+ // /// @param isMutable Permission to mutate property.
+ // /// @param collectionAdmin Permission to mutate property by collection admin if property is mutable.
+ // /// @param tokenOwner Permission to mutate property by token owner if property is mutable.
+ // /// @dev EVM selector for this function is: 0x222d97fa,
+ // /// or in textual repr: setTokenPropertyPermission(string,bool,bool,bool)
+ // function setTokenPropertyPermission(string memory key, bool isMutable, bool collectionAdmin, bool tokenOwner) external;
+
+ /// @notice Set permissions for token property.
+ /// @dev Throws error if `msg.sender` is not admin or owner of the collection.
+ /// @param permissions Permissions for keys.
+ /// @dev EVM selector for this function is: 0xbd92983a,
+ /// or in textual repr: setTokenPropertyPermissions((string,(uint8,bool)[])[])
+ function setTokenPropertyPermissions(TokenPropertyPermission[] memory permissions) external;
+
+ /// @notice Get permissions for token properties.
+ /// @dev EVM selector for this function is: 0xf23d7790,
+ /// or in textual repr: tokenPropertyPermissions()
+ function tokenPropertyPermissions() external view returns (TokenPropertyPermission[] memory);
+
+ // /// @notice Set token property value.
+ // /// @dev Throws error if `msg.sender` has no permission to edit the property.
+ // /// @param tokenId ID of the token.
+ // /// @param key Property key.
+ // /// @param value Property value.
+ // /// @dev EVM selector for this function is: 0x1752d67b,
+ // /// or in textual repr: setProperty(uint256,string,bytes)
+ // function setProperty(uint256 tokenId, string memory key, bytes memory value) external;
+
+ /// @notice Set token properties value.
+ /// @dev Throws error if `msg.sender` has no permission to edit the property.
+ /// @param tokenId ID of the token.
+ /// @param properties settable properties
+ /// @dev EVM selector for this function is: 0x14ed3a6e,
+ /// or in textual repr: setProperties(uint256,(string,bytes)[])
+ function setProperties(uint256 tokenId, Property[] memory properties) external;
+
+ // /// @notice Delete token property value.
+ // /// @dev Throws error if `msg.sender` has no permission to edit the property.
+ // /// @param tokenId ID of the token.
+ // /// @param key Property key.
+ // /// @dev EVM selector for this function is: 0x066111d1,
+ // /// or in textual repr: deleteProperty(uint256,string)
+ // function deleteProperty(uint256 tokenId, string memory key) external;
+
+ /// @notice Delete token properties value.
+ /// @dev Throws error if `msg.sender` has no permission to edit the property.
+ /// @param tokenId ID of the token.
+ /// @param keys Properties key.
+ /// @dev EVM selector for this function is: 0xc472d371,
+ /// or in textual repr: deleteProperties(uint256,string[])
+ function deleteProperties(uint256 tokenId, string[] memory keys) external;
+
+ /// @notice Get token property value.
+ /// @dev Throws error if key not found
+ /// @param tokenId ID of the token.
+ /// @param key Property key.
+ /// @return Property value bytes
+ /// @dev EVM selector for this function is: 0x7228c327,
+ /// or in textual repr: property(uint256,string)
+ function property(uint256 tokenId, string memory key) external view returns (bytes memory);
+}
+
+/// Ethereum representation of collection [`PropertyKey`](up_data_structs::PropertyKey) and [`PropertyValue`](up_data_structs::PropertyValue).
+struct Property {
+ string key;
+ bytes value;
+}
+
+/// Ethereum representation of Token Property Permissions.
+struct TokenPropertyPermission {
+ /// Token property key.
+ string key;
+ /// Token property permissions.
+ PropertyPermission[] permissions;
+}
+
+/// Ethereum representation of TokenPermissions (see [`up_data_structs::PropertyPermission`]) as an key and value.
+struct PropertyPermission {
+ /// TokenPermission field.
+ TokenPermissionField code;
+ /// TokenPermission value.
+ bool value;
+}
+
+/// Ethereum representation of TokenPermissions (see [`up_data_structs::PropertyPermission`]) fields as an enumeration.
+enum TokenPermissionField {
+ /// Permission to change the property and property permission. See [`up_data_structs::PropertyPermission::mutable`]
+ Mutable,
+ /// Change permission for the collection administrator. See [`up_data_structs::PropertyPermission::token_owner`]
+ TokenOwner,
+ /// Permission to change the property for the owner of the token. See [`up_data_structs::PropertyPermission::collection_admin`]
+ CollectionAdmin
+}
+
+/// @title A contract that allows you to work with collections.
+/// @dev the ERC-165 identifier for this interface is 0xb34d97e9
+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;
+
+ /// @dev EVM selector for this function is: 0x0b9f3890,
+ /// or in textual repr: setCollectionNesting((bool,bool,address[]))
+ function setCollectionNesting(CollectionNestingAndPermission memory collectionNestingAndPermissions) 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;
+
+ /// @dev EVM selector for this function is: 0x92c660a8,
+ /// or in textual repr: collectionNesting()
+ function collectionNesting() external view returns (CollectionNestingAndPermission memory);
+
+ // /// 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;
+}
+
+/// Nested collections and permissions
+struct CollectionNestingAndPermission {
+ /// Owner of token can nest tokens under it.
+ bool token_owner;
+ /// Admin of token collection can nest tokens under token.
+ bool collection_admin;
+ /// If set - only tokens from specified collections can be nested.
+ address[] restricted;
+}
+
+/// [`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
+}
+
+/// @title ERC-721 Non-Fungible Token Standard, optional metadata extension
+/// @dev See https://eips.ethereum.org/EIPS/eip-721
+/// @dev the ERC-165 identifier for this interface is 0x5b5e139f
+interface ERC721Metadata is Dummy, ERC165 {
+ // /// @notice A descriptive name for a collection of NFTs in this contract
+ // /// @dev real implementation of this function lies in `ERC721UniqueExtensions`
+ // /// @dev EVM selector for this function is: 0x06fdde03,
+ // /// or in textual repr: name()
+ // function name() external view returns (string memory);
+
+ // /// @notice An abbreviated name for NFTs in this contract
+ // /// @dev real implementation of this function lies in `ERC721UniqueExtensions`
+ // /// @dev EVM selector for this function is: 0x95d89b41,
+ // /// or in textual repr: symbol()
+ // function symbol() external view returns (string memory);
+
+ /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.
+ ///
+ /// @dev If the token has a `url` property and it is not empty, it is returned.
+ /// Else If the collection does not have a property with key `schemaName` or its value is not equal to `ERC721Metadata`, it return an error `tokenURI not set`.
+ /// If the collection property `baseURI` is empty or absent, return "" (empty string)
+ /// otherwise, if token property `suffix` present and is non-empty, return concatenation of baseURI and suffix
+ /// otherwise, return concatenation of `baseURI` and stringified token id (decimal stringifying, without paddings).
+ ///
+ /// @return token's const_metadata
+ /// @dev EVM selector for this function is: 0xc87b56dd,
+ /// or in textual repr: tokenURI(uint256)
+ function tokenURI(uint256 tokenId) external view returns (string memory);
+}
+
+/// @title ERC721 Token that can be irreversibly burned (destroyed).
+/// @dev the ERC-165 identifier for this interface is 0x42966c68
+interface ERC721Burnable is Dummy, ERC165 {
+ /// @notice Burns a specific ERC721 token.
+ /// @dev Throws unless `msg.sender` is the current NFT owner, or an authorized
+ /// operator of the current owner.
+ /// @param tokenId The NFT to approve
+ /// @dev EVM selector for this function is: 0x42966c68,
+ /// or in textual repr: burn(uint256)
+ function burn(uint256 tokenId) external;
+}
+
+/// @title ERC721 minting logic.
+/// @dev the ERC-165 identifier for this interface is 0x3fd94ea6
+interface ERC721UniqueMintable is Dummy, ERC165 {
+ /// @notice Function to mint a token.
+ /// @param to The new owner
+ /// @return uint256 The id of the newly minted token
+ /// @dev EVM selector for this function is: 0x6a627842,
+ /// or in textual repr: mint(address)
+ function mint(address to) external returns (uint256);
+
+ // /// @notice Function to mint a token.
+ // /// @dev `tokenId` should be obtained with `nextTokenId` method,
+ // /// unlike standard, you can't specify it manually
+ // /// @param to The new owner
+ // /// @param tokenId ID of the minted NFT
+ // /// @dev EVM selector for this function is: 0x40c10f19,
+ // /// or in textual repr: mint(address,uint256)
+ // function mint(address to, uint256 tokenId) external returns (bool);
+
+ /// @notice Function to mint token with the given tokenUri.
+ /// @param to The new owner
+ /// @param tokenUri Token URI that would be stored in the NFT properties
+ /// @return uint256 The id of the newly minted token
+ /// @dev EVM selector for this function is: 0x45c17782,
+ /// or in textual repr: mintWithTokenURI(address,string)
+ function mintWithTokenURI(address to, string memory tokenUri) external returns (uint256);
+ // /// @notice Function to mint token with the given tokenUri.
+ // /// @dev `tokenId` should be obtained with `nextTokenId` method,
+ // /// unlike standard, you can't specify it manually
+ // /// @param to The new owner
+ // /// @param tokenId ID of the minted NFT
+ // /// @param tokenUri Token URI that would be stored in the NFT properties
+ // /// @dev EVM selector for this function is: 0x50bb4e7f,
+ // /// or in textual repr: mintWithTokenURI(address,uint256,string)
+ // function mintWithTokenURI(address to, uint256 tokenId, string memory tokenUri) external returns (bool);
+
+}
+
+/// @title Unique extensions for ERC721.
+/// @dev the ERC-165 identifier for this interface is 0x9b397d16
+interface ERC721UniqueExtensions is Dummy, ERC165 {
+ /// @notice A descriptive name for a collection of NFTs in this contract
+ /// @dev EVM selector for this function is: 0x06fdde03,
+ /// or in textual repr: name()
+ function name() external view returns (string memory);
+
+ /// @notice An abbreviated name for NFTs in this contract
+ /// @dev EVM selector for this function is: 0x95d89b41,
+ /// or in textual repr: symbol()
+ function symbol() external view returns (string memory);
+
+ /// @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);
+
+ // /// Returns the owner (in cross format) of the token.
+ // ///
+ // /// @param tokenId Id for the token.
+ // /// @dev EVM selector for this function is: 0x2b29dace,
+ // /// or in textual repr: crossOwnerOf(uint256)
+ // function crossOwnerOf(uint256 tokenId) external view returns (CrossAddress memory);
+
+ /// Returns the owner (in cross format) of the token.
+ ///
+ /// @param tokenId Id for the token.
+ /// @dev EVM selector for this function is: 0xcaa3a4d0,
+ /// or in textual repr: ownerOfCross(uint256)
+ function ownerOfCross(uint256 tokenId) external view returns (CrossAddress memory);
+
+ /// @notice Count all NFTs assigned to an owner
+ /// @param owner An cross address for whom to query the balance
+ /// @return The number of NFTs owned by `owner`, possibly zero
+ /// @dev EVM selector for this function is: 0xec069398,
+ /// or in textual repr: balanceOfCross((address,uint256))
+ function balanceOfCross(CrossAddress memory owner) external view returns (uint256);
+
+ /// Returns the token properties.
+ ///
+ /// @param tokenId Id for the token.
+ /// @param keys Properties keys. Empty keys for all propertyes.
+ /// @return Vector of properties key/value pairs.
+ /// @dev EVM selector for this function is: 0xe07ede7e,
+ /// or in textual repr: properties(uint256,string[])
+ function properties(uint256 tokenId, string[] memory keys) external view returns (Property[] memory);
+
+ /// @notice Set or reaffirm the approved address for an NFT
+ /// @dev The zero address indicates there is no approved address.
+ /// @dev Throws unless `msg.sender` is the current NFT owner, or an authorized
+ /// operator of the current owner.
+ /// @param approved The new substrate address approved NFT controller
+ /// @param tokenId The NFT to approve
+ /// @dev EVM selector for this function is: 0x0ecd0ab0,
+ /// or in textual repr: approveCross((address,uint256),uint256)
+ function approveCross(CrossAddress memory approved, uint256 tokenId) external;
+
+ /// @notice Transfer ownership of an NFT
+ /// @dev Throws unless `msg.sender` is the current owner. Throws if `to`
+ /// is the zero address. Throws if `tokenId` is not a valid NFT.
+ /// @param to The new owner
+ /// @param tokenId The NFT to transfer
+ /// @dev EVM selector for this function is: 0xa9059cbb,
+ /// or in textual repr: transfer(address,uint256)
+ function transfer(address to, uint256 tokenId) external;
+
+ /// @notice Transfer ownership of an NFT
+ /// @dev Throws unless `msg.sender` is the current owner. Throws if `to`
+ /// is the zero address. Throws if `tokenId` is not a valid NFT.
+ /// @param to The new owner
+ /// @param tokenId The NFT to transfer
+ /// @dev EVM selector for this function is: 0x2ada85ff,
+ /// or in textual repr: transferCross((address,uint256),uint256)
+ function transferCross(CrossAddress memory to, uint256 tokenId) external;
+
+ /// @notice Transfer ownership of an NFT from cross account address to cross account address
+ /// @dev Throws unless `msg.sender` is the current owner. Throws if `to`
+ /// is the zero address. Throws if `tokenId` is not a valid NFT.
+ /// @param from Cross acccount address of current owner
+ /// @param to Cross acccount address of new owner
+ /// @param tokenId The NFT to transfer
+ /// @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 tokenId
+ ) external;
+
+ // /// @notice Burns a specific ERC721 token.
+ // /// @dev Throws unless `msg.sender` is the current owner or an authorized
+ // /// operator for this NFT. Throws if `from` is not the current owner. Throws
+ // /// if `to` is the zero address. Throws if `tokenId` is not a valid NFT.
+ // /// @param from The current owner of the NFT
+ // /// @param tokenId The NFT to transfer
+ // /// @dev EVM selector for this function is: 0x79cc6790,
+ // /// or in textual repr: burnFrom(address,uint256)
+ // function burnFrom(address from, uint256 tokenId) external;
+
+ /// @notice Burns a specific ERC721 token.
+ /// @dev Throws unless `msg.sender` is the current owner or an authorized
+ /// operator for this NFT. Throws if `from` is not the current owner. Throws
+ /// if `to` is the zero address. Throws if `tokenId` is not a valid NFT.
+ /// @param from The current owner of the NFT
+ /// @param tokenId The NFT to transfer
+ /// @dev EVM selector for this function is: 0xbb2f5a58,
+ /// or in textual repr: burnFromCross((address,uint256),uint256)
+ function burnFromCross(CrossAddress memory from, uint256 tokenId) external;
+
+ /// @notice Returns next free NFT ID.
+ /// @dev EVM selector for this function is: 0x75794a3c,
+ /// or in textual repr: nextTokenId()
+ function nextTokenId() external view returns (uint256);
+
+ // /// @notice Function to mint multiple tokens.
+ // /// @dev `tokenIds` should be an array of consecutive numbers and first number
+ // /// should be obtained with `nextTokenId` method
+ // /// @param to The new owner
+ // /// @param tokenIds IDs of the minted NFTs
+ // /// @dev EVM selector for this function is: 0x44a9945e,
+ // /// or in textual repr: mintBulk(address,uint256[])
+ // function mintBulk(address to, uint256[] memory tokenIds) external returns (bool);
+
+ /// @notice Function to mint a token.
+ /// @param data Array of pairs of token owner and token's properties for minted token
+ /// @dev EVM selector for this function is: 0xab427b0c,
+ /// or in textual repr: mintBulkCross(((address,uint256),(string,bytes)[])[])
+ function mintBulkCross(MintTokenData[] memory data) external returns (bool);
+
+ // /// @notice Function to mint multiple tokens with the given tokenUris.
+ // /// @dev `tokenIds` is array of pairs of token ID and token URI. Token IDs should be consecutive
+ // /// numbers and first number should be obtained with `nextTokenId` method
+ // /// @param to The new owner
+ // /// @param tokens array of pairs of token ID and token URI for minted tokens
+ // /// @dev EVM selector for this function is: 0x36543006,
+ // /// or in textual repr: mintBulkWithTokenURI(address,(uint256,string)[])
+ // function mintBulkWithTokenURI(address to, TokenUri[] memory tokens) external returns (bool);
+
+ /// @notice Function to mint a token.
+ /// @param to The new owner crossAccountId
+ /// @param properties Properties of minted token
+ /// @return uint256 The id of the newly minted token
+ /// @dev EVM selector for this function is: 0xb904db03,
+ /// or in textual repr: mintCross((address,uint256),(string,bytes)[])
+ function mintCross(CrossAddress memory to, Property[] memory properties) external returns (uint256);
+
+ /// @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);
+}
+
+/// Data for creation token with uri.
+struct TokenUri {
+ /// Id of new token.
+ uint256 id;
+ /// Uri of new token.
+ string uri;
+}
+
+/// Token minting parameters
+struct MintTokenData {
+ /// Minted token owner
+ CrossAddress owner;
+ /// Minted token properties
+ Property[] properties;
+}
+
+/// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
+/// @dev See https://eips.ethereum.org/EIPS/eip-721
+/// @dev the ERC-165 identifier for this interface is 0x780e9d63
+interface ERC721Enumerable is Dummy, ERC165 {
+ /// @notice Enumerate valid NFTs
+ /// @param index A counter less than `totalSupply()`
+ /// @return The token identifier for the `index`th NFT,
+ /// (sort order not specified)
+ /// @dev EVM selector for this function is: 0x4f6ccce7,
+ /// or in textual repr: tokenByIndex(uint256)
+ function tokenByIndex(uint256 index) external view returns (uint256);
+
+ /// @dev Not implemented
+ /// @dev EVM selector for this function is: 0x2f745c59,
+ /// or in textual repr: tokenOfOwnerByIndex(address,uint256)
+ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);
+
+ /// @notice Count NFTs tracked by this contract
+ /// @return A count of valid NFTs tracked by this contract, where each one of
+ /// them has an assigned and queryable owner not equal to the zero address
+ /// @dev EVM selector for this function is: 0x18160ddd,
+ /// or in textual repr: totalSupply()
+ function totalSupply() external view returns (uint256);
+}
+
+/// @dev inlined interface
+interface ERC721Events {
+ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
+ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
+ event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
+}
+
+/// @title ERC-721 Non-Fungible Token Standard
+/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
+/// @dev the ERC-165 identifier for this interface is 0x80ac58cd
+interface ERC721 is Dummy, ERC165, ERC721Events {
+ /// @notice Count all NFTs assigned to an owner
+ /// @dev NFTs assigned to the zero address are considered invalid, and this
+ /// function throws for queries about the zero address.
+ /// @param owner An address for whom to query the balance
+ /// @return The number of NFTs owned by `owner`, possibly zero
+ /// @dev EVM selector for this function is: 0x70a08231,
+ /// or in textual repr: balanceOf(address)
+ function balanceOf(address owner) external view returns (uint256);
+
+ /// @notice Find the owner of an NFT
+ /// @dev NFTs assigned to zero address are considered invalid, and queries
+ /// about them do throw.
+ /// @param tokenId The identifier for an NFT
+ /// @return The address of the owner of the NFT
+ /// @dev EVM selector for this function is: 0x6352211e,
+ /// or in textual repr: ownerOf(uint256)
+ function ownerOf(uint256 tokenId) external view returns (address);
+
+ /// @dev Not implemented
+ /// @dev EVM selector for this function is: 0xb88d4fde,
+ /// or in textual repr: safeTransferFrom(address,address,uint256,bytes)
+ function safeTransferFrom(
+ address from,
+ address to,
+ uint256 tokenId,
+ bytes memory data
+ ) external;
+
+ /// @dev Not implemented
+ /// @dev EVM selector for this function is: 0x42842e0e,
+ /// or in textual repr: safeTransferFrom(address,address,uint256)
+ function safeTransferFrom(
+ address from,
+ address to,
+ uint256 tokenId
+ ) external;
+
+ /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE
+ /// TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE
+ /// THEY MAY BE PERMANENTLY LOST
+ /// @dev Throws unless `msg.sender` is the current owner or an authorized
+ /// operator for this NFT. Throws if `from` is not the current owner. Throws
+ /// if `to` is the zero address. Throws if `tokenId` is not a valid NFT.
+ /// @param from The current owner of the NFT
+ /// @param to The new owner
+ /// @param tokenId The NFT to transfer
+ /// @dev EVM selector for this function is: 0x23b872dd,
+ /// or in textual repr: transferFrom(address,address,uint256)
+ function transferFrom(
+ address from,
+ address to,
+ uint256 tokenId
+ ) external;
+
+ /// @notice Set or reaffirm the approved address for an NFT
+ /// @dev The zero address indicates there is no approved address.
+ /// @dev Throws unless `msg.sender` is the current NFT owner, or an authorized
+ /// operator of the current owner.
+ /// @param approved The new approved NFT controller
+ /// @param tokenId The NFT to approve
+ /// @dev EVM selector for this function is: 0x095ea7b3,
+ /// or in textual repr: approve(address,uint256)
+ function approve(address approved, uint256 tokenId) external;
+
+ /// @notice Sets or unsets the approval of a given operator.
+ /// The `operator` is allowed to transfer all tokens of the `caller` on their behalf.
+ /// @param operator Operator
+ /// @param approved Should operator status be granted or revoked?
+ /// @dev EVM selector for this function is: 0xa22cb465,
+ /// or in textual repr: setApprovalForAll(address,bool)
+ function setApprovalForAll(address operator, bool approved) external;
+
+ /// @notice Get the approved address for a single NFT
+ /// @dev Throws if `tokenId` is not a valid NFT
+ /// @param tokenId The NFT to find the approved address for
+ /// @return The approved address for this NFT, or the zero address if there is none
+ /// @dev EVM selector for this function is: 0x081812fc,
+ /// or in textual repr: getApproved(uint256)
+ function getApproved(uint256 tokenId) external view returns (address);
+
+ /// @notice Tells whether the given `owner` approves the `operator`.
+ /// @dev EVM selector for this function is: 0xe985e9c5,
+ /// or in textual repr: isApprovedForAll(address,address)
+ function isApprovedForAll(address owner, address operator) external view returns (bool);
+}
+
+interface UniqueNFT is
+ Dummy,
+ ERC165,
+ ERC721,
+ ERC721Enumerable,
+ ERC721UniqueExtensions,
+ ERC721UniqueMintable,
+ ERC721Burnable,
+ ERC721Metadata,
+ Collection,
+ TokenProperties
+{}
js-packages/evm-abi/api/UniqueNativeFungible.soldiffbeforeafterboth--- /dev/null
+++ b/js-packages/evm-abi/api/UniqueNativeFungible.sol
@@ -0,0 +1,89 @@
+// 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);
+}
+
+/// @dev the ERC-165 identifier for this interface is 0x1313556c
+interface ERC20UniqueExtensions is Dummy, ERC165 {
+ /// @dev EVM selector for this function is: 0xec069398,
+ /// or in textual repr: balanceOfCross((address,uint256))
+ function balanceOfCross(CrossAddress memory owner) external view returns (uint256);
+
+ /// @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);
+}
+
+/// Cross account struct
+struct CrossAddress {
+ address eth;
+ uint256 sub;
+}
+
+/// @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: 0xdd62ed3e,
+ /// or in textual repr: allowance(address,address)
+ function allowance(address owner, address spender) external view returns (uint256);
+
+ /// @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: 0x70a08231,
+ /// or in textual repr: balanceOf(address)
+ function balanceOf(address owner) 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: 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: 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);
+}
+
+interface UniqueNativeFungible is Dummy, ERC165, ERC20, ERC20UniqueExtensions {}
js-packages/evm-abi/api/UniqueRefungible.soldiffbeforeafterboth--- /dev/null
+++ b/js-packages/evm-abi/api/UniqueRefungible.sol
@@ -0,0 +1,859 @@
+// 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);
+}
+
+/// @dev inlined interface
+interface ERC721TokenEvent {
+ event TokenChanged(uint256 indexed tokenId);
+}
+
+/// @title A contract that allows to set and delete token properties and change token property permissions.
+/// @dev the ERC-165 identifier for this interface is 0xde0695c2
+interface TokenProperties is Dummy, ERC165, ERC721TokenEvent {
+ // /// @notice Set permissions for token property.
+ // /// @dev Throws error if `msg.sender` is not admin or owner of the collection.
+ // /// @param key Property key.
+ // /// @param isMutable Permission to mutate property.
+ // /// @param collectionAdmin Permission to mutate property by collection admin if property is mutable.
+ // /// @param tokenOwner Permission to mutate property by token owner if property is mutable.
+ // /// @dev EVM selector for this function is: 0x222d97fa,
+ // /// or in textual repr: setTokenPropertyPermission(string,bool,bool,bool)
+ // function setTokenPropertyPermission(string memory key, bool isMutable, bool collectionAdmin, bool tokenOwner) external;
+
+ /// @notice Set permissions for token property.
+ /// @dev Throws error if `msg.sender` is not admin or owner of the collection.
+ /// @param permissions Permissions for keys.
+ /// @dev EVM selector for this function is: 0xbd92983a,
+ /// or in textual repr: setTokenPropertyPermissions((string,(uint8,bool)[])[])
+ function setTokenPropertyPermissions(TokenPropertyPermission[] memory permissions) external;
+
+ /// @notice Get permissions for token properties.
+ /// @dev EVM selector for this function is: 0xf23d7790,
+ /// or in textual repr: tokenPropertyPermissions()
+ function tokenPropertyPermissions() external view returns (TokenPropertyPermission[] memory);
+
+ // /// @notice Set token property value.
+ // /// @dev Throws error if `msg.sender` has no permission to edit the property.
+ // /// @param tokenId ID of the token.
+ // /// @param key Property key.
+ // /// @param value Property value.
+ // /// @dev EVM selector for this function is: 0x1752d67b,
+ // /// or in textual repr: setProperty(uint256,string,bytes)
+ // function setProperty(uint256 tokenId, string memory key, bytes memory value) external;
+
+ /// @notice Set token properties value.
+ /// @dev Throws error if `msg.sender` has no permission to edit the property.
+ /// @param tokenId ID of the token.
+ /// @param properties settable properties
+ /// @dev EVM selector for this function is: 0x14ed3a6e,
+ /// or in textual repr: setProperties(uint256,(string,bytes)[])
+ function setProperties(uint256 tokenId, Property[] memory properties) external;
+
+ // /// @notice Delete token property value.
+ // /// @dev Throws error if `msg.sender` has no permission to edit the property.
+ // /// @param tokenId ID of the token.
+ // /// @param key Property key.
+ // /// @dev EVM selector for this function is: 0x066111d1,
+ // /// or in textual repr: deleteProperty(uint256,string)
+ // function deleteProperty(uint256 tokenId, string memory key) external;
+
+ /// @notice Delete token properties value.
+ /// @dev Throws error if `msg.sender` has no permission to edit the property.
+ /// @param tokenId ID of the token.
+ /// @param keys Properties key.
+ /// @dev EVM selector for this function is: 0xc472d371,
+ /// or in textual repr: deleteProperties(uint256,string[])
+ function deleteProperties(uint256 tokenId, string[] memory keys) external;
+
+ /// @notice Get token property value.
+ /// @dev Throws error if key not found
+ /// @param tokenId ID of the token.
+ /// @param key Property key.
+ /// @return Property value bytes
+ /// @dev EVM selector for this function is: 0x7228c327,
+ /// or in textual repr: property(uint256,string)
+ function property(uint256 tokenId, string memory key) external view returns (bytes memory);
+}
+
+/// Ethereum representation of collection [`PropertyKey`](up_data_structs::PropertyKey) and [`PropertyValue`](up_data_structs::PropertyValue).
+struct Property {
+ string key;
+ bytes value;
+}
+
+/// Ethereum representation of Token Property Permissions.
+struct TokenPropertyPermission {
+ /// Token property key.
+ string key;
+ /// Token property permissions.
+ PropertyPermission[] permissions;
+}
+
+/// Ethereum representation of TokenPermissions (see [`up_data_structs::PropertyPermission`]) as an key and value.
+struct PropertyPermission {
+ /// TokenPermission field.
+ TokenPermissionField code;
+ /// TokenPermission value.
+ bool value;
+}
+
+/// Ethereum representation of TokenPermissions (see [`up_data_structs::PropertyPermission`]) fields as an enumeration.
+enum TokenPermissionField {
+ /// Permission to change the property and property permission. See [`up_data_structs::PropertyPermission::mutable`]
+ Mutable,
+ /// Change permission for the collection administrator. See [`up_data_structs::PropertyPermission::token_owner`]
+ TokenOwner,
+ /// Permission to change the property for the owner of the token. See [`up_data_structs::PropertyPermission::collection_admin`]
+ CollectionAdmin
+}
+
+/// @title A contract that allows you to work with collections.
+/// @dev the ERC-165 identifier for this interface is 0xb34d97e9
+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;
+
+ /// @dev EVM selector for this function is: 0x0b9f3890,
+ /// or in textual repr: setCollectionNesting((bool,bool,address[]))
+ function setCollectionNesting(CollectionNestingAndPermission memory collectionNestingAndPermissions) 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;
+
+ /// @dev EVM selector for this function is: 0x92c660a8,
+ /// or in textual repr: collectionNesting()
+ function collectionNesting() external view returns (CollectionNestingAndPermission memory);
+
+ // /// 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;
+}
+
+/// Nested collections and permissions
+struct CollectionNestingAndPermission {
+ /// Owner of token can nest tokens under it.
+ bool token_owner;
+ /// Admin of token collection can nest tokens under token.
+ bool collection_admin;
+ /// If set - only tokens from specified collections can be nested.
+ address[] restricted;
+}
+
+/// [`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
+}
+
+/// @title ERC-721 Non-Fungible Token Standard, optional metadata extension
+/// @dev See https://eips.ethereum.org/EIPS/eip-721
+/// @dev the ERC-165 identifier for this interface is 0x5b5e139f
+interface ERC721Metadata is Dummy, ERC165 {
+ // /// @notice A descriptive name for a collection of NFTs in this contract
+ // /// @dev real implementation of this function lies in `ERC721UniqueExtensions`
+ // /// @dev EVM selector for this function is: 0x06fdde03,
+ // /// or in textual repr: name()
+ // function name() external view returns (string memory);
+
+ // /// @notice An abbreviated name for NFTs in this contract
+ // /// @dev real implementation of this function lies in `ERC721UniqueExtensions`
+ // /// @dev EVM selector for this function is: 0x95d89b41,
+ // /// or in textual repr: symbol()
+ // function symbol() external view returns (string memory);
+
+ /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.
+ ///
+ /// @dev If the token has a `url` property and it is not empty, it is returned.
+ /// Else If the collection does not have a property with key `schemaName` or its value is not equal to `ERC721Metadata`, it return an error `tokenURI not set`.
+ /// If the collection property `baseURI` is empty or absent, return "" (empty string)
+ /// otherwise, if token property `suffix` present and is non-empty, return concatenation of baseURI and suffix
+ /// otherwise, return concatenation of `baseURI` and stringified token id (decimal stringifying, without paddings).
+ ///
+ /// @return token's const_metadata
+ /// @dev EVM selector for this function is: 0xc87b56dd,
+ /// or in textual repr: tokenURI(uint256)
+ function tokenURI(uint256 tokenId) external view returns (string memory);
+}
+
+/// @title ERC721 Token that can be irreversibly burned (destroyed).
+/// @dev the ERC-165 identifier for this interface is 0x42966c68
+interface ERC721Burnable is Dummy, ERC165 {
+ /// @notice Burns a specific ERC721 token.
+ /// @dev Throws unless `msg.sender` is the current RFT owner, or an authorized
+ /// operator of the current owner.
+ /// @param tokenId The RFT to approve
+ /// @dev EVM selector for this function is: 0x42966c68,
+ /// or in textual repr: burn(uint256)
+ function burn(uint256 tokenId) external;
+}
+
+/// @title ERC721 minting logic.
+/// @dev the ERC-165 identifier for this interface is 0x3fd94ea6
+interface ERC721UniqueMintable is Dummy, ERC165 {
+ /// @notice Function to mint a token.
+ /// @param to The new owner
+ /// @return uint256 The id of the newly minted token
+ /// @dev EVM selector for this function is: 0x6a627842,
+ /// or in textual repr: mint(address)
+ function mint(address to) external returns (uint256);
+
+ // /// @notice Function to mint a token.
+ // /// @dev `tokenId` should be obtained with `nextTokenId` method,
+ // /// unlike standard, you can't specify it manually
+ // /// @param to The new owner
+ // /// @param tokenId ID of the minted RFT
+ // /// @dev EVM selector for this function is: 0x40c10f19,
+ // /// or in textual repr: mint(address,uint256)
+ // function mint(address to, uint256 tokenId) external returns (bool);
+
+ /// @notice Function to mint token with the given tokenUri.
+ /// @param to The new owner
+ /// @param tokenUri Token URI that would be stored in the NFT properties
+ /// @return uint256 The id of the newly minted token
+ /// @dev EVM selector for this function is: 0x45c17782,
+ /// or in textual repr: mintWithTokenURI(address,string)
+ function mintWithTokenURI(address to, string memory tokenUri) external returns (uint256);
+ // /// @notice Function to mint token with the given tokenUri.
+ // /// @dev `tokenId` should be obtained with `nextTokenId` method,
+ // /// unlike standard, you can't specify it manually
+ // /// @param to The new owner
+ // /// @param tokenId ID of the minted RFT
+ // /// @param tokenUri Token URI that would be stored in the RFT properties
+ // /// @dev EVM selector for this function is: 0x50bb4e7f,
+ // /// or in textual repr: mintWithTokenURI(address,uint256,string)
+ // function mintWithTokenURI(address to, uint256 tokenId, string memory tokenUri) external returns (bool);
+
+}
+
+/// @title Unique extensions for ERC721.
+/// @dev the ERC-165 identifier for this interface is 0x4abaabdb
+interface ERC721UniqueExtensions is Dummy, ERC165 {
+ /// @notice A descriptive name for a collection of NFTs in this contract
+ /// @dev EVM selector for this function is: 0x06fdde03,
+ /// or in textual repr: name()
+ function name() external view returns (string memory);
+
+ /// @notice An abbreviated name for NFTs in this contract
+ /// @dev EVM selector for this function is: 0x95d89b41,
+ /// or in textual repr: symbol()
+ function symbol() external view returns (string memory);
+
+ /// @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);
+
+ // /// Returns the owner (in cross format) of the token.
+ // ///
+ // /// @param tokenId Id for the token.
+ // /// @dev EVM selector for this function is: 0x2b29dace,
+ // /// or in textual repr: crossOwnerOf(uint256)
+ // function crossOwnerOf(uint256 tokenId) external view returns (CrossAddress memory);
+
+ /// Returns the owner (in cross format) of the token.
+ ///
+ /// @param tokenId Id for the token.
+ /// @dev EVM selector for this function is: 0xcaa3a4d0,
+ /// or in textual repr: ownerOfCross(uint256)
+ function ownerOfCross(uint256 tokenId) external view returns (CrossAddress memory);
+
+ /// @notice Count all RFTs assigned to an owner
+ /// @param owner An cross address for whom to query the balance
+ /// @return The number of RFTs owned by `owner`, possibly zero
+ /// @dev EVM selector for this function is: 0xec069398,
+ /// or in textual repr: balanceOfCross((address,uint256))
+ function balanceOfCross(CrossAddress memory owner) external view returns (uint256);
+
+ /// Returns the token properties.
+ ///
+ /// @param tokenId Id for the token.
+ /// @param keys Properties keys. Empty keys for all propertyes.
+ /// @return Vector of properties key/value pairs.
+ /// @dev EVM selector for this function is: 0xe07ede7e,
+ /// or in textual repr: properties(uint256,string[])
+ function properties(uint256 tokenId, string[] memory keys) external view returns (Property[] memory);
+
+ /// @notice Transfer ownership of an RFT
+ /// @dev Throws unless `msg.sender` is the current owner. Throws if `to`
+ /// is the zero address. Throws if `tokenId` is not a valid RFT.
+ /// Throws if RFT pieces have multiple owners.
+ /// @param to The new owner
+ /// @param tokenId The RFT to transfer
+ /// @dev EVM selector for this function is: 0xa9059cbb,
+ /// or in textual repr: transfer(address,uint256)
+ function transfer(address to, uint256 tokenId) external;
+
+ /// @notice Transfer ownership of an RFT
+ /// @dev Throws unless `msg.sender` is the current owner. Throws if `to`
+ /// is the zero address. Throws if `tokenId` is not a valid RFT.
+ /// Throws if RFT pieces have multiple owners.
+ /// @param to The new owner
+ /// @param tokenId The RFT to transfer
+ /// @dev EVM selector for this function is: 0x2ada85ff,
+ /// or in textual repr: transferCross((address,uint256),uint256)
+ function transferCross(CrossAddress memory to, uint256 tokenId) external;
+
+ /// @notice Transfer ownership of an RFT
+ /// @dev Throws unless `msg.sender` is the current owner. Throws if `to`
+ /// is the zero address. Throws if `tokenId` is not a valid RFT.
+ /// Throws if RFT pieces have multiple owners.
+ /// @param to The new owner
+ /// @param tokenId The RFT to transfer
+ /// @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 tokenId
+ ) external;
+
+ // /// @notice Burns a specific ERC721 token.
+ // /// @dev Throws unless `msg.sender` is the current owner or an authorized
+ // /// operator for this RFT. Throws if `from` is not the current owner. Throws
+ // /// if `to` is the zero address. Throws if `tokenId` is not a valid RFT.
+ // /// Throws if RFT pieces have multiple owners.
+ // /// @param from The current owner of the RFT
+ // /// @param tokenId The RFT to transfer
+ // /// @dev EVM selector for this function is: 0x79cc6790,
+ // /// or in textual repr: burnFrom(address,uint256)
+ // function burnFrom(address from, uint256 tokenId) external;
+
+ /// @notice Burns a specific ERC721 token.
+ /// @dev Throws unless `msg.sender` is the current owner or an authorized
+ /// operator for this RFT. Throws if `from` is not the current owner. Throws
+ /// if `to` is the zero address. Throws if `tokenId` is not a valid RFT.
+ /// Throws if RFT pieces have multiple owners.
+ /// @param from The current owner of the RFT
+ /// @param tokenId The RFT to transfer
+ /// @dev EVM selector for this function is: 0xbb2f5a58,
+ /// or in textual repr: burnFromCross((address,uint256),uint256)
+ function burnFromCross(CrossAddress memory from, uint256 tokenId) external;
+
+ /// @notice Returns next free RFT ID.
+ /// @dev EVM selector for this function is: 0x75794a3c,
+ /// or in textual repr: nextTokenId()
+ function nextTokenId() external view returns (uint256);
+
+ // /// @notice Function to mint multiple tokens.
+ // /// @dev `tokenIds` should be an array of consecutive numbers and first number
+ // /// should be obtained with `nextTokenId` method
+ // /// @param to The new owner
+ // /// @param tokenIds IDs of the minted RFTs
+ // /// @dev EVM selector for this function is: 0x44a9945e,
+ // /// or in textual repr: mintBulk(address,uint256[])
+ // function mintBulk(address to, uint256[] memory tokenIds) external returns (bool);
+
+ /// @notice Function to mint a token.
+ /// @param tokenProperties Properties of minted token
+ /// @dev EVM selector for this function is: 0xdf7a5db7,
+ /// or in textual repr: mintBulkCross((((address,uint256),uint128)[],(string,bytes)[])[])
+ function mintBulkCross(MintTokenData[] memory tokenProperties) external returns (bool);
+
+ // /// @notice Function to mint multiple tokens with the given tokenUris.
+ // /// @dev `tokenIds` is array of pairs of token ID and token URI. Token IDs should be consecutive
+ // /// numbers and first number should be obtained with `nextTokenId` method
+ // /// @param to The new owner
+ // /// @param tokens array of pairs of token ID and token URI for minted tokens
+ // /// @dev EVM selector for this function is: 0x36543006,
+ // /// or in textual repr: mintBulkWithTokenURI(address,(uint256,string)[])
+ // function mintBulkWithTokenURI(address to, TokenUri[] memory tokens) external returns (bool);
+
+ /// @notice Function to mint a token.
+ /// @param to The new owner crossAccountId
+ /// @param properties Properties of minted token
+ /// @return uint256 The id of the newly minted token
+ /// @dev EVM selector for this function is: 0xb904db03,
+ /// or in textual repr: mintCross((address,uint256),(string,bytes)[])
+ function mintCross(CrossAddress memory to, Property[] memory properties) external returns (uint256);
+
+ /// Returns EVM address for refungible token
+ ///
+ /// @param token ID of the token
+ /// @dev EVM selector for this function is: 0xab76fac6,
+ /// or in textual repr: tokenContractAddress(uint256)
+ function tokenContractAddress(uint256 token) external view returns (address);
+
+ /// @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);
+}
+
+/// Data for creation token with uri.
+struct TokenUri {
+ /// Id of new token.
+ uint256 id;
+ /// Uri of new token.
+ string uri;
+}
+
+/// Token minting parameters
+struct MintTokenData {
+ /// Minted token owner and number of pieces
+ OwnerPieces[] owners;
+ /// Minted token properties
+ Property[] properties;
+}
+
+/// Token minting parameters
+struct OwnerPieces {
+ /// Minted token owner
+ CrossAddress owner;
+ /// Number of token pieces
+ uint128 pieces;
+}
+
+/// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
+/// @dev See https://eips.ethereum.org/EIPS/eip-721
+/// @dev the ERC-165 identifier for this interface is 0x780e9d63
+interface ERC721Enumerable is Dummy, ERC165 {
+ /// @notice Enumerate valid RFTs
+ /// @param index A counter less than `totalSupply()`
+ /// @return The token identifier for the `index`th NFT,
+ /// (sort order not specified)
+ /// @dev EVM selector for this function is: 0x4f6ccce7,
+ /// or in textual repr: tokenByIndex(uint256)
+ function tokenByIndex(uint256 index) external view returns (uint256);
+
+ /// Not implemented
+ /// @dev EVM selector for this function is: 0x2f745c59,
+ /// or in textual repr: tokenOfOwnerByIndex(address,uint256)
+ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);
+
+ /// @notice Count RFTs tracked by this contract
+ /// @return A count of valid RFTs tracked by this contract, where each one of
+ /// them has an assigned and queryable owner not equal to the zero address
+ /// @dev EVM selector for this function is: 0x18160ddd,
+ /// or in textual repr: totalSupply()
+ function totalSupply() external view returns (uint256);
+}
+
+/// @dev inlined interface
+interface ERC721Events {
+ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
+ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
+ event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
+}
+
+/// @title ERC-721 Non-Fungible Token Standard
+/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
+/// @dev the ERC-165 identifier for this interface is 0x80ac58cd
+interface ERC721 is Dummy, ERC165, ERC721Events {
+ /// @notice Count all RFTs assigned to an owner
+ /// @dev RFTs assigned to the zero address are considered invalid, and this
+ /// function throws for queries about the zero address.
+ /// @param owner An address for whom to query the balance
+ /// @return The number of RFTs owned by `owner`, possibly zero
+ /// @dev EVM selector for this function is: 0x70a08231,
+ /// or in textual repr: balanceOf(address)
+ function balanceOf(address owner) external view returns (uint256);
+
+ /// @notice Find the owner of an RFT
+ /// @dev RFTs assigned to zero address are considered invalid, and queries
+ /// about them do throw.
+ /// Returns special 0xffffffffffffffffffffffffffffffffffffffff address for
+ /// the tokens that are partially owned.
+ /// @param tokenId The identifier for an RFT
+ /// @return The address of the owner of the RFT
+ /// @dev EVM selector for this function is: 0x6352211e,
+ /// or in textual repr: ownerOf(uint256)
+ function ownerOf(uint256 tokenId) external view returns (address);
+
+ /// @dev Not implemented
+ /// @dev EVM selector for this function is: 0xb88d4fde,
+ /// or in textual repr: safeTransferFrom(address,address,uint256,bytes)
+ function safeTransferFrom(
+ address from,
+ address to,
+ uint256 tokenId,
+ bytes memory data
+ ) external;
+
+ /// @dev Not implemented
+ /// @dev EVM selector for this function is: 0x42842e0e,
+ /// or in textual repr: safeTransferFrom(address,address,uint256)
+ function safeTransferFrom(
+ address from,
+ address to,
+ uint256 tokenId
+ ) external;
+
+ /// @notice Transfer ownership of an RFT -- THE CALLER IS RESPONSIBLE
+ /// TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE
+ /// THEY MAY BE PERMANENTLY LOST
+ /// @dev Throws unless `msg.sender` is the current owner or an authorized
+ /// operator for this RFT. Throws if `from` is not the current owner. Throws
+ /// if `to` is the zero address. Throws if `tokenId` is not a valid RFT.
+ /// Throws if RFT pieces have multiple owners.
+ /// @param from The current owner of the NFT
+ /// @param to The new owner
+ /// @param tokenId The NFT to transfer
+ /// @dev EVM selector for this function is: 0x23b872dd,
+ /// or in textual repr: transferFrom(address,address,uint256)
+ function transferFrom(
+ address from,
+ address to,
+ uint256 tokenId
+ ) external;
+
+ /// @dev Not implemented
+ /// @dev EVM selector for this function is: 0x095ea7b3,
+ /// or in textual repr: approve(address,uint256)
+ function approve(address approved, uint256 tokenId) external;
+
+ /// @notice Sets or unsets the approval of a given operator.
+ /// The `operator` is allowed to transfer all token pieces of the `caller` on their behalf.
+ /// @param operator Operator
+ /// @param approved Should operator status be granted or revoked?
+ /// @dev EVM selector for this function is: 0xa22cb465,
+ /// or in textual repr: setApprovalForAll(address,bool)
+ function setApprovalForAll(address operator, bool approved) external;
+
+ /// @dev Not implemented
+ /// @dev EVM selector for this function is: 0x081812fc,
+ /// or in textual repr: getApproved(uint256)
+ function getApproved(uint256 tokenId) external view returns (address);
+
+ /// @notice Tells whether the given `owner` approves the `operator`.
+ /// @dev EVM selector for this function is: 0xe985e9c5,
+ /// or in textual repr: isApprovedForAll(address,address)
+ function isApprovedForAll(address owner, address operator) external view returns (bool);
+}
+
+interface UniqueRefungible is
+ Dummy,
+ ERC165,
+ ERC721,
+ ERC721Enumerable,
+ ERC721UniqueExtensions,
+ ERC721UniqueMintable,
+ ERC721Burnable,
+ ERC721Metadata,
+ Collection,
+ TokenProperties
+{}
js-packages/evm-abi/api/UniqueRefungibleToken.soldiffbeforeafterboth--- /dev/null
+++ b/js-packages/evm-abi/api/UniqueRefungibleToken.sol
@@ -0,0 +1,181 @@
+// 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);
+}
+
+/// @dev the ERC-165 identifier for this interface is 0x5755c3f2
+interface ERC1633 is Dummy, ERC165 {
+ /// @dev EVM selector for this function is: 0x80a54001,
+ /// or in textual repr: parentToken()
+ function parentToken() external view returns (address);
+
+ /// @dev EVM selector for this function is: 0xd7f083f3,
+ /// or in textual repr: parentTokenId()
+ function parentTokenId() external view returns (uint256);
+}
+
+/// @dev the ERC-165 identifier for this interface is 0xedd3a564
+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);
+
+ // /// @dev Function that burns an amount of the token 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);
+
+ /// @dev Function that burns an amount of the token 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);
+
+ /// @dev Approve the passed address to spend the specified amount of tokens on behalf of `msg.sender`.
+ /// Beware that changing an allowance with this method brings the risk that someone may use both the old
+ /// and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
+ /// race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
+ /// https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
+ /// @param spender The crossaccount which will spend the funds.
+ /// @param amount The amount of tokens to be spent.
+ /// @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);
+
+ /// @notice Balance of account
+ /// @param owner An cross address for whom to query the balance
+ /// @return The number of fingibles owned by `owner`, possibly zero
+ /// @dev EVM selector for this function is: 0xec069398,
+ /// or in textual repr: balanceOfCross((address,uint256))
+ function balanceOfCross(CrossAddress memory owner) external view returns (uint256);
+
+ /// @dev Function that changes total amount of the tokens.
+ /// Throws if `msg.sender` doesn't owns all of the tokens.
+ /// @param amount New total amount of the tokens.
+ /// @dev EVM selector for this function is: 0xd2418ca7,
+ /// or in textual repr: repartition(uint256)
+ function repartition(uint256 amount) external returns (bool);
+
+ /// @dev Transfer token for a specified address
+ /// @param to The crossaccount to transfer to.
+ /// @param amount The amount to be transferred.
+ /// @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 Transfer tokens from one address to another
+ /// @param from The address which you want to send tokens from
+ /// @param to The address which you want to transfer to
+ /// @param amount the amount of tokens to be transferred
+ /// @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);
+}
+
+/// Cross account struct
+struct CrossAddress {
+ address eth;
+ uint256 sub;
+}
+
+/// @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);
+}
+
+/// @title Standard ERC20 token
+///
+/// @dev Implementation of the basic standard token.
+/// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
+/// @dev the ERC-165 identifier for this interface is 0x942e8b22
+interface ERC20 is Dummy, ERC165, ERC20Events {
+ /// @return the name of the token.
+ /// @dev EVM selector for this function is: 0x06fdde03,
+ /// or in textual repr: name()
+ function name() external view returns (string memory);
+
+ /// @return the symbol of the token.
+ /// @dev EVM selector for this function is: 0x95d89b41,
+ /// or in textual repr: symbol()
+ function symbol() external view returns (string memory);
+
+ /// @dev Total number of tokens in existence
+ /// @dev EVM selector for this function is: 0x18160ddd,
+ /// or in textual repr: totalSupply()
+ function totalSupply() external view returns (uint256);
+
+ /// @dev Not supported
+ /// @dev EVM selector for this function is: 0x313ce567,
+ /// or in textual repr: decimals()
+ function decimals() external view returns (uint8);
+
+ /// @dev Gets the balance of the specified address.
+ /// @param owner The address to query the balance of.
+ /// @return An uint256 representing the amount owned by the passed address.
+ /// @dev EVM selector for this function is: 0x70a08231,
+ /// or in textual repr: balanceOf(address)
+ function balanceOf(address owner) external view returns (uint256);
+
+ /// @dev Transfer token for a specified address
+ /// @param to The address to transfer to.
+ /// @param amount The amount to be transferred.
+ /// @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 Transfer tokens from one address to another
+ /// @param from address The address which you want to send tokens from
+ /// @param to address The address which you want to transfer to
+ /// @param amount uint256 the amount of tokens to be transferred
+ /// @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 Approve the passed address to spend the specified amount of tokens on behalf of `msg.sender`.
+ /// Beware that changing an allowance with this method brings the risk that someone may use both the old
+ /// and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
+ /// race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
+ /// https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
+ /// @param spender The address which will spend the funds.
+ /// @param amount The amount of tokens to be spent.
+ /// @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 Function to check the amount of tokens that an owner allowed to a spender.
+ /// @param owner address The address which owns the funds.
+ /// @param spender address The address which will spend the funds.
+ /// @return A uint256 specifying the amount of tokens still available for the spender.
+ /// @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 UniqueRefungibleToken is Dummy, ERC165, ERC20, ERC20UniqueExtensions, ERC1633 {}
js-packages/evm-abi/package.jsondiffbeforeafterboth--- /dev/null
+++ b/js-packages/evm-abi/package.json
@@ -0,0 +1,12 @@
+{
+ "author": "Unique Network",
+ "license": "Apache 2.0",
+ "description": "EVM interfaces for Unique Network chains",
+ "engines": {
+ "node": ">=18"
+ },
+ "name": "@unique-nft/evm-abi",
+ "type": "module",
+ "version": "1.0.0",
+ "main": "index.js"
+}
js-packages/package.jsondiffbeforeafterboth--- a/js-packages/package.json
+++ b/js-packages/package.json
@@ -26,6 +26,7 @@
"@types/node": "^20.8.10",
"@typescript-eslint/eslint-plugin": "^6.10.0",
"@typescript-eslint/parser": "^6.10.0",
+ "@unique-nft/evm-abi": "workspace:*",
"@unique-nft/opal-testnet-types": "workspace:*",
"@unique-nft/playgrounds": "workspace:*",
"@unique/test-utils": "workspace:*",
@@ -58,6 +59,7 @@
"packageManager": "yarn@3.6.1",
"workspaces": [
"types",
+ "evm-abi",
"playgrounds",
"scripts",
"test-utils",
js-packages/scripts/benchmarks/mintFee/index.tsdiffbeforeafterboth--- a/js-packages/scripts/benchmarks/mintFee/index.ts
+++ b/js-packages/scripts/benchmarks/mintFee/index.ts
@@ -1,5 +1,5 @@
-import {usingEthPlaygrounds} from '@unique/tests/eth/util/index.js';
-import {EthUniqueHelper} from '@unique/tests/eth/util/playgrounds/unique.dev.js';
+import {usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
+import {EthUniqueHelper} from '@unique/test-utils/eth/index.js';
import {readFile} from 'fs/promises';
import type {ICrossAccountId} from '@unique-nft/playgrounds/types.js';
import type {IKeyringPair} from '@polkadot/types/types';
@@ -8,29 +8,31 @@
import {createObjectCsvWriter} from 'csv-writer';
import {convertToTokens, createCollectionForBenchmarks, PERMISSIONS, PROPERTIES} from '../utils/common.js';
import {makeNames} from '@unique/test-utils/util.js';
-import type {ContractImports} from '@unique/tests/eth/util/playgrounds/types.js';
+import type {ContractImports} from '@unique/test-utils/eth/types.js';
const {dirname} = makeNames(import.meta.url);
+const EVM_ABI_DIR = `${dirname}/../../../evm-abi`;
+
export const CONTRACT_IMPORT: ContractImports[] = [
{
- fsPath: `${dirname}/../../../tests/eth/api/CollectionHelpers.sol`,
+ fsPath: `${EVM_ABI_DIR}/api/CollectionHelpers.sol`,
solPath: 'eth/api/CollectionHelpers.sol',
},
{
- fsPath: `${dirname}/../../../tests/eth/api/ContractHelpers.sol`,
+ fsPath: `${EVM_ABI_DIR}/api/ContractHelpers.sol`,
solPath: 'eth/api/ContractHelpers.sol',
},
{
- fsPath: `${dirname}/../../../tests/eth/api/UniqueRefungibleToken.sol`,
+ fsPath: `${EVM_ABI_DIR}/api/UniqueRefungibleToken.sol`,
solPath: 'eth/api/UniqueRefungibleToken.sol',
},
{
- fsPath: `${dirname}/../../../tests/eth/api/UniqueRefungible.sol`,
+ fsPath: `${EVM_ABI_DIR}/api/UniqueRefungible.sol`,
solPath: 'eth/api/UniqueRefungible.sol',
},
{
- fsPath: `${dirname}/../../../tests/eth/api/UniqueNFT.sol`,
+ fsPath: `${EVM_ABI_DIR}/api/UniqueNFT.sol`,
solPath: 'eth/api/UniqueNFT.sol',
},
];
js-packages/scripts/benchmarks/nesting/index.tsdiffbeforeafterboth--- a/js-packages/scripts/benchmarks/nesting/index.ts
+++ b/js-packages/scripts/benchmarks/nesting/index.ts
@@ -1,58 +1,60 @@
-import {usingEthPlaygrounds} from '@unique/tests/eth/util/index.js';
-import {EthUniqueHelper} from '@unique/tests/eth/util/playgrounds/unique.dev.js';
+import {usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
+import {EthUniqueHelper} from '@unique/test-utils/eth/index.js';
import {readFile} from 'fs/promises';
import type {IKeyringPair} from '@polkadot/types/types';
import {Contract} from 'web3-eth-contract';
import {convertToTokens} from '../utils/common.js';
import {makeNames} from '@unique/test-utils/util.js';
-import type {ContractImports} from '@unique/tests/eth/util/playgrounds/types.js';
+import type {ContractImports} from '@unique/test-utils/eth/types.js';
import type {RMRKNestableMintable} from './ABIGEN/index.js';
const {dirname} = makeNames(import.meta.url);
+const NODE_MODULES = `${dirname}/../../../../node_modules`;
+
export const CONTRACT_IMPORT: ContractImports[] = [
{
- fsPath: `${dirname}/../../../../node_modules/@rmrk-team/evm-contracts/contracts/RMRK/nestable/RMRKNestable.sol`,
+ fsPath: `${NODE_MODULES}/@rmrk-team/evm-contracts/contracts/RMRK/nestable/RMRKNestable.sol`,
solPath: '@rmrk-team/evm-contracts/contracts/RMRK/nestable/RMRKNestable.sol',
},
{
- fsPath: `${dirname}/../../../../node_modules/@rmrk-team/evm-contracts/contracts/RMRK/nestable/IERC6059.sol`,
+ fsPath: `${NODE_MODULES}/@rmrk-team/evm-contracts/contracts/RMRK/nestable/IERC6059.sol`,
solPath: '@rmrk-team/evm-contracts/contracts/RMRK/nestable/IERC6059.sol',
},
{
- fsPath: `${dirname}/../../../../node_modules/@rmrk-team/evm-contracts/contracts/RMRK/core/RMRKCore.sol`,
+ fsPath: `${NODE_MODULES}/@rmrk-team/evm-contracts/contracts/RMRK/core/RMRKCore.sol`,
solPath: '@rmrk-team/evm-contracts/contracts/RMRK/core/RMRKCore.sol',
},
{
- fsPath: `${dirname}/../../../../node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol`,
+ fsPath: `${NODE_MODULES}/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol`,
solPath: '@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol',
},
{
- fsPath: `${dirname}/../../../../node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol`,
+ fsPath: `${NODE_MODULES}/@openzeppelin/contracts/token/ERC721/IERC721.sol`,
solPath: '@openzeppelin/contracts/token/ERC721/IERC721.sol',
},
{
- fsPath: `${dirname}/../../../../node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol`,
+ fsPath: `${NODE_MODULES}/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol`,
solPath: '@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol',
},
{
- fsPath: `${dirname}/../../../../node_modules/@openzeppelin/contracts/utils/Address.sol`,
+ fsPath: `${NODE_MODULES}/@openzeppelin/contracts/utils/Address.sol`,
solPath: '@openzeppelin/contracts/utils/Address.sol',
},
{
- fsPath: `${dirname}/../../../../node_modules/@openzeppelin/contracts/utils/Context.sol`,
+ fsPath: `${NODE_MODULES}/@openzeppelin/contracts/utils/Context.sol`,
solPath: '@openzeppelin/contracts/utils/Context.sol',
},
{
- fsPath: `${dirname}/../../../../node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol`,
+ fsPath: `${NODE_MODULES}/@openzeppelin/contracts/utils/introspection/IERC165.sol`,
solPath: '@openzeppelin/contracts/utils/introspection/IERC165.sol',
},
{
- fsPath: `${dirname}/../../../../node_modules/@rmrk-team/evm-contracts/contracts/RMRK/library/RMRKErrors.sol`,
+ fsPath: `${NODE_MODULES}/@rmrk-team/evm-contracts/contracts/RMRK/library/RMRKErrors.sol`,
solPath: '@rmrk-team/evm-contracts/contracts/RMRK/library/RMRKErrors.sol',
},
{
- fsPath: `${dirname}/../../../../node_modules/@rmrk-team/evm-contracts/contracts/RMRK/core/IRMRKCore.sol`,
+ fsPath: `${NODE_MODULES}/@rmrk-team/evm-contracts/contracts/RMRK/core/IRMRKCore.sol`,
solPath: '@rmrk-team/evm-contracts/contracts/RMRK/core/IRMRKCore.sol',
},
{
js-packages/scripts/benchmarks/opsFee/index.tsdiffbeforeafterboth--- a/js-packages/scripts/benchmarks/opsFee/index.ts
+++ b/js-packages/scripts/benchmarks/opsFee/index.ts
@@ -1,7 +1,7 @@
-import {usingEthPlaygrounds} from '@unique/tests/eth/util/index.js';
-import {EthUniqueHelper} from '@unique/tests/eth/util/playgrounds/unique.dev.js';
+import {usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
+import {EthUniqueHelper} from '@unique/test-utils/eth/index.js';
import {readFile} from 'fs/promises';
-import {CollectionLimitField, CreateCollectionData, TokenPermissionField} from '@unique/tests/eth/util/playgrounds/types.js';
+import {CollectionLimitField, CreateCollectionData, TokenPermissionField} from '@unique/test-utils/eth/types.js';
import type {IKeyringPair} from '@polkadot/types/types';
import {UniqueFTCollection, UniqueNFTCollection} from '@unique-nft/playgrounds/unique.js';
import {Contract} from 'web3-eth-contract';
@@ -76,7 +76,7 @@
PERMISSIONS,
)) as UniqueNFTCollection;
- const helperContract = await helper.ethNativeContract.collectionHelpers(ethSigner);
+ const helperContract = helper.ethNativeContract.collectionHelpers(ethSigner);
let zeppelelinContract: Contract | null = null;
const ZEPPELIN_OBJECT = '0x' + (await readFile(`${dirname}/../utils/openZeppelin/ERC721/bin/ZeppelinContract.bin`)).toString();
const ZEPPELIN_ABI = JSON.parse((await readFile(`${dirname}/../utils/openZeppelin/ERC721/bin/ZeppelinContract.abi`)).toString());
js-packages/scripts/benchmarks/utils/common.tsdiffbeforeafterboth--- a/js-packages/scripts/benchmarks/utils/common.ts
+++ b/js-packages/scripts/benchmarks/utils/common.ts
@@ -1,4 +1,4 @@
-import {EthUniqueHelper} from '@unique/tests/eth/util/playgrounds/unique.dev.js';
+import {EthUniqueHelper} from '@unique/test-utils/eth/index.js';
import {UniqueNFTCollection, UniqueRFTCollection} from '@unique-nft/playgrounds/unique.js';
import type {ITokenPropertyPermission, TCollectionMode} from '@unique-nft/playgrounds/types.js';
import type {IKeyringPair} from '@polkadot/types/types';
js-packages/scripts/calibrate.tsdiffbeforeafterboth--- a/js-packages/scripts/calibrate.ts
+++ b/js-packages/scripts/calibrate.ts
@@ -1,6 +1,6 @@
import type {IKeyringPair} from '@polkadot/types/types';
-import {usingEthPlaygrounds} from '@unique/tests/eth/util/index.js';
-import {EthUniqueHelper} from '@unique/tests//eth/util/playgrounds/unique.dev.js';
+import {usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
+import {EthUniqueHelper} from '@unique/test-utils/eth/index.js';
class Fract {
static ZERO = new Fract(0n);
js-packages/scripts/correctStateAfterMaintenance.tsdiffbeforeafterboth--- /dev/null
+++ b/js-packages/scripts/correctStateAfterMaintenance.ts
@@ -0,0 +1,69 @@
+import config from '../tests/config.js';
+import {usingPlaygrounds} from '@unique/test-utils/util.js';
+import type {u32} from '@polkadot/types-codec';
+
+const WS_ENDPOINT = config.substrateUrl;
+const DONOR_SEED = '//Alice';
+
+export const main = async(options: { wsEndpoint: string; donorSeed: string } = {
+ wsEndpoint: WS_ENDPOINT,
+ donorSeed: DONOR_SEED,
+}) => {
+ await usingPlaygrounds(async (helper, privateKey) => {
+ const api = helper.getApi();
+
+ if((await api.query.maintenance.enabled()).valueOf()) {
+ throw Error('The network is still in maintenance mode');
+ }
+
+ const pendingBlocks = (
+ await api.query.appPromotion.pendingUnstake.entries()
+ ).map(([k, _v]) =>
+ (k.args[0] as u32).toNumber());
+
+ const currentBlock = (await api.query.system.number() as u32).toNumber();
+
+ const filteredBlocks = pendingBlocks.filter(b => currentBlock > b);
+
+ if(filteredBlocks.length != 0) {
+ console.log(`During maintenance mode, ${filteredBlocks.length} block(s) were not processed. Number(s): ${filteredBlocks}`);
+ } else {
+ console.log('Nothing to change');
+ return;
+ }
+
+ const skippedBlocks = chunk(filteredBlocks, 10);
+
+ const signer = await privateKey(options.donorSeed);
+
+ const txs = skippedBlocks.map((b) =>
+ api.tx.sudo.sudo(api.tx.appPromotion.forceUnstake(b)));
+
+
+ const promises = txs.map((tx) => () => helper.signTransaction(signer, tx));
+
+ await Promise.allSettled(promises.map((p) => p()));
+
+ const failedBlocks: number[] = [];
+ let isSuccess = true;
+
+ for(const b of filteredBlocks) {
+ if(((await api.query.appPromotion.pendingUnstake(b)).toJSON() as any[]).length != 0) {
+ failedBlocks.push(b);
+ isSuccess = false;
+ }
+ }
+
+ if(isSuccess) {
+ console.log('Done. %d block(s) were processed.', filteredBlocks.length);
+ } else {
+ throw new Error(`Something went wrong. Block(s) have not been processed: ${failedBlocks}`);
+ }
+
+
+ }, options.wsEndpoint);
+};
+
+const chunk = <T>(arr: T[], size: number) =>
+ Array.from({length: Math.ceil(arr.length / size)}, (_: any, i: number) =>
+ arr.slice(i * size, i * size + size));
js-packages/scripts/runCheckState.tsdiffbeforeafterboth--- /dev/null
+++ b/js-packages/scripts/runCheckState.ts
@@ -0,0 +1,10 @@
+import {main} from './correctStateAfterMaintenance.js';
+
+main({
+ wsEndpoint: process.env.WS_RPC!,
+ donorSeed: process.env.SUPERUSER_SEED!,
+}).then(() => process.exit(0))
+ .catch((e) => {
+ console.error(e);
+ process.exit(1);
+ });
js-packages/test-utils/eth/index.tsdiffbeforeafterboth--- /dev/null
+++ b/js-packages/test-utils/eth/index.ts
@@ -0,0 +1,616 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// SPDX-License-Identifier: Apache-2.0
+
+/* eslint-disable function-call-argument-newline */
+
+import {readFile} from 'fs/promises';
+
+import * as web3 from 'web3';
+import {WebsocketProvider} from 'web3-core';
+import {Contract} from 'web3-eth-contract';
+
+// @ts-ignore
+import solc from 'solc';
+
+import {evmToAddress} from '@polkadot/util-crypto';
+import type {IKeyringPair} from '@polkadot/types/types';
+
+import {ArrangeGroup, DevUniqueHelper} from '@unique/test-utils/index.js';
+
+import type {ContractImports, CompiledContract, CrossAddress, NormalizedEvent, EthProperty} from './types.js';
+import {CollectionMode, CreateCollectionData} from './types.js';
+
+// Native contracts ABI
+import collectionHelpersAbi from '@unique-nft/evm-abi/abi/collectionHelpers.json' assert {type: 'json'};
+import nativeFungibleAbi from '@unique-nft/evm-abi/abi/nativeFungible.json' assert {type: 'json'};
+import fungibleAbi from '@unique-nft/evm-abi/abi/fungible.json' assert {type: 'json'};
+import fungibleDeprecatedAbi from '@unique-nft/evm-abi/abi/fungibleDeprecated.json' assert {type: 'json'};
+import nonFungibleAbi from '@unique-nft/evm-abi/abi/nonFungible.json' assert {type: 'json'};
+import nonFungibleDeprecatedAbi from '@unique-nft/evm-abi/abi/nonFungibleDeprecated.json' assert {type: 'json'};
+import refungibleAbi from '@unique-nft/evm-abi/abi/reFungible.json' assert {type: 'json'};
+import refungibleDeprecatedAbi from '@unique-nft/evm-abi/abi/reFungibleDeprecated.json' assert {type: 'json'};
+import refungibleTokenAbi from '@unique-nft/evm-abi/abi/reFungibleToken.json' assert {type: 'json'};
+import refungibleTokenDeprecatedAbi from '@unique-nft/evm-abi/abi/reFungibleTokenDeprecated.json' assert {type: 'json'};
+import contractHelpersAbi from '@unique-nft/evm-abi/abi/contractHelpers.json' assert {type: 'json'};
+import type {ICrossAccountId, TEthereumAccount, TCollectionMode} from '@unique-nft/playgrounds/types.js';
+
+class EthGroupBase {
+ helper: EthUniqueHelper;
+ gasPrice?: string;
+
+ constructor(helper: EthUniqueHelper) {
+ this.helper = helper;
+ }
+ async getGasPrice() {
+ if(this.gasPrice)
+ return this.gasPrice;
+ this.gasPrice = await this.helper.getWeb3().eth.getGasPrice();
+ return this.gasPrice;
+ }
+}
+
+class ContractGroup extends EthGroupBase {
+ async findImports(imports?: ContractImports[]) {
+ if(!imports) return function(path: string) {
+ return {error: `File not found: ${path}`};
+ };
+
+ const knownImports = {} as { [key: string]: string };
+ for(const imp of imports) {
+ knownImports[imp.solPath] = (await readFile(imp.fsPath)).toString();
+ }
+
+ return function(path: string) {
+ if(path in knownImports) return {contents: knownImports[path]};
+ return {error: `File not found: ${path}`};
+ };
+ }
+
+ async compile(name: string, src: string, imports?: ContractImports[]): Promise<CompiledContract> {
+ const compiled = JSON.parse(solc.compile(JSON.stringify({
+ language: 'Solidity',
+ sources: {
+ [`${name}.sol`]: {
+ content: src,
+ },
+ },
+ settings: {
+ outputSelection: {
+ '*': {
+ '*': ['*'],
+ },
+ },
+ },
+ }), {import: await this.findImports(imports)}));
+
+ const hasErrors = compiled['errors']
+ && compiled['errors'].length > 0
+ && compiled.errors.some(function(err: any) {
+ return err.severity == 'error';
+ });
+
+ if(hasErrors) {
+ throw compiled.errors;
+ }
+ const out = compiled.contracts[`${name}.sol`][name];
+
+ return {
+ abi: out.abi,
+ object: '0x' + out.evm.bytecode.object,
+ };
+ }
+
+ async deployByCode(signer: string, name: string, src: string, imports?: ContractImports[], gas?: number, args?: any[]): Promise<Contract> {
+ const compiledContract = await this.compile(name, src, imports);
+ return this.deployByAbi(signer, compiledContract.abi, compiledContract.object, gas, args);
+ }
+
+ async deployByAbi(signer: string, abi: any, object: string, gas?: number, args?: any[]): Promise<Contract> {
+ const web3 = this.helper.getWeb3();
+ const contract = new web3.eth.Contract(abi, undefined, {
+ data: object,
+ from: signer,
+ gas: gas ?? this.helper.eth.DEFAULT_GAS,
+ });
+ return await contract.deploy({data: object, arguments: args}).send({from: signer});
+ }
+
+}
+
+class NativeContractGroup extends EthGroupBase {
+
+ contractHelpers(caller: string) {
+ const web3 = this.helper.getWeb3();
+ return new web3.eth.Contract(contractHelpersAbi as any, this.helper.getApi().consts.evmContractHelpers.contractAddress.toString(), {
+ from: caller,
+ gas: this.helper.eth.DEFAULT_GAS,
+ });
+ }
+
+ collectionHelpers(caller: string) {
+ const web3 = this.helper.getWeb3();
+ return new web3.eth.Contract(collectionHelpersAbi as any, this.helper.getApi().consts.common.contractAddress.toString(), {
+ from: caller,
+ gas: this.helper.eth.DEFAULT_GAS,
+ });
+ }
+
+ collection(address: string, mode: TCollectionMode, caller?: string, mergeDeprecated = false) {
+ let abi;
+ if(address === this.helper.ethAddress.fromCollectionId(0)) {
+ abi = nativeFungibleAbi;
+ } else {
+ abi ={
+ 'nft': nonFungibleAbi,
+ 'rft': refungibleAbi,
+ 'ft': fungibleAbi,
+ }[mode];
+ }
+ if(mergeDeprecated) {
+ const deprecated = {
+ 'nft': nonFungibleDeprecatedAbi,
+ 'rft': refungibleDeprecatedAbi,
+ 'ft': fungibleDeprecatedAbi,
+ }[mode];
+ abi = [...abi, ...deprecated];
+ }
+ const web3 = this.helper.getWeb3();
+ return new web3.eth.Contract(abi as any, address, {
+ gas: this.helper.eth.DEFAULT_GAS,
+ ...(caller ? {from: caller} : {}),
+ });
+ }
+
+ collectionById(collectionId: number, mode: 'nft' | 'rft' | 'ft', caller?: string, mergeDeprecated = false) {
+ return this.collection(this.helper.ethAddress.fromCollectionId(collectionId), mode, caller, mergeDeprecated);
+ }
+
+ rftToken(address: string, caller?: string, mergeDeprecated = false) {
+ const web3 = this.helper.getWeb3();
+ const abi = mergeDeprecated ? [...refungibleTokenAbi, ...refungibleTokenDeprecatedAbi] : refungibleTokenAbi;
+ return new web3.eth.Contract(abi as any, address, {
+ gas: this.helper.eth.DEFAULT_GAS,
+ ...(caller ? {from: caller} : {}),
+ });
+ }
+
+ rftTokenById(collectionId: number, tokenId: number, caller?: string, mergeDeprecated = false) {
+ return this.rftToken(this.helper.ethAddress.fromTokenId(collectionId, tokenId), caller, mergeDeprecated);
+ }
+}
+
+class CreateCollectionTransaction {
+ signer: string;
+ data: CreateCollectionData;
+ mergeDeprecated: boolean;
+ helper: EthUniqueHelper;
+
+ constructor(helper: EthUniqueHelper, signer: string, data: CreateCollectionData, mergeDeprecated = false) {
+ this.helper = helper;
+ this.signer = signer;
+
+ let flags = 0;
+ // convert CollectionFlags to number and join them in one number
+ if(!data.flags) {
+ flags = 0;
+ } else if(typeof data.flags == 'number') {
+ flags = data.flags;
+ } else {
+ for(let i = 0; i < data.flags.length; i++){
+ const flag = data.flags[i];
+ flags = flags | flag;
+ }
+ }
+ data.flags = flags;
+
+ this.data = data;
+ this.mergeDeprecated = mergeDeprecated;
+ }
+
+ // eslint-disable-next-line require-await
+ private async createTransaction() {
+ const collectionHelper = this.helper.ethNativeContract.collectionHelpers(this.signer);
+ let collectionMode;
+ switch (this.data.collectionMode) {
+ case 'nft': collectionMode = CollectionMode.Nonfungible; break;
+ case 'rft': collectionMode = CollectionMode.Refungible; break;
+ case 'ft': collectionMode = CollectionMode.Fungible; break;
+ }
+
+ const tx = collectionHelper.methods.createCollection([
+ this.data.name,
+ this.data.description,
+ this.data.tokenPrefix,
+ collectionMode,
+ this.data.decimals,
+ this.data.properties,
+ this.data.tokenPropertyPermissions,
+ this.data.adminList,
+ this.data.nestingSettings,
+ this.data.limits,
+ this.data.pendingSponsor,
+ this.data.flags,
+ ]);
+ return tx;
+ }
+
+ async send(options?: any): Promise<{ collectionId: number, collectionAddress: string, events: NormalizedEvent[], collection: Contract }> {
+ const collectionCreationPrice = {
+ value: Number(this.helper.balance.getCollectionCreationPrice()),
+ };
+ const tx = await this.createTransaction();
+ const result = await tx.send({...options, ...collectionCreationPrice});
+
+ const collectionAddress = this.helper.ethAddress.normalizeAddress(result.events.CollectionCreated.returnValues.collectionId);
+ const collectionId = this.helper.ethAddress.extractCollectionId(collectionAddress);
+ const events = this.helper.eth.normalizeEvents(result.events);
+ const collection = await this.helper.ethNativeContract.collectionById(collectionId, this.data.collectionMode, this.signer, this.mergeDeprecated);
+
+ return {collectionId, collectionAddress, events, collection};
+ }
+
+ async call(options?: any) {
+ const collectionCreationPrice = {
+ value: Number(this.helper.balance.getCollectionCreationPrice()),
+ };
+ const tx = await this.createTransaction();
+
+ return await tx.call({...options, ...collectionCreationPrice});
+ }
+}
+
+
+class EthGroup extends EthGroupBase {
+ DEFAULT_GAS = 2_500_000;
+
+ createAccount() {
+ const web3 = this.helper.getWeb3();
+ const account = web3.eth.accounts.create();
+ web3.eth.accounts.wallet.add(account.privateKey);
+ return account.address;
+ }
+
+ async createAccountWithBalance(donor: IKeyringPair, amount = 600n) {
+ const account = this.createAccount();
+ await this.transferBalanceFromSubstrate(donor, account, amount);
+
+ return account;
+ }
+
+ async transferBalanceFromSubstrate(donor: IKeyringPair, recepient: string, amount = 100n, inTokens = true) {
+ return await this.helper.balance.transferToSubstrate(donor, evmToAddress(recepient), amount * (inTokens ? this.helper.balance.getOneTokenNominal() : 1n));
+ }
+
+ async getCollectionCreationFee(signer: string) {
+ const collectionHelper = await this.helper.ethNativeContract.collectionHelpers(signer);
+ return await collectionHelper.methods.collectionCreationFee().call();
+ }
+
+ async sendEVM(signer: IKeyringPair, contractAddress: string, abi: string, value: string, gasLimit?: number) {
+ if(!gasLimit) gasLimit = this.DEFAULT_GAS;
+ const web3 = this.helper.getWeb3();
+ // FIXME: can't send legacy transaction using tx.evm.call
+ const gasPrice = await web3.eth.getGasPrice();
+ // TODO: check execution status
+ await this.helper.executeExtrinsic(
+ signer,
+ 'api.tx.evm.call', [this.helper.address.substrateToEth(signer.address), contractAddress, abi, value, gasLimit, gasPrice, null, null, []],
+ true,
+ );
+ }
+
+ async callEVM(signer: TEthereumAccount, contractAddress: string, abi: string) {
+ return await this.helper.callRpc('api.rpc.eth.call', [{from: signer, to: contractAddress, data: abi}]);
+ }
+
+ createCollectionMethodName(mode: TCollectionMode) {
+ switch (mode) {
+ case 'ft':
+ return 'createFTCollection';
+ case 'nft':
+ return 'createNFTCollection';
+ case 'rft':
+ return 'createRFTCollection';
+ }
+ }
+
+ createCollection(signer: string, data: CreateCollectionData, mergeDeprecated = false): CreateCollectionTransaction {
+ return new CreateCollectionTransaction(this.helper, signer, data, mergeDeprecated);
+ }
+
+ createNFTCollection(signer: string, name: string, description: string, tokenPrefix: string): Promise<{ collectionId: number, collectionAddress: string, events: NormalizedEvent[] }> {
+ return this.createCollection(signer, new CreateCollectionData(name, description, tokenPrefix, 'nft')).send();
+ }
+
+ async createERC721MetadataCompatibleCollection(signer: string, data: CreateCollectionData, baseUri: string): Promise<{ collectionId: number, collectionAddress: string, events: NormalizedEvent[] }> {
+ const collectionHelper = await this.helper.ethNativeContract.collectionHelpers(signer);
+
+ const {collectionId, collectionAddress, events} = await this.createCollection(signer, data).send();
+
+ await collectionHelper.methods.makeCollectionERC721MetadataCompatible(collectionAddress, baseUri).send();
+
+ return {collectionId, collectionAddress, events};
+ }
+
+ async createERC721MetadataCompatibleNFTCollection(signer: string, name: string, description: string, tokenPrefix: string, baseUri: string): Promise<{ collectionId: number, collectionAddress: string, events: NormalizedEvent[] }> {
+ const collectionHelper = await this.helper.ethNativeContract.collectionHelpers(signer);
+
+ const {collectionId, collectionAddress, events} = await this.createCollection(signer, new CreateCollectionData(name, description, tokenPrefix, 'nft')).send();
+
+ await collectionHelper.methods.makeCollectionERC721MetadataCompatible(collectionAddress, baseUri).send();
+
+ return {collectionId, collectionAddress, events};
+ }
+
+ createRFTCollection(signer: string, name: string, description: string, tokenPrefix: string): Promise<{ collectionId: number, collectionAddress: string, events: NormalizedEvent[] }> {
+ return this.createCollection(signer, new CreateCollectionData(name, description, tokenPrefix, 'rft')).send();
+ }
+
+ createFungibleCollection(signer: string, name: string, _decimals: number, description: string, tokenPrefix: string): Promise<{ collectionId: number, collectionAddress: string, events: NormalizedEvent[] }> {
+ return this.createCollection(signer, new CreateCollectionData(name, description, tokenPrefix, 'ft')).send();
+ }
+
+ async createERC721MetadataCompatibleRFTCollection(signer: string, name: string, description: string, tokenPrefix: string, baseUri: string): Promise<{ collectionId: number, collectionAddress: string, events: NormalizedEvent[] }> {
+ const collectionHelper = await this.helper.ethNativeContract.collectionHelpers(signer);
+
+ const {collectionId, collectionAddress, events} = await this.createCollection(signer, new CreateCollectionData(name, description, tokenPrefix, 'rft')).send();
+
+ await collectionHelper.methods.makeCollectionERC721MetadataCompatible(collectionAddress, baseUri).send();
+
+ return {collectionId, collectionAddress, events};
+ }
+
+ async deployCollectorContract(signer: string): Promise<Contract> {
+ return await this.helper.ethContract.deployByCode(signer, 'Collector', `
+ // SPDX-License-Identifier: UNLICENSED
+ pragma solidity ^0.8.6;
+
+ contract Collector {
+ uint256 collected;
+ fallback() external payable {
+ giveMoney();
+ }
+ function giveMoney() public payable {
+ collected += msg.value;
+ }
+ function getCollected() public view returns (uint256) {
+ return collected;
+ }
+ function getUnaccounted() public view returns (uint256) {
+ return address(this).balance - collected;
+ }
+
+ function withdraw(address payable target) public {
+ target.transfer(collected);
+ collected = 0;
+ }
+ }
+ `);
+ }
+
+ async deployFlipper(signer: string): Promise<Contract> {
+ return await this.helper.ethContract.deployByCode(signer, 'Flipper', `
+ // SPDX-License-Identifier: UNLICENSED
+ pragma solidity ^0.8.6;
+
+ contract Flipper {
+ bool value = false;
+ function flip() public {
+ value = !value;
+ }
+ function getValue() public view returns (bool) {
+ return value;
+ }
+ }
+ `);
+ }
+
+ async recordCallFee(user: string, call: () => Promise<any>): Promise<bigint> {
+ const before = await this.helper.balance.getEthereum(user);
+ await call();
+ // In dev mode, the transaction might not finish processing in time
+ await this.helper.wait.newBlocks(1);
+ const after = await this.helper.balance.getEthereum(user);
+
+ return before - after;
+ }
+
+ normalizeEvents(events: any): NormalizedEvent[] {
+ const output = [];
+ for(const key of Object.keys(events)) {
+ if(key.match(/^[0-9]+$/)) {
+ output.push(events[key]);
+ } else if(Array.isArray(events[key])) {
+ output.push(...events[key]);
+ } else {
+ output.push(events[key]);
+ }
+ }
+ output.sort((a, b) => a.logIndex - b.logIndex);
+ return output.map(({address, event, returnValues}) => {
+ const args: { [key: string]: string } = {};
+ for(const key of Object.keys(returnValues)) {
+ if(!key.match(/^[0-9]+$/)) {
+ args[key] = returnValues[key];
+ }
+ }
+ return {
+ address,
+ event,
+ args,
+ };
+ });
+ }
+
+ async calculateFee(address: ICrossAccountId, code: () => Promise<any>): Promise<bigint> {
+ const wrappedCode = async () => {
+ await code();
+ // In dev mode, the transaction might not finish processing in time
+ await this.helper.wait.newBlocks(1);
+ };
+ return await this.helper.arrange.calculcateFee(address, wrappedCode);
+ }
+}
+
+class EthAddressGroup extends EthGroupBase {
+ extractCollectionId(address: string): number {
+ if(!(address.length === 42 || address.length === 40)) throw new Error('address wrong format');
+ return parseInt(address.slice(address.length - 8), 16);
+ }
+
+ fromCollectionId(collectionId: number): string {
+ if(collectionId >= 0xffffffff || collectionId < 0) throw new Error('collectionId overflow');
+ return web3.default.utils.toChecksumAddress(`0x17c4e6453cc49aaaaeaca894e6d9683e${collectionId.toString(16).padStart(8, '0')}`);
+ }
+
+ extractTokenId(address: string): { collectionId: number, tokenId: number } {
+ if(!address.startsWith('0x'))
+ throw 'address not starts with "0x"';
+ if(address.length > 42)
+ throw 'address length is more than 20 bytes';
+ return {
+ collectionId: Number('0x' + address.substring(address.length - 16, address.length - 8)),
+ tokenId: Number('0x' + address.substring(address.length - 8)),
+ };
+ }
+
+ fromTokenId(collectionId: number, tokenId: number): string {
+ return this.helper.util.getTokenAddress({collectionId, tokenId});
+ }
+
+ normalizeAddress(address: string): string {
+ return '0x' + address.substring(address.length - 40);
+ }
+}
+export class EthPropertyGroup extends EthGroupBase {
+ property(key: string, value: string): EthProperty {
+ return [
+ key,
+ '0x' + Buffer.from(value).toString('hex'),
+ ];
+ }
+}
+export type EthUniqueHelperConstructor = new (...args: any[]) => EthUniqueHelper;
+
+export class EthCrossAccountGroup extends EthGroupBase {
+ createAccount(): CrossAddress {
+ return this.fromAddress(this.helper.eth.createAccount());
+ }
+
+ async createAccountWithBalance(donor: IKeyringPair, amount = 100n) {
+ return this.fromAddress(await this.helper.eth.createAccountWithBalance(donor, amount));
+ }
+
+ fromAddress(address: TEthereumAccount): CrossAddress {
+ return {
+ eth: address,
+ sub: '0',
+ };
+ }
+
+ fromAddr(address: TEthereumAccount): [string, string] {
+ return [
+ address,
+ '0',
+ ];
+ }
+
+ fromKeyringPair(keyring: IKeyringPair): CrossAddress {
+ return {
+ eth: '0x0000000000000000000000000000000000000000',
+ sub: keyring.addressRaw,
+ };
+ }
+}
+
+export class FeeGas {
+ fee: number | bigint = 0n;
+
+ gas: number | bigint = 0n;
+
+ public static async build(helper: EthUniqueHelper, fee: bigint): Promise<FeeGas> {
+ const instance = new FeeGas();
+ instance.fee = instance.convertToTokens(fee);
+ instance.gas = await instance.convertToGas(fee, helper);
+ return instance;
+ }
+
+ private async convertToGas(fee: bigint, helper: EthUniqueHelper): Promise<bigint> {
+ const gasPrice = BigInt(await helper.getWeb3().eth.getGasPrice());
+ return fee / gasPrice;
+ }
+
+ private convertToTokens(value: bigint, nominal = 1_000_000_000_000_000_000n): number {
+ return Number((value * 1000n) / nominal) / 1000;
+ }
+}
+
+class EthArrangeGroup extends ArrangeGroup {
+ declare helper: EthUniqueHelper;
+
+ constructor(helper: EthUniqueHelper) {
+ super(helper);
+ this.helper = helper;
+ }
+
+ async calculcateFeeGas(payer: ICrossAccountId, promise: () => Promise<any>): Promise<FeeGas> {
+ const fee = await this.calculcateFee(payer, promise);
+ return await FeeGas.build(this.helper, fee);
+ }
+}
+export class EthUniqueHelper extends DevUniqueHelper {
+ web3: web3.default | null = null;
+ web3Provider: WebsocketProvider | null = null;
+
+ eth: EthGroup;
+ ethAddress: EthAddressGroup;
+ ethCrossAccount: EthCrossAccountGroup;
+ ethNativeContract: NativeContractGroup;
+ ethContract: ContractGroup;
+ ethProperty: EthPropertyGroup;
+ declare arrange: EthArrangeGroup;
+ constructor(logger: { log: (msg: any, level: any) => void, level: any }, options: { [key: string]: any } = {}) {
+ options.helperBase = options.helperBase ?? EthUniqueHelper;
+
+ super(logger, options);
+ this.eth = new EthGroup(this);
+ this.ethAddress = new EthAddressGroup(this);
+ this.ethCrossAccount = new EthCrossAccountGroup(this);
+ this.ethNativeContract = new NativeContractGroup(this);
+ this.ethContract = new ContractGroup(this);
+ this.ethProperty = new EthPropertyGroup(this);
+ this.arrange = new EthArrangeGroup(this);
+ super.arrange = this.arrange;
+ }
+
+ getWeb3(): web3.default {
+ if(this.web3 === null) throw Error('Web3 not connected');
+ return this.web3;
+ }
+
+ connectWeb3(wsEndpoint: string) {
+ if(this.web3 !== null) return;
+ this.web3Provider = new web3.default.providers.WebsocketProvider(wsEndpoint);
+ this.web3 = new web3.default(this.web3Provider);
+ }
+
+ override async disconnect() {
+ if(this.web3 === null) return;
+ this.web3Provider?.connection.close();
+
+ await super.disconnect();
+ }
+
+ override clearApi() {
+ super.clearApi();
+ this.web3 = null;
+ }
+
+ override clone(helperCls: EthUniqueHelperConstructor, options?: { [key: string]: any; }): EthUniqueHelper {
+ const newHelper = super.clone(helperCls, options) as EthUniqueHelper;
+ newHelper.web3 = this.web3;
+ newHelper.web3Provider = this.web3Provider;
+
+ return newHelper;
+ }
+}
js-packages/test-utils/eth/types.tsdiffbeforeafterboth--- /dev/null
+++ b/js-packages/test-utils/eth/types.ts
@@ -0,0 +1,133 @@
+import {CollectionFlag} from '@unique-nft/playgrounds/types.js';
+import type {TCollectionMode} from '@unique-nft/playgrounds/types.js';
+
+export interface ContractImports {
+ solPath: string;
+ fsPath: string;
+}
+
+export interface CompiledContract {
+ abi: any;
+ object: string;
+}
+
+export type NormalizedEvent = {
+ address: string,
+ event: string,
+ args: { [key: string]: string }
+};
+
+export interface OptionUint {
+ status: boolean,
+ value: bigint,
+}
+
+export type EthAddress = string;
+
+export interface CrossAddress {
+ readonly eth: EthAddress,
+ readonly sub: string | Uint8Array,
+}
+
+export type EthProperty = string[];
+
+export enum TokenPermissionField {
+ Mutable,
+ TokenOwner,
+ CollectionAdmin
+}
+
+export enum CollectionLimitField {
+ AccountTokenOwnership,
+ SponsoredDataSize,
+ SponsoredDataRateLimit,
+ TokenLimit,
+ SponsorTransferTimeout,
+ SponsorApproveTimeout,
+ OwnerCanTransfer,
+ OwnerCanDestroy,
+ TransferEnabled
+}
+
+export interface CollectionLimit {
+ field: CollectionLimitField,
+ value: OptionUint,
+}
+
+export interface CollectionLimitValue {
+ field: CollectionLimitField,
+ value: bigint,
+}
+
+export enum CollectionMode {
+ Nonfungible,
+ Fungible,
+ Refungible,
+}
+
+export interface PropertyPermission {
+ code: TokenPermissionField,
+ value: boolean,
+}
+export interface TokenPropertyPermission {
+ key: string,
+ permissions: PropertyPermission[],
+}
+export interface CollectionNestingAndPermission {
+ token_owner: boolean,
+ collection_admin: boolean,
+ restricted: string[],
+}
+
+export const emptyAddress: [string, string] = [
+ '0x0000000000000000000000000000000000000000',
+ '0',
+];
+
+export const CREATE_COLLECTION_DATA_DEFAULTS = {
+ decimals: 0,
+ properties: [],
+ tokenPropertyPermissions: [],
+ adminList: [],
+ nestingSettings: {token_owner: false, collection_admin: false, restricted: []},
+ limits: [],
+ pendingSponsor: emptyAddress,
+ flags: 0,
+};
+
+export interface Property {
+ key: string;
+ value: Buffer;
+}
+
+export class CreateCollectionData {
+ name: string;
+ description: string;
+ tokenPrefix: string;
+ collectionMode: TCollectionMode;
+ decimals? = 0;
+ properties?: Property[] = [];
+ tokenPropertyPermissions?: TokenPropertyPermission[] = [];
+ adminList?: CrossAddress[] = [];
+ nestingSettings?: CollectionNestingAndPermission = {token_owner: false, collection_admin: false, restricted: []};
+ limits?: CollectionLimitValue[] = [];
+ pendingSponsor?: [string, string] = emptyAddress;
+ flags?: number | CollectionFlag[] = [0];
+
+ constructor(
+ name: string,
+ description: string,
+ tokenPrefix: string,
+ collectionMode: TCollectionMode,
+ decimals = 18,
+ ) {
+ this.name = name;
+ this.description = description;
+ this.tokenPrefix = tokenPrefix;
+ this.collectionMode = collectionMode;
+ if(collectionMode == 'ft')
+ this.decimals = decimals;
+ else
+ this.decimals = 0;
+ }
+}
js-packages/test-utils/eth/util.tsdiffbeforeafterboth--- /dev/null
+++ b/js-packages/test-utils/eth/util.ts
@@ -0,0 +1,106 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// SPDX-License-Identifier: Apache-2.0
+
+import * as path from 'path';
+import type {IKeyringPair} from '@polkadot/types/types';
+
+import config from '../../tests/config.js';
+
+import {EthUniqueHelper} from './index.js';
+import {SilentLogger, SilentConsole} from '@unique/test-utils';
+import type {SchedKind} from '@unique/test-utils/util.js';
+
+import chai from 'chai';
+import chaiAsPromised from 'chai-as-promised';
+import chaiLike from 'chai-like';
+import {getTestSeed, MINIMUM_DONOR_FUND, requirePalletsOrSkip, makeNames} from '@unique/test-utils/util.js';
+
+chai.use(chaiAsPromised);
+chai.use(chaiLike);
+export const expect = chai.expect;
+
+export enum SponsoringMode {
+ Disabled = 0,
+ Allowlisted = 1,
+ Generous = 2,
+}
+
+type PrivateKeyFn = (seed: string | {filename?: string, url?: string}) => Promise<IKeyringPair>;
+
+export const usingEthPlaygrounds = async (code: (helper: EthUniqueHelper, privateKey: PrivateKeyFn) => Promise<void>) => {
+ const silentConsole = new SilentConsole();
+ silentConsole.enable();
+
+ const helper = new EthUniqueHelper(new SilentLogger());
+
+ try {
+ await helper.connect(config.substrateUrl);
+ await helper.connectWeb3(config.substrateUrl);
+ const ss58Format = helper.chain.getChainProperties().ss58Format;
+ const privateKey: PrivateKeyFn = async (seed) => {
+ if(typeof seed === 'string') {
+ return helper.util.fromSeed(seed, ss58Format);
+ }
+ if(seed.url) {
+ const {filename} = makeNames(seed.url);
+ seed.filename = filename;
+ } else if(seed.filename) {
+ // Pass
+ } else {
+ throw new Error('no url nor filename set');
+ }
+ const actualSeed = getTestSeed(seed.filename);
+ let account = helper.util.fromSeed(actualSeed, ss58Format);
+ if(await helper.balance.getSubstrate(account.address) < MINIMUM_DONOR_FUND) {
+ console.warn(`${path.basename(seed.filename)}: Not enough funds present on the filename account. Using the default one as the donor instead.`);
+ account = helper.util.fromSeed('//Alice', ss58Format);
+ }
+ return account;
+ };
+ await code(helper, privateKey);
+ }
+ finally {
+ await helper.disconnect();
+ silentConsole.disable();
+ }
+};
+
+export function itEth(name: string, cb: (apis: { helper: EthUniqueHelper, privateKey: PrivateKeyFn }) => any, opts: { only?: boolean, skip?: boolean, requiredPallets?: string[] } = {}) {
+ (opts.only ? it.only :
+ opts.skip ? it.skip : it)(name, async function() {
+ await usingEthPlaygrounds(async (helper, privateKey) => {
+ if(opts.requiredPallets) {
+ requirePalletsOrSkip(this, helper, opts.requiredPallets);
+ }
+
+ await cb({helper, privateKey});
+ });
+ });
+}
+
+export function itEthIfWithPallet(name: string, required: string[], cb: (apis: { helper: EthUniqueHelper, privateKey: PrivateKeyFn }) => any, opts: { only?: boolean, skip?: boolean, requiredPallets?: string[] } = {}) {
+ return itEth(name, cb, {requiredPallets: required, ...opts});
+}
+
+itEth.only = (name: string, cb: (apis: { helper: EthUniqueHelper, privateKey: PrivateKeyFn }) => any) => itEth(name, cb, {only: true});
+itEth.skip = (name: string, cb: (apis: { helper: EthUniqueHelper, privateKey: (seed: string | {filename: string}) => Promise<IKeyringPair> }) => any) => itEth(name, cb, {skip: true});
+
+itEthIfWithPallet.only = (name: string, required: string[], cb: (apis: { helper: EthUniqueHelper, privateKey: PrivateKeyFn }) => any) => itEthIfWithPallet(name, required, cb, {only: true});
+itEthIfWithPallet.skip = (name: string, required: string[], cb: (apis: { helper: EthUniqueHelper, privateKey: PrivateKeyFn }) => any) => itEthIfWithPallet(name, required, cb, {skip: true});
+itEth.ifWithPallets = itEthIfWithPallet;
+
+export function itSchedEth(
+ name: string,
+ cb: (schedKind: SchedKind, apis: { helper: EthUniqueHelper, privateKey: PrivateKeyFn }) => any,
+ opts: { only?: boolean, skip?: boolean, requiredPallets?: string[] } = {},
+) {
+ itEth(name + ' (anonymous scheduling)', (apis) => cb('anon', apis), opts);
+ itEth(name + ' (named scheduling)', (apis) => cb('named', apis), opts);
+}
+itSchedEth.only = (name: string, cb: (schedKind: SchedKind, apis: { helper: EthUniqueHelper, privateKey: (seed: string | {filename: string}) => Promise<IKeyringPair> }) => any) => itSchedEth(name, cb, {only: true});
+itSchedEth.skip = (name: string, cb: (schedKind: SchedKind, apis: { helper: EthUniqueHelper, privateKey: (seed: string | {filename: string}) => Promise<IKeyringPair> }) => any) => itSchedEth(name, cb, {skip: true});
+itSchedEth.ifWithPallets = itSchedIfWithPallets;
+
+function itSchedIfWithPallets(name: string, required: string[], cb: (schedKind: SchedKind, apis: { helper: EthUniqueHelper, privateKey: PrivateKeyFn }) => any, opts: { only?: boolean, skip?: boolean, requiredPallets?: string[] } = {}) {
+ return itSchedEth(name, cb, {requiredPallets: required, ...opts});
+}
js-packages/tests/eth/abi/collectionHelpers.jsondiffbeforeafterboth--- a/js-packages/tests/eth/abi/collectionHelpers.json
+++ /dev/null
@@ -1,267 +0,0 @@
-[
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "collectionId",
- "type": "address"
- }
- ],
- "name": "CollectionChanged",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "owner",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "collectionId",
- "type": "address"
- }
- ],
- "name": "CollectionCreated",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "collectionId",
- "type": "address"
- }
- ],
- "name": "CollectionDestroyed",
- "type": "event"
- },
- {
- "inputs": [
- { "internalType": "uint32", "name": "collectionId", "type": "uint32" }
- ],
- "name": "collectionAddress",
- "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "collectionCreationFee",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "collectionAddress",
- "type": "address"
- }
- ],
- "name": "collectionId",
- "outputs": [{ "internalType": "uint32", "name": "", "type": "uint32" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "string", "name": "name", "type": "string" },
- { "internalType": "string", "name": "description", "type": "string" },
- {
- "internalType": "string",
- "name": "token_prefix",
- "type": "string"
- },
- {
- "internalType": "enum CollectionMode",
- "name": "mode",
- "type": "uint8"
- },
- { "internalType": "uint8", "name": "decimals", "type": "uint8" },
- {
- "components": [
- { "internalType": "string", "name": "key", "type": "string" },
- { "internalType": "bytes", "name": "value", "type": "bytes" }
- ],
- "internalType": "struct Property[]",
- "name": "properties",
- "type": "tuple[]"
- },
- {
- "components": [
- { "internalType": "string", "name": "key", "type": "string" },
- {
- "components": [
- {
- "internalType": "enum TokenPermissionField",
- "name": "code",
- "type": "uint8"
- },
- { "internalType": "bool", "name": "value", "type": "bool" }
- ],
- "internalType": "struct PropertyPermission[]",
- "name": "permissions",
- "type": "tuple[]"
- }
- ],
- "internalType": "struct TokenPropertyPermission[]",
- "name": "token_property_permissions",
- "type": "tuple[]"
- },
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress[]",
- "name": "admin_list",
- "type": "tuple[]"
- },
- {
- "components": [
- { "internalType": "bool", "name": "token_owner", "type": "bool" },
- {
- "internalType": "bool",
- "name": "collection_admin",
- "type": "bool"
- },
- {
- "internalType": "address[]",
- "name": "restricted",
- "type": "address[]"
- }
- ],
- "internalType": "struct CollectionNestingAndPermission",
- "name": "nesting_settings",
- "type": "tuple"
- },
- {
- "components": [
- {
- "internalType": "enum CollectionLimitField",
- "name": "field",
- "type": "uint8"
- },
- { "internalType": "uint256", "name": "value", "type": "uint256" }
- ],
- "internalType": "struct CollectionLimitValue[]",
- "name": "limits",
- "type": "tuple[]"
- },
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "pending_sponsor",
- "type": "tuple"
- },
- {
- "internalType": "CollectionFlags",
- "name": "flags",
- "type": "uint8"
- }
- ],
- "internalType": "struct CreateCollectionData",
- "name": "data",
- "type": "tuple"
- }
- ],
- "name": "createCollection",
- "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
- "stateMutability": "payable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "string", "name": "name", "type": "string" },
- { "internalType": "uint8", "name": "decimals", "type": "uint8" },
- { "internalType": "string", "name": "description", "type": "string" },
- { "internalType": "string", "name": "tokenPrefix", "type": "string" }
- ],
- "name": "createFTCollection",
- "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
- "stateMutability": "payable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "string", "name": "name", "type": "string" },
- { "internalType": "string", "name": "description", "type": "string" },
- { "internalType": "string", "name": "tokenPrefix", "type": "string" }
- ],
- "name": "createNFTCollection",
- "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
- "stateMutability": "payable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "string", "name": "name", "type": "string" },
- { "internalType": "string", "name": "description", "type": "string" },
- { "internalType": "string", "name": "tokenPrefix", "type": "string" }
- ],
- "name": "createRFTCollection",
- "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
- "stateMutability": "payable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "collectionAddress",
- "type": "address"
- }
- ],
- "name": "destroyCollection",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "collectionAddress",
- "type": "address"
- }
- ],
- "name": "isCollectionExist",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "collection", "type": "address" },
- { "internalType": "string", "name": "baseUri", "type": "string" }
- ],
- "name": "makeCollectionERC721MetadataCompatible",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }
- ],
- "name": "supportsInterface",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- }
-]
js-packages/tests/eth/abi/contractHelpers.jsondiffbeforeafterboth--- a/js-packages/tests/eth/abi/contractHelpers.json
+++ /dev/null
@@ -1,326 +0,0 @@
-[
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "contractAddress",
- "type": "address"
- }
- ],
- "name": "ContractSponsorRemoved",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "contractAddress",
- "type": "address"
- },
- {
- "indexed": false,
- "internalType": "address",
- "name": "sponsor",
- "type": "address"
- }
- ],
- "name": "ContractSponsorSet",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "contractAddress",
- "type": "address"
- },
- {
- "indexed": false,
- "internalType": "address",
- "name": "sponsor",
- "type": "address"
- }
- ],
- "name": "ContractSponsorshipConfirmed",
- "type": "event"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "contractAddress",
- "type": "address"
- },
- { "internalType": "address", "name": "user", "type": "address" }
- ],
- "name": "allowed",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "contractAddress",
- "type": "address"
- }
- ],
- "name": "allowlistEnabled",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "contractAddress",
- "type": "address"
- }
- ],
- "name": "confirmSponsorship",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "contractAddress",
- "type": "address"
- }
- ],
- "name": "contractOwner",
- "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "contractAddress",
- "type": "address"
- }
- ],
- "name": "hasPendingSponsor",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "contractAddress",
- "type": "address"
- }
- ],
- "name": "hasSponsor",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "contractAddress",
- "type": "address"
- }
- ],
- "name": "removeSponsor",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "contractAddress",
- "type": "address"
- }
- ],
- "name": "selfSponsoredEnable",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "contractAddress",
- "type": "address"
- },
- { "internalType": "address", "name": "sponsor", "type": "address" }
- ],
- "name": "setSponsor",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "contractAddress",
- "type": "address"
- },
- { "internalType": "uint256", "name": "feeLimit", "type": "uint256" }
- ],
- "name": "setSponsoringFeeLimit",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "contractAddress",
- "type": "address"
- },
- {
- "internalType": "enum SponsoringModeT",
- "name": "mode",
- "type": "uint8"
- }
- ],
- "name": "setSponsoringMode",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "contractAddress",
- "type": "address"
- },
- { "internalType": "uint32", "name": "rateLimit", "type": "uint32" }
- ],
- "name": "setSponsoringRateLimit",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "contractAddress",
- "type": "address"
- }
- ],
- "name": "sponsor",
- "outputs": [
- {
- "components": [
- { "internalType": "bool", "name": "status", "type": "bool" },
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "value",
- "type": "tuple"
- }
- ],
- "internalType": "struct OptionCrossAddress",
- "name": "",
- "type": "tuple"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "contractAddress",
- "type": "address"
- }
- ],
- "name": "sponsoringEnabled",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "contractAddress",
- "type": "address"
- }
- ],
- "name": "sponsoringFeeLimit",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "contractAddress",
- "type": "address"
- }
- ],
- "name": "sponsoringRateLimit",
- "outputs": [{ "internalType": "uint32", "name": "", "type": "uint32" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }
- ],
- "name": "supportsInterface",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "contractAddress",
- "type": "address"
- },
- { "internalType": "address", "name": "user", "type": "address" },
- { "internalType": "bool", "name": "isAllowed", "type": "bool" }
- ],
- "name": "toggleAllowed",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "contractAddress",
- "type": "address"
- },
- { "internalType": "bool", "name": "enabled", "type": "bool" }
- ],
- "name": "toggleAllowlist",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- }
-]
js-packages/tests/eth/abi/fungible.jsondiffbeforeafterboth--- a/js-packages/tests/eth/abi/fungible.json
+++ /dev/null
@@ -1,722 +0,0 @@
-[
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "owner",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "spender",
- "type": "address"
- },
- {
- "indexed": false,
- "internalType": "uint256",
- "name": "value",
- "type": "uint256"
- }
- ],
- "name": "Approval",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "from",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "to",
- "type": "address"
- },
- {
- "indexed": false,
- "internalType": "uint256",
- "name": "value",
- "type": "uint256"
- }
- ],
- "name": "Transfer",
- "type": "event"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "newAdmin",
- "type": "tuple"
- }
- ],
- "name": "addCollectionAdminCross",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "user",
- "type": "tuple"
- }
- ],
- "name": "addToCollectionAllowListCross",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "owner", "type": "address" },
- { "internalType": "address", "name": "spender", "type": "address" }
- ],
- "name": "allowance",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "owner",
- "type": "tuple"
- },
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "spender",
- "type": "tuple"
- }
- ],
- "name": "allowanceCross",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "user",
- "type": "tuple"
- }
- ],
- "name": "allowlistedCross",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "spender", "type": "address" },
- { "internalType": "uint256", "name": "amount", "type": "uint256" }
- ],
- "name": "approve",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "spender",
- "type": "tuple"
- },
- { "internalType": "uint256", "name": "amount", "type": "uint256" }
- ],
- "name": "approveCross",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "owner", "type": "address" }
- ],
- "name": "balanceOf",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "owner",
- "type": "tuple"
- }
- ],
- "name": "balanceOfCross",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "from",
- "type": "tuple"
- },
- { "internalType": "uint256", "name": "amount", "type": "uint256" }
- ],
- "name": "burnFromCross",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "newOwner",
- "type": "tuple"
- }
- ],
- "name": "changeCollectionOwnerCross",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "collectionAdmins",
- "outputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress[]",
- "name": "",
- "type": "tuple[]"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "collectionHelperAddress",
- "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "collectionLimits",
- "outputs": [
- {
- "components": [
- {
- "internalType": "enum CollectionLimitField",
- "name": "field",
- "type": "uint8"
- },
- {
- "components": [
- { "internalType": "bool", "name": "status", "type": "bool" },
- { "internalType": "uint256", "name": "value", "type": "uint256" }
- ],
- "internalType": "struct OptionUint256",
- "name": "value",
- "type": "tuple"
- }
- ],
- "internalType": "struct CollectionLimit[]",
- "name": "",
- "type": "tuple[]"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "collectionNesting",
- "outputs": [
- {
- "components": [
- { "internalType": "bool", "name": "token_owner", "type": "bool" },
- {
- "internalType": "bool",
- "name": "collection_admin",
- "type": "bool"
- },
- {
- "internalType": "address[]",
- "name": "restricted",
- "type": "address[]"
- }
- ],
- "internalType": "struct CollectionNestingAndPermission",
- "name": "",
- "type": "tuple"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "collectionOwner",
- "outputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "",
- "type": "tuple"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "string[]", "name": "keys", "type": "string[]" }
- ],
- "name": "collectionProperties",
- "outputs": [
- {
- "components": [
- { "internalType": "string", "name": "key", "type": "string" },
- { "internalType": "bytes", "name": "value", "type": "bytes" }
- ],
- "internalType": "struct Property[]",
- "name": "",
- "type": "tuple[]"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],
- "name": "collectionProperty",
- "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "collectionSponsor",
- "outputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "",
- "type": "tuple"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "confirmCollectionSponsorship",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "contractAddress",
- "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "decimals",
- "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "string[]", "name": "keys", "type": "string[]" }
- ],
- "name": "deleteCollectionProperties",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "description",
- "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "hasCollectionPendingSponsor",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "user",
- "type": "tuple"
- }
- ],
- "name": "isOwnerOrAdminCross",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "to", "type": "address" },
- { "internalType": "uint256", "name": "amount", "type": "uint256" }
- ],
- "name": "mint",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "to", "type": "address" },
- { "internalType": "uint256", "name": "amount", "type": "uint256" }
- ],
- "internalType": "struct AmountForAddress[]",
- "name": "amounts",
- "type": "tuple[]"
- }
- ],
- "name": "mintBulk",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "to",
- "type": "tuple"
- },
- { "internalType": "uint256", "name": "amount", "type": "uint256" }
- ],
- "name": "mintCross",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "name",
- "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "admin",
- "type": "tuple"
- }
- ],
- "name": "removeCollectionAdminCross",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "removeCollectionSponsor",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "user",
- "type": "tuple"
- }
- ],
- "name": "removeFromCollectionAllowListCross",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "enum AccessMode", "name": "mode", "type": "uint8" }
- ],
- "name": "setCollectionAccess",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- {
- "internalType": "enum CollectionLimitField",
- "name": "field",
- "type": "uint8"
- },
- {
- "components": [
- { "internalType": "bool", "name": "status", "type": "bool" },
- { "internalType": "uint256", "name": "value", "type": "uint256" }
- ],
- "internalType": "struct OptionUint256",
- "name": "value",
- "type": "tuple"
- }
- ],
- "internalType": "struct CollectionLimit",
- "name": "limit",
- "type": "tuple"
- }
- ],
- "name": "setCollectionLimit",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [{ "internalType": "bool", "name": "mode", "type": "bool" }],
- "name": "setCollectionMintMode",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "bool", "name": "token_owner", "type": "bool" },
- {
- "internalType": "bool",
- "name": "collection_admin",
- "type": "bool"
- },
- {
- "internalType": "address[]",
- "name": "restricted",
- "type": "address[]"
- }
- ],
- "internalType": "struct CollectionNestingAndPermission",
- "name": "collectionNestingAndPermissions",
- "type": "tuple"
- }
- ],
- "name": "setCollectionNesting",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "string", "name": "key", "type": "string" },
- { "internalType": "bytes", "name": "value", "type": "bytes" }
- ],
- "internalType": "struct Property[]",
- "name": "properties",
- "type": "tuple[]"
- }
- ],
- "name": "setCollectionProperties",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "sponsor",
- "type": "tuple"
- }
- ],
- "name": "setCollectionSponsorCross",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }
- ],
- "name": "supportsInterface",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "symbol",
- "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "totalSupply",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "to", "type": "address" },
- { "internalType": "uint256", "name": "amount", "type": "uint256" }
- ],
- "name": "transfer",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "to",
- "type": "tuple"
- },
- { "internalType": "uint256", "name": "amount", "type": "uint256" }
- ],
- "name": "transferCross",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "from", "type": "address" },
- { "internalType": "address", "name": "to", "type": "address" },
- { "internalType": "uint256", "name": "amount", "type": "uint256" }
- ],
- "name": "transferFrom",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "from",
- "type": "tuple"
- },
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "to",
- "type": "tuple"
- },
- { "internalType": "uint256", "name": "amount", "type": "uint256" }
- ],
- "name": "transferFromCross",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "uniqueCollectionType",
- "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
- "stateMutability": "view",
- "type": "function"
- }
-]
js-packages/tests/eth/abi/fungibleDeprecated.jsondiffbeforeafterboth--- a/js-packages/tests/eth/abi/fungibleDeprecated.json
+++ /dev/null
@@ -1,151 +0,0 @@
-[
- {
- "inputs": [
- { "internalType": "address", "name": "newAdmin", "type": "address" }
- ],
- "name": "addCollectionAdmin",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "user", "type": "address" }
- ],
- "name": "addToCollectionAllowList",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "from", "type": "address" },
- { "internalType": "uint256", "name": "amount", "type": "uint256" }
- ],
- "name": "burnFrom",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "newOwner", "type": "address" }
- ],
- "name": "changeCollectionOwner",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],
- "name": "deleteCollectionProperty",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "user", "type": "address" }
- ],
- "name": "isOwnerOrAdmin",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "admin", "type": "address" }
- ],
- "name": "removeCollectionAdmin",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "user", "type": "address" }
- ],
- "name": "removeFromCollectionAllowList",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "string", "name": "key", "type": "string" },
- { "internalType": "bytes", "name": "value", "type": "bytes" }
- ],
- "name": "setCollectionProperty",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "sponsor", "type": "address" }
- ],
- "name": "setCollectionSponsor",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "collectionNestingPermissions",
- "outputs": [
- {
- "components": [
- {
- "internalType": "enum CollectionPermissionField",
- "name": "field",
- "type": "uint8"
- },
- { "internalType": "bool", "name": "value", "type": "bool" }
- ],
- "internalType": "struct CollectionNestingPermission[]",
- "name": "",
- "type": "tuple[]"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "collectionNestingRestrictedCollectionIds",
- "outputs": [
- {
- "components": [
- { "internalType": "bool", "name": "token_owner", "type": "bool" },
- { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }
- ],
- "internalType": "struct CollectionNesting",
- "name": "",
- "type": "tuple"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [{ "internalType": "bool", "name": "enable", "type": "bool" }],
- "name": "setCollectionNesting",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "bool", "name": "enable", "type": "bool" },
- {
- "internalType": "address[]",
- "name": "collections",
- "type": "address[]"
- }
- ],
- "name": "setCollectionNesting",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- }
-]
js-packages/tests/eth/abi/nativeFungible.jsondiffbeforeafterboth--- a/js-packages/tests/eth/abi/nativeFungible.json
+++ /dev/null
@@ -1,201 +0,0 @@
-[
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "owner",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "spender",
- "type": "address"
- },
- {
- "indexed": false,
- "internalType": "uint256",
- "name": "value",
- "type": "uint256"
- }
- ],
- "name": "Approval",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "from",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "to",
- "type": "address"
- },
- {
- "indexed": false,
- "internalType": "uint256",
- "name": "value",
- "type": "uint256"
- }
- ],
- "name": "Transfer",
- "type": "event"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "owner", "type": "address" },
- { "internalType": "address", "name": "spender", "type": "address" }
- ],
- "name": "allowance",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "spender", "type": "address" },
- { "internalType": "uint256", "name": "amount", "type": "uint256" }
- ],
- "name": "approve",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "owner", "type": "address" }
- ],
- "name": "balanceOf",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "owner",
- "type": "tuple"
- }
- ],
- "name": "balanceOfCross",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "decimals",
- "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "name",
- "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }
- ],
- "name": "supportsInterface",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "symbol",
- "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "totalSupply",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "to", "type": "address" },
- { "internalType": "uint256", "name": "amount", "type": "uint256" }
- ],
- "name": "transfer",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "to",
- "type": "tuple"
- },
- { "internalType": "uint256", "name": "amount", "type": "uint256" }
- ],
- "name": "transferCross",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "from", "type": "address" },
- { "internalType": "address", "name": "to", "type": "address" },
- { "internalType": "uint256", "name": "amount", "type": "uint256" }
- ],
- "name": "transferFrom",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "from",
- "type": "tuple"
- },
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "to",
- "type": "tuple"
- },
- { "internalType": "uint256", "name": "amount", "type": "uint256" }
- ],
- "name": "transferFromCross",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- }
-]
js-packages/tests/eth/abi/nonFungible.jsondiffbeforeafterboth--- a/js-packages/tests/eth/abi/nonFungible.json
+++ /dev/null
@@ -1,988 +0,0 @@
-[
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "owner",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "approved",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "tokenId",
- "type": "uint256"
- }
- ],
- "name": "Approval",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "owner",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "operator",
- "type": "address"
- },
- {
- "indexed": false,
- "internalType": "bool",
- "name": "approved",
- "type": "bool"
- }
- ],
- "name": "ApprovalForAll",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "tokenId",
- "type": "uint256"
- }
- ],
- "name": "TokenChanged",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "from",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "to",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "tokenId",
- "type": "uint256"
- }
- ],
- "name": "Transfer",
- "type": "event"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "newAdmin",
- "type": "tuple"
- }
- ],
- "name": "addCollectionAdminCross",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "user",
- "type": "tuple"
- }
- ],
- "name": "addToCollectionAllowListCross",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "user",
- "type": "tuple"
- }
- ],
- "name": "allowlistedCross",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "approved", "type": "address" },
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "approve",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "approved",
- "type": "tuple"
- },
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "approveCross",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "owner", "type": "address" }
- ],
- "name": "balanceOf",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "owner",
- "type": "tuple"
- }
- ],
- "name": "balanceOfCross",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "burn",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "from",
- "type": "tuple"
- },
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "burnFromCross",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "newOwner",
- "type": "tuple"
- }
- ],
- "name": "changeCollectionOwnerCross",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "collectionAdmins",
- "outputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress[]",
- "name": "",
- "type": "tuple[]"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "collectionHelperAddress",
- "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "collectionLimits",
- "outputs": [
- {
- "components": [
- {
- "internalType": "enum CollectionLimitField",
- "name": "field",
- "type": "uint8"
- },
- {
- "components": [
- { "internalType": "bool", "name": "status", "type": "bool" },
- { "internalType": "uint256", "name": "value", "type": "uint256" }
- ],
- "internalType": "struct OptionUint256",
- "name": "value",
- "type": "tuple"
- }
- ],
- "internalType": "struct CollectionLimit[]",
- "name": "",
- "type": "tuple[]"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "collectionNesting",
- "outputs": [
- {
- "components": [
- { "internalType": "bool", "name": "token_owner", "type": "bool" },
- {
- "internalType": "bool",
- "name": "collection_admin",
- "type": "bool"
- },
- {
- "internalType": "address[]",
- "name": "restricted",
- "type": "address[]"
- }
- ],
- "internalType": "struct CollectionNestingAndPermission",
- "name": "",
- "type": "tuple"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "collectionOwner",
- "outputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "",
- "type": "tuple"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "string[]", "name": "keys", "type": "string[]" }
- ],
- "name": "collectionProperties",
- "outputs": [
- {
- "components": [
- { "internalType": "string", "name": "key", "type": "string" },
- { "internalType": "bytes", "name": "value", "type": "bytes" }
- ],
- "internalType": "struct Property[]",
- "name": "",
- "type": "tuple[]"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],
- "name": "collectionProperty",
- "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "collectionSponsor",
- "outputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "",
- "type": "tuple"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "confirmCollectionSponsorship",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "contractAddress",
- "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "string[]", "name": "keys", "type": "string[]" }
- ],
- "name": "deleteCollectionProperties",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
- { "internalType": "string[]", "name": "keys", "type": "string[]" }
- ],
- "name": "deleteProperties",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "description",
- "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "getApproved",
- "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "hasCollectionPendingSponsor",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "owner", "type": "address" },
- { "internalType": "address", "name": "operator", "type": "address" }
- ],
- "name": "isApprovedForAll",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "user",
- "type": "tuple"
- }
- ],
- "name": "isOwnerOrAdminCross",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [{ "internalType": "address", "name": "to", "type": "address" }],
- "name": "mint",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "owner",
- "type": "tuple"
- },
- {
- "components": [
- { "internalType": "string", "name": "key", "type": "string" },
- { "internalType": "bytes", "name": "value", "type": "bytes" }
- ],
- "internalType": "struct Property[]",
- "name": "properties",
- "type": "tuple[]"
- }
- ],
- "internalType": "struct MintTokenData[]",
- "name": "data",
- "type": "tuple[]"
- }
- ],
- "name": "mintBulkCross",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "to",
- "type": "tuple"
- },
- {
- "components": [
- { "internalType": "string", "name": "key", "type": "string" },
- { "internalType": "bytes", "name": "value", "type": "bytes" }
- ],
- "internalType": "struct Property[]",
- "name": "properties",
- "type": "tuple[]"
- }
- ],
- "name": "mintCross",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "to", "type": "address" },
- { "internalType": "string", "name": "tokenUri", "type": "string" }
- ],
- "name": "mintWithTokenURI",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "name",
- "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "nextTokenId",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "ownerOf",
- "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "ownerOfCross",
- "outputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "",
- "type": "tuple"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
- { "internalType": "string[]", "name": "keys", "type": "string[]" }
- ],
- "name": "properties",
- "outputs": [
- {
- "components": [
- { "internalType": "string", "name": "key", "type": "string" },
- { "internalType": "bytes", "name": "value", "type": "bytes" }
- ],
- "internalType": "struct Property[]",
- "name": "",
- "type": "tuple[]"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
- { "internalType": "string", "name": "key", "type": "string" }
- ],
- "name": "property",
- "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "admin",
- "type": "tuple"
- }
- ],
- "name": "removeCollectionAdminCross",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "removeCollectionSponsor",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "user",
- "type": "tuple"
- }
- ],
- "name": "removeFromCollectionAllowListCross",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "from", "type": "address" },
- { "internalType": "address", "name": "to", "type": "address" },
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "safeTransferFrom",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "from", "type": "address" },
- { "internalType": "address", "name": "to", "type": "address" },
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
- { "internalType": "bytes", "name": "data", "type": "bytes" }
- ],
- "name": "safeTransferFrom",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "operator", "type": "address" },
- { "internalType": "bool", "name": "approved", "type": "bool" }
- ],
- "name": "setApprovalForAll",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "enum AccessMode", "name": "mode", "type": "uint8" }
- ],
- "name": "setCollectionAccess",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- {
- "internalType": "enum CollectionLimitField",
- "name": "field",
- "type": "uint8"
- },
- {
- "components": [
- { "internalType": "bool", "name": "status", "type": "bool" },
- { "internalType": "uint256", "name": "value", "type": "uint256" }
- ],
- "internalType": "struct OptionUint256",
- "name": "value",
- "type": "tuple"
- }
- ],
- "internalType": "struct CollectionLimit",
- "name": "limit",
- "type": "tuple"
- }
- ],
- "name": "setCollectionLimit",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [{ "internalType": "bool", "name": "mode", "type": "bool" }],
- "name": "setCollectionMintMode",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "bool", "name": "token_owner", "type": "bool" },
- {
- "internalType": "bool",
- "name": "collection_admin",
- "type": "bool"
- },
- {
- "internalType": "address[]",
- "name": "restricted",
- "type": "address[]"
- }
- ],
- "internalType": "struct CollectionNestingAndPermission",
- "name": "collectionNestingAndPermissions",
- "type": "tuple"
- }
- ],
- "name": "setCollectionNesting",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "string", "name": "key", "type": "string" },
- { "internalType": "bytes", "name": "value", "type": "bytes" }
- ],
- "internalType": "struct Property[]",
- "name": "properties",
- "type": "tuple[]"
- }
- ],
- "name": "setCollectionProperties",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "sponsor",
- "type": "tuple"
- }
- ],
- "name": "setCollectionSponsorCross",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
- {
- "components": [
- { "internalType": "string", "name": "key", "type": "string" },
- { "internalType": "bytes", "name": "value", "type": "bytes" }
- ],
- "internalType": "struct Property[]",
- "name": "properties",
- "type": "tuple[]"
- }
- ],
- "name": "setProperties",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "string", "name": "key", "type": "string" },
- {
- "components": [
- {
- "internalType": "enum TokenPermissionField",
- "name": "code",
- "type": "uint8"
- },
- { "internalType": "bool", "name": "value", "type": "bool" }
- ],
- "internalType": "struct PropertyPermission[]",
- "name": "permissions",
- "type": "tuple[]"
- }
- ],
- "internalType": "struct TokenPropertyPermission[]",
- "name": "permissions",
- "type": "tuple[]"
- }
- ],
- "name": "setTokenPropertyPermissions",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }
- ],
- "name": "supportsInterface",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "symbol",
- "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "index", "type": "uint256" }
- ],
- "name": "tokenByIndex",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "owner", "type": "address" },
- { "internalType": "uint256", "name": "index", "type": "uint256" }
- ],
- "name": "tokenOfOwnerByIndex",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "tokenPropertyPermissions",
- "outputs": [
- {
- "components": [
- { "internalType": "string", "name": "key", "type": "string" },
- {
- "components": [
- {
- "internalType": "enum TokenPermissionField",
- "name": "code",
- "type": "uint8"
- },
- { "internalType": "bool", "name": "value", "type": "bool" }
- ],
- "internalType": "struct PropertyPermission[]",
- "name": "permissions",
- "type": "tuple[]"
- }
- ],
- "internalType": "struct TokenPropertyPermission[]",
- "name": "",
- "type": "tuple[]"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "tokenURI",
- "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "totalSupply",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "to", "type": "address" },
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "transfer",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "to",
- "type": "tuple"
- },
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "transferCross",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "from", "type": "address" },
- { "internalType": "address", "name": "to", "type": "address" },
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "transferFrom",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "from",
- "type": "tuple"
- },
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "to",
- "type": "tuple"
- },
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "transferFromCross",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "uniqueCollectionType",
- "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
- "stateMutability": "view",
- "type": "function"
- }
-]
js-packages/tests/eth/abi/nonFungibleDeprecated.jsondiffbeforeafterboth--- a/js-packages/tests/eth/abi/nonFungibleDeprecated.json
+++ /dev/null
@@ -1,172 +0,0 @@
-[
- {
- "inputs": [
- { "internalType": "address", "name": "newAdmin", "type": "address" }
- ],
- "name": "addCollectionAdmin",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "user", "type": "address" }
- ],
- "name": "addToCollectionAllowList",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "from", "type": "address" },
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "burnFrom",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],
- "name": "deleteCollectionProperty",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "user", "type": "address" }
- ],
- "name": "isOwnerOrAdmin",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "admin", "type": "address" }
- ],
- "name": "removeCollectionAdmin",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "user", "type": "address" }
- ],
- "name": "removeFromCollectionAllowList",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "string", "name": "key", "type": "string" },
- { "internalType": "bytes", "name": "value", "type": "bytes" }
- ],
- "name": "setCollectionProperty",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "sponsor", "type": "address" }
- ],
- "name": "setCollectionSponsor",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
- { "internalType": "string", "name": "key", "type": "string" },
- { "internalType": "bytes", "name": "value", "type": "bytes" }
- ],
- "name": "setProperty",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "newOwner", "type": "address" }
- ],
- "name": "changeCollectionOwner",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
- { "internalType": "string", "name": "key", "type": "string" }
- ],
- "name": "deleteProperty",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "collectionNestingPermissions",
- "outputs": [
- {
- "components": [
- {
- "internalType": "enum CollectionPermissionField",
- "name": "field",
- "type": "uint8"
- },
- { "internalType": "bool", "name": "value", "type": "bool" }
- ],
- "internalType": "struct CollectionNestingPermission[]",
- "name": "",
- "type": "tuple[]"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "collectionNestingRestrictedCollectionIds",
- "outputs": [
- {
- "components": [
- { "internalType": "bool", "name": "token_owner", "type": "bool" },
- { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }
- ],
- "internalType": "struct CollectionNesting",
- "name": "",
- "type": "tuple"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [{ "internalType": "bool", "name": "enable", "type": "bool" }],
- "name": "setCollectionNesting",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "bool", "name": "enable", "type": "bool" },
- {
- "internalType": "address[]",
- "name": "collections",
- "type": "address[]"
- }
- ],
- "name": "setCollectionNesting",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- }
-]
js-packages/tests/eth/abi/reFungible.jsondiffbeforeafterboth--- a/js-packages/tests/eth/abi/reFungible.json
+++ /dev/null
@@ -1,995 +0,0 @@
-[
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "owner",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "approved",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "tokenId",
- "type": "uint256"
- }
- ],
- "name": "Approval",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "owner",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "operator",
- "type": "address"
- },
- {
- "indexed": false,
- "internalType": "bool",
- "name": "approved",
- "type": "bool"
- }
- ],
- "name": "ApprovalForAll",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "tokenId",
- "type": "uint256"
- }
- ],
- "name": "TokenChanged",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "from",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "to",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "tokenId",
- "type": "uint256"
- }
- ],
- "name": "Transfer",
- "type": "event"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "newAdmin",
- "type": "tuple"
- }
- ],
- "name": "addCollectionAdminCross",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "user",
- "type": "tuple"
- }
- ],
- "name": "addToCollectionAllowListCross",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "user",
- "type": "tuple"
- }
- ],
- "name": "allowlistedCross",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "approved", "type": "address" },
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "approve",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "owner", "type": "address" }
- ],
- "name": "balanceOf",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "owner",
- "type": "tuple"
- }
- ],
- "name": "balanceOfCross",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "burn",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "from",
- "type": "tuple"
- },
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "burnFromCross",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "newOwner",
- "type": "tuple"
- }
- ],
- "name": "changeCollectionOwnerCross",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "collectionAdmins",
- "outputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress[]",
- "name": "",
- "type": "tuple[]"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "collectionHelperAddress",
- "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "collectionLimits",
- "outputs": [
- {
- "components": [
- {
- "internalType": "enum CollectionLimitField",
- "name": "field",
- "type": "uint8"
- },
- {
- "components": [
- { "internalType": "bool", "name": "status", "type": "bool" },
- { "internalType": "uint256", "name": "value", "type": "uint256" }
- ],
- "internalType": "struct OptionUint256",
- "name": "value",
- "type": "tuple"
- }
- ],
- "internalType": "struct CollectionLimit[]",
- "name": "",
- "type": "tuple[]"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "collectionNesting",
- "outputs": [
- {
- "components": [
- { "internalType": "bool", "name": "token_owner", "type": "bool" },
- {
- "internalType": "bool",
- "name": "collection_admin",
- "type": "bool"
- },
- {
- "internalType": "address[]",
- "name": "restricted",
- "type": "address[]"
- }
- ],
- "internalType": "struct CollectionNestingAndPermission",
- "name": "",
- "type": "tuple"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "collectionOwner",
- "outputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "",
- "type": "tuple"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "string[]", "name": "keys", "type": "string[]" }
- ],
- "name": "collectionProperties",
- "outputs": [
- {
- "components": [
- { "internalType": "string", "name": "key", "type": "string" },
- { "internalType": "bytes", "name": "value", "type": "bytes" }
- ],
- "internalType": "struct Property[]",
- "name": "",
- "type": "tuple[]"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],
- "name": "collectionProperty",
- "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "collectionSponsor",
- "outputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "",
- "type": "tuple"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "confirmCollectionSponsorship",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "contractAddress",
- "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "string[]", "name": "keys", "type": "string[]" }
- ],
- "name": "deleteCollectionProperties",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
- { "internalType": "string[]", "name": "keys", "type": "string[]" }
- ],
- "name": "deleteProperties",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "description",
- "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "getApproved",
- "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "hasCollectionPendingSponsor",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "owner", "type": "address" },
- { "internalType": "address", "name": "operator", "type": "address" }
- ],
- "name": "isApprovedForAll",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "user",
- "type": "tuple"
- }
- ],
- "name": "isOwnerOrAdminCross",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [{ "internalType": "address", "name": "to", "type": "address" }],
- "name": "mint",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- {
- "components": [
- {
- "components": [
- {
- "internalType": "address",
- "name": "eth",
- "type": "address"
- },
- {
- "internalType": "uint256",
- "name": "sub",
- "type": "uint256"
- }
- ],
- "internalType": "struct CrossAddress",
- "name": "owner",
- "type": "tuple"
- },
- { "internalType": "uint128", "name": "pieces", "type": "uint128" }
- ],
- "internalType": "struct OwnerPieces[]",
- "name": "owners",
- "type": "tuple[]"
- },
- {
- "components": [
- { "internalType": "string", "name": "key", "type": "string" },
- { "internalType": "bytes", "name": "value", "type": "bytes" }
- ],
- "internalType": "struct Property[]",
- "name": "properties",
- "type": "tuple[]"
- }
- ],
- "internalType": "struct MintTokenData[]",
- "name": "tokenProperties",
- "type": "tuple[]"
- }
- ],
- "name": "mintBulkCross",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "to",
- "type": "tuple"
- },
- {
- "components": [
- { "internalType": "string", "name": "key", "type": "string" },
- { "internalType": "bytes", "name": "value", "type": "bytes" }
- ],
- "internalType": "struct Property[]",
- "name": "properties",
- "type": "tuple[]"
- }
- ],
- "name": "mintCross",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "to", "type": "address" },
- { "internalType": "string", "name": "tokenUri", "type": "string" }
- ],
- "name": "mintWithTokenURI",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "name",
- "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "nextTokenId",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "ownerOf",
- "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "ownerOfCross",
- "outputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "",
- "type": "tuple"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
- { "internalType": "string[]", "name": "keys", "type": "string[]" }
- ],
- "name": "properties",
- "outputs": [
- {
- "components": [
- { "internalType": "string", "name": "key", "type": "string" },
- { "internalType": "bytes", "name": "value", "type": "bytes" }
- ],
- "internalType": "struct Property[]",
- "name": "",
- "type": "tuple[]"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
- { "internalType": "string", "name": "key", "type": "string" }
- ],
- "name": "property",
- "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "admin",
- "type": "tuple"
- }
- ],
- "name": "removeCollectionAdminCross",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "removeCollectionSponsor",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "user",
- "type": "tuple"
- }
- ],
- "name": "removeFromCollectionAllowListCross",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "from", "type": "address" },
- { "internalType": "address", "name": "to", "type": "address" },
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "safeTransferFrom",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "from", "type": "address" },
- { "internalType": "address", "name": "to", "type": "address" },
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
- { "internalType": "bytes", "name": "data", "type": "bytes" }
- ],
- "name": "safeTransferFrom",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "operator", "type": "address" },
- { "internalType": "bool", "name": "approved", "type": "bool" }
- ],
- "name": "setApprovalForAll",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "enum AccessMode", "name": "mode", "type": "uint8" }
- ],
- "name": "setCollectionAccess",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- {
- "internalType": "enum CollectionLimitField",
- "name": "field",
- "type": "uint8"
- },
- {
- "components": [
- { "internalType": "bool", "name": "status", "type": "bool" },
- { "internalType": "uint256", "name": "value", "type": "uint256" }
- ],
- "internalType": "struct OptionUint256",
- "name": "value",
- "type": "tuple"
- }
- ],
- "internalType": "struct CollectionLimit",
- "name": "limit",
- "type": "tuple"
- }
- ],
- "name": "setCollectionLimit",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [{ "internalType": "bool", "name": "mode", "type": "bool" }],
- "name": "setCollectionMintMode",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "bool", "name": "token_owner", "type": "bool" },
- {
- "internalType": "bool",
- "name": "collection_admin",
- "type": "bool"
- },
- {
- "internalType": "address[]",
- "name": "restricted",
- "type": "address[]"
- }
- ],
- "internalType": "struct CollectionNestingAndPermission",
- "name": "collectionNestingAndPermissions",
- "type": "tuple"
- }
- ],
- "name": "setCollectionNesting",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "string", "name": "key", "type": "string" },
- { "internalType": "bytes", "name": "value", "type": "bytes" }
- ],
- "internalType": "struct Property[]",
- "name": "properties",
- "type": "tuple[]"
- }
- ],
- "name": "setCollectionProperties",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "sponsor",
- "type": "tuple"
- }
- ],
- "name": "setCollectionSponsorCross",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
- {
- "components": [
- { "internalType": "string", "name": "key", "type": "string" },
- { "internalType": "bytes", "name": "value", "type": "bytes" }
- ],
- "internalType": "struct Property[]",
- "name": "properties",
- "type": "tuple[]"
- }
- ],
- "name": "setProperties",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "string", "name": "key", "type": "string" },
- {
- "components": [
- {
- "internalType": "enum TokenPermissionField",
- "name": "code",
- "type": "uint8"
- },
- { "internalType": "bool", "name": "value", "type": "bool" }
- ],
- "internalType": "struct PropertyPermission[]",
- "name": "permissions",
- "type": "tuple[]"
- }
- ],
- "internalType": "struct TokenPropertyPermission[]",
- "name": "permissions",
- "type": "tuple[]"
- }
- ],
- "name": "setTokenPropertyPermissions",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }
- ],
- "name": "supportsInterface",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "symbol",
- "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "index", "type": "uint256" }
- ],
- "name": "tokenByIndex",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "token", "type": "uint256" }
- ],
- "name": "tokenContractAddress",
- "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "owner", "type": "address" },
- { "internalType": "uint256", "name": "index", "type": "uint256" }
- ],
- "name": "tokenOfOwnerByIndex",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "tokenPropertyPermissions",
- "outputs": [
- {
- "components": [
- { "internalType": "string", "name": "key", "type": "string" },
- {
- "components": [
- {
- "internalType": "enum TokenPermissionField",
- "name": "code",
- "type": "uint8"
- },
- { "internalType": "bool", "name": "value", "type": "bool" }
- ],
- "internalType": "struct PropertyPermission[]",
- "name": "permissions",
- "type": "tuple[]"
- }
- ],
- "internalType": "struct TokenPropertyPermission[]",
- "name": "",
- "type": "tuple[]"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "tokenURI",
- "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "totalSupply",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "to", "type": "address" },
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "transfer",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "to",
- "type": "tuple"
- },
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "transferCross",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "from", "type": "address" },
- { "internalType": "address", "name": "to", "type": "address" },
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "transferFrom",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "from",
- "type": "tuple"
- },
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "to",
- "type": "tuple"
- },
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "transferFromCross",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "uniqueCollectionType",
- "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
- "stateMutability": "view",
- "type": "function"
- }
-]
js-packages/tests/eth/abi/reFungibleDeprecated.jsondiffbeforeafterboth--- a/js-packages/tests/eth/abi/reFungibleDeprecated.json
+++ /dev/null
@@ -1,200 +0,0 @@
-[
- {
- "inputs": [
- { "internalType": "address", "name": "newAdmin", "type": "address" }
- ],
- "name": "addCollectionAdmin",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "user", "type": "address" }
- ],
- "name": "addToCollectionAllowList",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "from", "type": "address" },
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
- ],
- "name": "burnFrom",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],
- "name": "deleteCollectionProperty",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "user", "type": "address" }
- ],
- "name": "isOwnerOrAdmin",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "admin", "type": "address" }
- ],
- "name": "removeCollectionAdmin",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "user", "type": "address" }
- ],
- "name": "removeFromCollectionAllowList",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "string", "name": "key", "type": "string" },
- { "internalType": "bytes", "name": "value", "type": "bytes" }
- ],
- "name": "setCollectionProperty",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "sponsor", "type": "address" }
- ],
- "name": "setCollectionSponsor",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
- { "internalType": "string", "name": "key", "type": "string" },
- { "internalType": "bytes", "name": "value", "type": "bytes" }
- ],
- "name": "setProperty",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "newOwner", "type": "address" }
- ],
- "name": "changeCollectionOwner",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
- { "internalType": "string", "name": "key", "type": "string" }
- ],
- "name": "deleteProperty",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "to", "type": "address" },
- { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }
- ],
- "name": "mintBulk",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "to", "type": "address" },
- {
- "components": [
- { "internalType": "uint256", "name": "field_0", "type": "uint256" },
- { "internalType": "string", "name": "field_1", "type": "string" }
- ],
- "internalType": "struct Tuple0[]",
- "name": "tokens",
- "type": "tuple[]"
- }
- ],
- "name": "mintBulkWithTokenURI",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "collectionNestingPermissions",
- "outputs": [
- {
- "components": [
- {
- "internalType": "enum CollectionPermissionField",
- "name": "field",
- "type": "uint8"
- },
- { "internalType": "bool", "name": "value", "type": "bool" }
- ],
- "internalType": "struct CollectionNestingPermission[]",
- "name": "",
- "type": "tuple[]"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "collectionNestingRestrictedCollectionIds",
- "outputs": [
- {
- "components": [
- { "internalType": "bool", "name": "token_owner", "type": "bool" },
- { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }
- ],
- "internalType": "struct CollectionNesting",
- "name": "",
- "type": "tuple"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [{ "internalType": "bool", "name": "enable", "type": "bool" }],
- "name": "setCollectionNesting",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "bool", "name": "enable", "type": "bool" },
- {
- "internalType": "address[]",
- "name": "collections",
- "type": "address[]"
- }
- ],
- "name": "setCollectionNesting",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- }
-]
js-packages/tests/eth/abi/reFungibleToken.jsondiffbeforeafterboth--- a/js-packages/tests/eth/abi/reFungibleToken.json
+++ /dev/null
@@ -1,286 +0,0 @@
-[
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "owner",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "spender",
- "type": "address"
- },
- {
- "indexed": false,
- "internalType": "uint256",
- "name": "value",
- "type": "uint256"
- }
- ],
- "name": "Approval",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "from",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "to",
- "type": "address"
- },
- {
- "indexed": false,
- "internalType": "uint256",
- "name": "value",
- "type": "uint256"
- }
- ],
- "name": "Transfer",
- "type": "event"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "owner", "type": "address" },
- { "internalType": "address", "name": "spender", "type": "address" }
- ],
- "name": "allowance",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "owner",
- "type": "tuple"
- },
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "spender",
- "type": "tuple"
- }
- ],
- "name": "allowanceCross",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "spender", "type": "address" },
- { "internalType": "uint256", "name": "amount", "type": "uint256" }
- ],
- "name": "approve",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "spender",
- "type": "tuple"
- },
- { "internalType": "uint256", "name": "amount", "type": "uint256" }
- ],
- "name": "approveCross",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "owner", "type": "address" }
- ],
- "name": "balanceOf",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "owner",
- "type": "tuple"
- }
- ],
- "name": "balanceOfCross",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "from",
- "type": "tuple"
- },
- { "internalType": "uint256", "name": "amount", "type": "uint256" }
- ],
- "name": "burnFromCross",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "decimals",
- "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "name",
- "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "parentToken",
- "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "parentTokenId",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "uint256", "name": "amount", "type": "uint256" }
- ],
- "name": "repartition",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }
- ],
- "name": "supportsInterface",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "symbol",
- "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "totalSupply",
- "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "to", "type": "address" },
- { "internalType": "uint256", "name": "amount", "type": "uint256" }
- ],
- "name": "transfer",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "to",
- "type": "tuple"
- },
- { "internalType": "uint256", "name": "amount", "type": "uint256" }
- ],
- "name": "transferCross",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- { "internalType": "address", "name": "from", "type": "address" },
- { "internalType": "address", "name": "to", "type": "address" },
- { "internalType": "uint256", "name": "amount", "type": "uint256" }
- ],
- "name": "transferFrom",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "from",
- "type": "tuple"
- },
- {
- "components": [
- { "internalType": "address", "name": "eth", "type": "address" },
- { "internalType": "uint256", "name": "sub", "type": "uint256" }
- ],
- "internalType": "struct CrossAddress",
- "name": "to",
- "type": "tuple"
- },
- { "internalType": "uint256", "name": "amount", "type": "uint256" }
- ],
- "name": "transferFromCross",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- }
-]
js-packages/tests/eth/abi/reFungibleTokenDeprecated.jsondiffbeforeafterboth--- a/js-packages/tests/eth/abi/reFungibleTokenDeprecated.json
+++ /dev/null
@@ -1,12 +0,0 @@
-[
- {
- "inputs": [
- { "internalType": "address", "name": "from", "type": "address" },
- { "internalType": "uint256", "name": "amount", "type": "uint256" }
- ],
- "name": "burnFrom",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- }
-]
js-packages/tests/eth/allowlist.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/allowlist.test.ts
+++ b/js-packages/tests/eth/allowlist.test.ts
@@ -16,8 +16,8 @@
import type {IKeyringPair} from '@polkadot/types/types';
import {Pallets} from '@unique/test-utils/util.js';
-import {itEth, usingEthPlaygrounds, expect, SponsoringMode} from './util/index.js';
-import {CreateCollectionData} from './util/playgrounds/types.js';
+import {itEth, usingEthPlaygrounds, expect, SponsoringMode} from '@unique/test-utils/eth/util.js';
+import {CreateCollectionData} from '@unique/test-utils/eth/types.js';
describe('EVM contract allowlist', () => {
let donor: IKeyringPair;
js-packages/tests/eth/api/CollectionHelpers.soldiffbeforeafterboth--- a/js-packages/tests/eth/api/CollectionHelpers.sol
+++ /dev/null
@@ -1,233 +0,0 @@
-// 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);
-}
-
-/// @dev inlined interface
-interface CollectionHelpersEvents {
- event CollectionCreated(address indexed owner, address indexed collectionId);
- event CollectionDestroyed(address indexed collectionId);
- event CollectionChanged(address indexed collectionId);
-}
-
-/// @title Contract, which allows users to operate with collections
-/// @dev the ERC-165 identifier for this interface is 0x94e5af0d
-interface CollectionHelpers is Dummy, ERC165, CollectionHelpersEvents {
- /// Create a collection
- /// @return address Address of the newly created collection
- /// @dev EVM selector for this function is: 0x72b5bea7,
- /// or in textual repr: createCollection((string,string,string,uint8,uint8,(string,bytes)[],(string,(uint8,bool)[])[],(address,uint256)[],(bool,bool,address[]),(uint8,uint256)[],(address,uint256),uint8))
- function createCollection(CreateCollectionData memory data) external payable returns (address);
-
- /// Create an NFT collection
- /// @param name Name of the collection
- /// @param description Informative description of the collection
- /// @param tokenPrefix Token prefix to represent the collection tokens in UI and user applications
- /// @return address Address of the newly created collection
- /// @dev EVM selector for this function is: 0x844af658,
- /// or in textual repr: createNFTCollection(string,string,string)
- function createNFTCollection(
- string memory name,
- string memory description,
- string memory tokenPrefix
- ) external payable returns (address);
-
- // /// Create an NFT collection
- // /// @param name Name of the collection
- // /// @param description Informative description of the collection
- // /// @param tokenPrefix Token prefix to represent the collection tokens in UI and user applications
- // /// @return address Address of the newly created collection
- // /// @dev EVM selector for this function is: 0xe34a6844,
- // /// or in textual repr: createNonfungibleCollection(string,string,string)
- // function createNonfungibleCollection(string memory name, string memory description, string memory tokenPrefix) external payable returns (address);
-
- /// @dev EVM selector for this function is: 0xab173450,
- /// or in textual repr: createRFTCollection(string,string,string)
- function createRFTCollection(
- string memory name,
- string memory description,
- string memory tokenPrefix
- ) external payable returns (address);
-
- /// @dev EVM selector for this function is: 0x7335b79f,
- /// or in textual repr: createFTCollection(string,uint8,string,string)
- function createFTCollection(
- string memory name,
- uint8 decimals,
- string memory description,
- string memory tokenPrefix
- ) external payable returns (address);
-
- /// @dev EVM selector for this function is: 0x85624258,
- /// or in textual repr: makeCollectionERC721MetadataCompatible(address,string)
- function makeCollectionERC721MetadataCompatible(address collection, string memory baseUri) external;
-
- /// @dev EVM selector for this function is: 0x564e321f,
- /// or in textual repr: destroyCollection(address)
- function destroyCollection(address collectionAddress) external;
-
- /// Check if a collection exists
- /// @param collectionAddress Address of the collection in question
- /// @return bool Does the collection exist?
- /// @dev EVM selector for this function is: 0xc3de1494,
- /// or in textual repr: isCollectionExist(address)
- function isCollectionExist(address collectionAddress) external view returns (bool);
-
- /// @dev EVM selector for this function is: 0xd23a7ab1,
- /// or in textual repr: collectionCreationFee()
- function collectionCreationFee() external view returns (uint256);
-
- /// Returns address of a collection.
- /// @param collectionId - CollectionId of the collection
- /// @return eth mirror address of the collection
- /// @dev EVM selector for this function is: 0x2e716683,
- /// or in textual repr: collectionAddress(uint32)
- function collectionAddress(uint32 collectionId) external view returns (address);
-
- /// Returns collectionId of a collection.
- /// @param collectionAddress - Eth address of the collection
- /// @return collectionId of the collection
- /// @dev EVM selector for this function is: 0xb5cb7498,
- /// or in textual repr: collectionId(address)
- function collectionId(address collectionAddress) external view returns (uint32);
-}
-
-/// Collection properties
-struct CreateCollectionData {
- /// Collection name
- string name;
- /// Collection description
- string description;
- /// Token prefix
- string token_prefix;
- /// Token type (NFT, FT or RFT)
- CollectionMode mode;
- /// Fungible token precision
- uint8 decimals;
- /// Custom Properties
- Property[] properties;
- /// Permissions for token properties
- TokenPropertyPermission[] token_property_permissions;
- /// Collection admins
- CrossAddress[] admin_list;
- /// Nesting settings
- CollectionNestingAndPermission nesting_settings;
- /// Collection limits
- CollectionLimitValue[] limits;
- /// Collection sponsor
- CrossAddress pending_sponsor;
- /// Extra collection flags
- CollectionFlags flags;
-}
-
-type CollectionFlags is uint8;
-
-library CollectionFlagsLib {
- /// A collection of foreign assets
- CollectionFlags constant foreignField = CollectionFlags.wrap(128);
- /// Supports ERC721Metadata
- CollectionFlags constant erc721metadataField = CollectionFlags.wrap(64);
- /// External collections can't be managed using `unique` api
- CollectionFlags constant externalField = CollectionFlags.wrap(1);
-
- /// Reserved flags
- function reservedField(uint8 value) public pure returns (CollectionFlags) {
- require(value < 1 << 5, "out of bound value");
- return CollectionFlags.wrap(value << 1);
- }
-}
-
-/// Cross account struct
-struct CrossAddress {
- address eth;
- uint256 sub;
-}
-
-/// [`CollectionLimits`](up_data_structs::CollectionLimits) field representation for EVM.
-struct CollectionLimitValue {
- CollectionLimitField field;
- 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
-}
-
-/// Nested collections and permissions
-struct CollectionNestingAndPermission {
- /// Owner of token can nest tokens under it.
- bool token_owner;
- /// Admin of token collection can nest tokens under token.
- bool collection_admin;
- /// If set - only tokens from specified collections can be nested.
- address[] restricted;
-}
-
-/// Ethereum representation of Token Property Permissions.
-struct TokenPropertyPermission {
- /// Token property key.
- string key;
- /// Token property permissions.
- PropertyPermission[] permissions;
-}
-
-/// Ethereum representation of TokenPermissions (see [`up_data_structs::PropertyPermission`]) as an key and value.
-struct PropertyPermission {
- /// TokenPermission field.
- TokenPermissionField code;
- /// TokenPermission value.
- bool value;
-}
-
-/// Ethereum representation of TokenPermissions (see [`up_data_structs::PropertyPermission`]) fields as an enumeration.
-enum TokenPermissionField {
- /// Permission to change the property and property permission. See [`up_data_structs::PropertyPermission::mutable`]
- Mutable,
- /// Change permission for the collection administrator. See [`up_data_structs::PropertyPermission::token_owner`]
- TokenOwner,
- /// Permission to change the property for the owner of the token. See [`up_data_structs::PropertyPermission::collection_admin`]
- CollectionAdmin
-}
-
-/// Ethereum representation of collection [`PropertyKey`](up_data_structs::PropertyKey) and [`PropertyValue`](up_data_structs::PropertyValue).
-struct Property {
- string key;
- bytes value;
-}
-
-/// Type of tokens in collection
-enum CollectionMode {
- /// Nonfungible
- Nonfungible,
- /// Fungible
- Fungible,
- /// Refungible
- Refungible
-}
js-packages/tests/eth/api/ContractHelpers.soldiffbeforeafterboth--- a/js-packages/tests/eth/api/ContractHelpers.sol
+++ /dev/null
@@ -1,196 +0,0 @@
-// 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);
-}
-
-/// @dev inlined interface
-interface ContractHelpersEvents {
- event ContractSponsorSet(address indexed contractAddress, address sponsor);
- event ContractSponsorshipConfirmed(address indexed contractAddress, address sponsor);
- event ContractSponsorRemoved(address indexed contractAddress);
-}
-
-/// @title Magic contract, which allows users to reconfigure other contracts
-/// @dev the ERC-165 identifier for this interface is 0x30afad04
-interface ContractHelpers is Dummy, ERC165, ContractHelpersEvents {
- /// Get user, which deployed specified contract
- /// @dev May return zero address in case if contract is deployed
- /// using uniquenetwork evm-migration pallet, or using other terms not
- /// intended by pallet-evm
- /// @dev Returns zero address if contract does not exists
- /// @param contractAddress Contract to get owner of
- /// @return address Owner of contract
- /// @dev EVM selector for this function is: 0x5152b14c,
- /// or in textual repr: contractOwner(address)
- function contractOwner(address contractAddress) external view returns (address);
-
- /// Set sponsor.
- /// @param contractAddress Contract for which a sponsor is being established.
- /// @param sponsor User address who set as pending sponsor.
- /// @dev EVM selector for this function is: 0xf01fba93,
- /// or in textual repr: setSponsor(address,address)
- function setSponsor(address contractAddress, address sponsor) external;
-
- /// Set contract as self sponsored.
- ///
- /// @param contractAddress Contract for which a self sponsoring is being enabled.
- /// @dev EVM selector for this function is: 0x89f7d9ae,
- /// or in textual repr: selfSponsoredEnable(address)
- function selfSponsoredEnable(address contractAddress) external;
-
- /// Remove sponsor.
- ///
- /// @param contractAddress Contract for which a sponsorship is being removed.
- /// @dev EVM selector for this function is: 0xef784250,
- /// or in textual repr: removeSponsor(address)
- function removeSponsor(address contractAddress) external;
-
- /// Confirm sponsorship.
- ///
- /// @dev Caller must be same that set via [`setSponsor`].
- ///
- /// @param contractAddress Сontract for which need to confirm sponsorship.
- /// @dev EVM selector for this function is: 0xabc00001,
- /// or in textual repr: confirmSponsorship(address)
- function confirmSponsorship(address contractAddress) external;
-
- /// Get current sponsor.
- ///
- /// @param contractAddress The contract for which a sponsor is requested.
- /// @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: 0x766c4f37,
- /// or in textual repr: sponsor(address)
- function sponsor(address contractAddress) external view returns (OptionCrossAddress memory);
-
- /// Check tat contract has confirmed sponsor.
- ///
- /// @param contractAddress The contract for which the presence of a confirmed sponsor is checked.
- /// @return **true** if contract has confirmed sponsor.
- /// @dev EVM selector for this function is: 0x97418603,
- /// or in textual repr: hasSponsor(address)
- function hasSponsor(address contractAddress) external view returns (bool);
-
- /// Check tat contract has pending sponsor.
- ///
- /// @param contractAddress The contract for which the presence of a pending sponsor is checked.
- /// @return **true** if contract has pending sponsor.
- /// @dev EVM selector for this function is: 0x39b9b242,
- /// or in textual repr: hasPendingSponsor(address)
- function hasPendingSponsor(address contractAddress) external view returns (bool);
-
- /// @dev EVM selector for this function is: 0x6027dc61,
- /// or in textual repr: sponsoringEnabled(address)
- function sponsoringEnabled(address contractAddress) external view returns (bool);
-
- /// @dev EVM selector for this function is: 0xfde8a560,
- /// or in textual repr: setSponsoringMode(address,uint8)
- function setSponsoringMode(address contractAddress, SponsoringModeT mode) external;
-
- /// Get current contract sponsoring rate limit
- /// @param contractAddress Contract to get sponsoring rate limit of
- /// @return uint32 Amount of blocks between two sponsored transactions
- /// @dev EVM selector for this function is: 0xf29694d8,
- /// or in textual repr: sponsoringRateLimit(address)
- function sponsoringRateLimit(address contractAddress) external view returns (uint32);
-
- /// Set contract sponsoring rate limit
- /// @dev Sponsoring rate limit - is a minimum amount of blocks that should
- /// pass between two sponsored transactions
- /// @param contractAddress Contract to change sponsoring rate limit of
- /// @param rateLimit Target rate limit
- /// @dev Only contract owner can change this setting
- /// @dev EVM selector for this function is: 0x77b6c908,
- /// or in textual repr: setSponsoringRateLimit(address,uint32)
- function setSponsoringRateLimit(address contractAddress, uint32 rateLimit) external;
-
- /// Set contract sponsoring fee limit
- /// @dev Sponsoring fee limit - is maximum fee that could be spent by
- /// single transaction
- /// @param contractAddress Contract to change sponsoring fee limit of
- /// @param feeLimit Fee limit
- /// @dev Only contract owner can change this setting
- /// @dev EVM selector for this function is: 0x03aed665,
- /// or in textual repr: setSponsoringFeeLimit(address,uint256)
- function setSponsoringFeeLimit(address contractAddress, uint256 feeLimit) external;
-
- /// Get current contract sponsoring fee limit
- /// @param contractAddress Contract to get sponsoring fee limit of
- /// @return uint256 Maximum amount of fee that could be spent by single
- /// transaction
- /// @dev EVM selector for this function is: 0x75b73606,
- /// or in textual repr: sponsoringFeeLimit(address)
- function sponsoringFeeLimit(address contractAddress) external view returns (uint256);
-
- /// Is specified user present in contract allow list
- /// @dev Contract owner always implicitly included
- /// @param contractAddress Contract to check allowlist of
- /// @param user User to check
- /// @return bool Is specified users exists in contract allowlist
- /// @dev EVM selector for this function is: 0x5c658165,
- /// or in textual repr: allowed(address,address)
- function allowed(address contractAddress, address user) external view returns (bool);
-
- /// Toggle user presence in contract allowlist
- /// @param contractAddress Contract to change allowlist of
- /// @param user Which user presence should be toggled
- /// @param isAllowed `true` if user should be allowed to be sponsored
- /// or call this contract, `false` otherwise
- /// @dev Only contract owner can change this setting
- /// @dev EVM selector for this function is: 0x4706cc1c,
- /// or in textual repr: toggleAllowed(address,address,bool)
- function toggleAllowed(
- address contractAddress,
- address user,
- bool isAllowed
- ) external;
-
- /// Is this contract has allowlist access enabled
- /// @dev Allowlist always can have users, and it is used for two purposes:
- /// in case of allowlist sponsoring mode, users will be sponsored if they exist in allowlist
- /// in case of allowlist access enabled, only users from allowlist may call this contract
- /// @param contractAddress Contract to get allowlist access of
- /// @return bool Is specified contract has allowlist access enabled
- /// @dev EVM selector for this function is: 0xc772ef6c,
- /// or in textual repr: allowlistEnabled(address)
- function allowlistEnabled(address contractAddress) external view returns (bool);
-
- /// Toggle contract allowlist access
- /// @param contractAddress Contract to change allowlist access of
- /// @param enabled Should allowlist access to be enabled?
- /// @dev EVM selector for this function is: 0x36de20f5,
- /// or in textual repr: toggleAllowlist(address,bool)
- function toggleAllowlist(address contractAddress, bool enabled) external;
-}
-
-/// Available contract sponsoring modes
-enum SponsoringModeT {
- /// Sponsoring is disabled
- Disabled,
- /// Only users from allowlist will be sponsored
- Allowlisted,
- /// All users will be sponsored
- Generous
-}
-
-/// Optional value
-struct OptionCrossAddress {
- /// Shows the status of accessibility of value
- bool status;
- /// Actual value if `status` is true
- CrossAddress value;
-}
-
-/// Cross account struct
-struct CrossAddress {
- address eth;
- uint256 sub;
-}
js-packages/tests/eth/api/UniqueFungible.soldiffbeforeafterboth--- a/js-packages/tests/eth/api/UniqueFungible.sol
+++ /dev/null
@@ -1,510 +0,0 @@
-// 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 0xb34d97e9
-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;
-
- /// @dev EVM selector for this function is: 0x0b9f3890,
- /// or in textual repr: setCollectionNesting((bool,bool,address[]))
- function setCollectionNesting(CollectionNestingAndPermission memory collectionNestingAndPermissions) 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;
-
- /// @dev EVM selector for this function is: 0x92c660a8,
- /// or in textual repr: collectionNesting()
- function collectionNesting() external view returns (CollectionNestingAndPermission memory);
-
- // /// 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;
-}
-
-/// Nested collections and permissions
-struct CollectionNestingAndPermission {
- /// Owner of token can nest tokens under it.
- bool token_owner;
- /// Admin of token collection can nest tokens under token.
- bool collection_admin;
- /// If set - only tokens from specified collections can be nested.
- address[] restricted;
-}
-
-/// [`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 0x69d14d3e
-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);
-
- /// @notice Balance of account
- /// @param owner An cross address for whom to query the balance
- /// @return The number of fingibles owned by `owner`, possibly zero
- /// @dev EVM selector for this function is: 0xec069398,
- /// or in textual repr: balanceOfCross((address,uint256))
- function balanceOfCross(CrossAddress memory owner) external view returns (uint256);
-}
-
-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 {}
js-packages/tests/eth/api/UniqueNFT.soldiffbeforeafterboth--- a/js-packages/tests/eth/api/UniqueNFT.sol
+++ /dev/null
@@ -1,855 +0,0 @@
-// 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);
-}
-
-/// @dev inlined interface
-interface ERC721TokenEvent {
- event TokenChanged(uint256 indexed tokenId);
-}
-
-/// @title A contract that allows to set and delete token properties and change token property permissions.
-/// @dev the ERC-165 identifier for this interface is 0xde0695c2
-interface TokenProperties is Dummy, ERC165, ERC721TokenEvent {
- // /// @notice Set permissions for token property.
- // /// @dev Throws error if `msg.sender` is not admin or owner of the collection.
- // /// @param key Property key.
- // /// @param isMutable Permission to mutate property.
- // /// @param collectionAdmin Permission to mutate property by collection admin if property is mutable.
- // /// @param tokenOwner Permission to mutate property by token owner if property is mutable.
- // /// @dev EVM selector for this function is: 0x222d97fa,
- // /// or in textual repr: setTokenPropertyPermission(string,bool,bool,bool)
- // function setTokenPropertyPermission(string memory key, bool isMutable, bool collectionAdmin, bool tokenOwner) external;
-
- /// @notice Set permissions for token property.
- /// @dev Throws error if `msg.sender` is not admin or owner of the collection.
- /// @param permissions Permissions for keys.
- /// @dev EVM selector for this function is: 0xbd92983a,
- /// or in textual repr: setTokenPropertyPermissions((string,(uint8,bool)[])[])
- function setTokenPropertyPermissions(TokenPropertyPermission[] memory permissions) external;
-
- /// @notice Get permissions for token properties.
- /// @dev EVM selector for this function is: 0xf23d7790,
- /// or in textual repr: tokenPropertyPermissions()
- function tokenPropertyPermissions() external view returns (TokenPropertyPermission[] memory);
-
- // /// @notice Set token property value.
- // /// @dev Throws error if `msg.sender` has no permission to edit the property.
- // /// @param tokenId ID of the token.
- // /// @param key Property key.
- // /// @param value Property value.
- // /// @dev EVM selector for this function is: 0x1752d67b,
- // /// or in textual repr: setProperty(uint256,string,bytes)
- // function setProperty(uint256 tokenId, string memory key, bytes memory value) external;
-
- /// @notice Set token properties value.
- /// @dev Throws error if `msg.sender` has no permission to edit the property.
- /// @param tokenId ID of the token.
- /// @param properties settable properties
- /// @dev EVM selector for this function is: 0x14ed3a6e,
- /// or in textual repr: setProperties(uint256,(string,bytes)[])
- function setProperties(uint256 tokenId, Property[] memory properties) external;
-
- // /// @notice Delete token property value.
- // /// @dev Throws error if `msg.sender` has no permission to edit the property.
- // /// @param tokenId ID of the token.
- // /// @param key Property key.
- // /// @dev EVM selector for this function is: 0x066111d1,
- // /// or in textual repr: deleteProperty(uint256,string)
- // function deleteProperty(uint256 tokenId, string memory key) external;
-
- /// @notice Delete token properties value.
- /// @dev Throws error if `msg.sender` has no permission to edit the property.
- /// @param tokenId ID of the token.
- /// @param keys Properties key.
- /// @dev EVM selector for this function is: 0xc472d371,
- /// or in textual repr: deleteProperties(uint256,string[])
- function deleteProperties(uint256 tokenId, string[] memory keys) external;
-
- /// @notice Get token property value.
- /// @dev Throws error if key not found
- /// @param tokenId ID of the token.
- /// @param key Property key.
- /// @return Property value bytes
- /// @dev EVM selector for this function is: 0x7228c327,
- /// or in textual repr: property(uint256,string)
- function property(uint256 tokenId, string memory key) external view returns (bytes memory);
-}
-
-/// Ethereum representation of collection [`PropertyKey`](up_data_structs::PropertyKey) and [`PropertyValue`](up_data_structs::PropertyValue).
-struct Property {
- string key;
- bytes value;
-}
-
-/// Ethereum representation of Token Property Permissions.
-struct TokenPropertyPermission {
- /// Token property key.
- string key;
- /// Token property permissions.
- PropertyPermission[] permissions;
-}
-
-/// Ethereum representation of TokenPermissions (see [`up_data_structs::PropertyPermission`]) as an key and value.
-struct PropertyPermission {
- /// TokenPermission field.
- TokenPermissionField code;
- /// TokenPermission value.
- bool value;
-}
-
-/// Ethereum representation of TokenPermissions (see [`up_data_structs::PropertyPermission`]) fields as an enumeration.
-enum TokenPermissionField {
- /// Permission to change the property and property permission. See [`up_data_structs::PropertyPermission::mutable`]
- Mutable,
- /// Change permission for the collection administrator. See [`up_data_structs::PropertyPermission::token_owner`]
- TokenOwner,
- /// Permission to change the property for the owner of the token. See [`up_data_structs::PropertyPermission::collection_admin`]
- CollectionAdmin
-}
-
-/// @title A contract that allows you to work with collections.
-/// @dev the ERC-165 identifier for this interface is 0xb34d97e9
-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;
-
- /// @dev EVM selector for this function is: 0x0b9f3890,
- /// or in textual repr: setCollectionNesting((bool,bool,address[]))
- function setCollectionNesting(CollectionNestingAndPermission memory collectionNestingAndPermissions) 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;
-
- /// @dev EVM selector for this function is: 0x92c660a8,
- /// or in textual repr: collectionNesting()
- function collectionNesting() external view returns (CollectionNestingAndPermission memory);
-
- // /// 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;
-}
-
-/// Nested collections and permissions
-struct CollectionNestingAndPermission {
- /// Owner of token can nest tokens under it.
- bool token_owner;
- /// Admin of token collection can nest tokens under token.
- bool collection_admin;
- /// If set - only tokens from specified collections can be nested.
- address[] restricted;
-}
-
-/// [`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
-}
-
-/// @title ERC-721 Non-Fungible Token Standard, optional metadata extension
-/// @dev See https://eips.ethereum.org/EIPS/eip-721
-/// @dev the ERC-165 identifier for this interface is 0x5b5e139f
-interface ERC721Metadata is Dummy, ERC165 {
- // /// @notice A descriptive name for a collection of NFTs in this contract
- // /// @dev real implementation of this function lies in `ERC721UniqueExtensions`
- // /// @dev EVM selector for this function is: 0x06fdde03,
- // /// or in textual repr: name()
- // function name() external view returns (string memory);
-
- // /// @notice An abbreviated name for NFTs in this contract
- // /// @dev real implementation of this function lies in `ERC721UniqueExtensions`
- // /// @dev EVM selector for this function is: 0x95d89b41,
- // /// or in textual repr: symbol()
- // function symbol() external view returns (string memory);
-
- /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.
- ///
- /// @dev If the token has a `url` property and it is not empty, it is returned.
- /// Else If the collection does not have a property with key `schemaName` or its value is not equal to `ERC721Metadata`, it return an error `tokenURI not set`.
- /// If the collection property `baseURI` is empty or absent, return "" (empty string)
- /// otherwise, if token property `suffix` present and is non-empty, return concatenation of baseURI and suffix
- /// otherwise, return concatenation of `baseURI` and stringified token id (decimal stringifying, without paddings).
- ///
- /// @return token's const_metadata
- /// @dev EVM selector for this function is: 0xc87b56dd,
- /// or in textual repr: tokenURI(uint256)
- function tokenURI(uint256 tokenId) external view returns (string memory);
-}
-
-/// @title ERC721 Token that can be irreversibly burned (destroyed).
-/// @dev the ERC-165 identifier for this interface is 0x42966c68
-interface ERC721Burnable is Dummy, ERC165 {
- /// @notice Burns a specific ERC721 token.
- /// @dev Throws unless `msg.sender` is the current NFT owner, or an authorized
- /// operator of the current owner.
- /// @param tokenId The NFT to approve
- /// @dev EVM selector for this function is: 0x42966c68,
- /// or in textual repr: burn(uint256)
- function burn(uint256 tokenId) external;
-}
-
-/// @title ERC721 minting logic.
-/// @dev the ERC-165 identifier for this interface is 0x3fd94ea6
-interface ERC721UniqueMintable is Dummy, ERC165 {
- /// @notice Function to mint a token.
- /// @param to The new owner
- /// @return uint256 The id of the newly minted token
- /// @dev EVM selector for this function is: 0x6a627842,
- /// or in textual repr: mint(address)
- function mint(address to) external returns (uint256);
-
- // /// @notice Function to mint a token.
- // /// @dev `tokenId` should be obtained with `nextTokenId` method,
- // /// unlike standard, you can't specify it manually
- // /// @param to The new owner
- // /// @param tokenId ID of the minted NFT
- // /// @dev EVM selector for this function is: 0x40c10f19,
- // /// or in textual repr: mint(address,uint256)
- // function mint(address to, uint256 tokenId) external returns (bool);
-
- /// @notice Function to mint token with the given tokenUri.
- /// @param to The new owner
- /// @param tokenUri Token URI that would be stored in the NFT properties
- /// @return uint256 The id of the newly minted token
- /// @dev EVM selector for this function is: 0x45c17782,
- /// or in textual repr: mintWithTokenURI(address,string)
- function mintWithTokenURI(address to, string memory tokenUri) external returns (uint256);
- // /// @notice Function to mint token with the given tokenUri.
- // /// @dev `tokenId` should be obtained with `nextTokenId` method,
- // /// unlike standard, you can't specify it manually
- // /// @param to The new owner
- // /// @param tokenId ID of the minted NFT
- // /// @param tokenUri Token URI that would be stored in the NFT properties
- // /// @dev EVM selector for this function is: 0x50bb4e7f,
- // /// or in textual repr: mintWithTokenURI(address,uint256,string)
- // function mintWithTokenURI(address to, uint256 tokenId, string memory tokenUri) external returns (bool);
-
-}
-
-/// @title Unique extensions for ERC721.
-/// @dev the ERC-165 identifier for this interface is 0x9b397d16
-interface ERC721UniqueExtensions is Dummy, ERC165 {
- /// @notice A descriptive name for a collection of NFTs in this contract
- /// @dev EVM selector for this function is: 0x06fdde03,
- /// or in textual repr: name()
- function name() external view returns (string memory);
-
- /// @notice An abbreviated name for NFTs in this contract
- /// @dev EVM selector for this function is: 0x95d89b41,
- /// or in textual repr: symbol()
- function symbol() external view returns (string memory);
-
- /// @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);
-
- // /// Returns the owner (in cross format) of the token.
- // ///
- // /// @param tokenId Id for the token.
- // /// @dev EVM selector for this function is: 0x2b29dace,
- // /// or in textual repr: crossOwnerOf(uint256)
- // function crossOwnerOf(uint256 tokenId) external view returns (CrossAddress memory);
-
- /// Returns the owner (in cross format) of the token.
- ///
- /// @param tokenId Id for the token.
- /// @dev EVM selector for this function is: 0xcaa3a4d0,
- /// or in textual repr: ownerOfCross(uint256)
- function ownerOfCross(uint256 tokenId) external view returns (CrossAddress memory);
-
- /// @notice Count all NFTs assigned to an owner
- /// @param owner An cross address for whom to query the balance
- /// @return The number of NFTs owned by `owner`, possibly zero
- /// @dev EVM selector for this function is: 0xec069398,
- /// or in textual repr: balanceOfCross((address,uint256))
- function balanceOfCross(CrossAddress memory owner) external view returns (uint256);
-
- /// Returns the token properties.
- ///
- /// @param tokenId Id for the token.
- /// @param keys Properties keys. Empty keys for all propertyes.
- /// @return Vector of properties key/value pairs.
- /// @dev EVM selector for this function is: 0xe07ede7e,
- /// or in textual repr: properties(uint256,string[])
- function properties(uint256 tokenId, string[] memory keys) external view returns (Property[] memory);
-
- /// @notice Set or reaffirm the approved address for an NFT
- /// @dev The zero address indicates there is no approved address.
- /// @dev Throws unless `msg.sender` is the current NFT owner, or an authorized
- /// operator of the current owner.
- /// @param approved The new substrate address approved NFT controller
- /// @param tokenId The NFT to approve
- /// @dev EVM selector for this function is: 0x0ecd0ab0,
- /// or in textual repr: approveCross((address,uint256),uint256)
- function approveCross(CrossAddress memory approved, uint256 tokenId) external;
-
- /// @notice Transfer ownership of an NFT
- /// @dev Throws unless `msg.sender` is the current owner. Throws if `to`
- /// is the zero address. Throws if `tokenId` is not a valid NFT.
- /// @param to The new owner
- /// @param tokenId The NFT to transfer
- /// @dev EVM selector for this function is: 0xa9059cbb,
- /// or in textual repr: transfer(address,uint256)
- function transfer(address to, uint256 tokenId) external;
-
- /// @notice Transfer ownership of an NFT
- /// @dev Throws unless `msg.sender` is the current owner. Throws if `to`
- /// is the zero address. Throws if `tokenId` is not a valid NFT.
- /// @param to The new owner
- /// @param tokenId The NFT to transfer
- /// @dev EVM selector for this function is: 0x2ada85ff,
- /// or in textual repr: transferCross((address,uint256),uint256)
- function transferCross(CrossAddress memory to, uint256 tokenId) external;
-
- /// @notice Transfer ownership of an NFT from cross account address to cross account address
- /// @dev Throws unless `msg.sender` is the current owner. Throws if `to`
- /// is the zero address. Throws if `tokenId` is not a valid NFT.
- /// @param from Cross acccount address of current owner
- /// @param to Cross acccount address of new owner
- /// @param tokenId The NFT to transfer
- /// @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 tokenId
- ) external;
-
- // /// @notice Burns a specific ERC721 token.
- // /// @dev Throws unless `msg.sender` is the current owner or an authorized
- // /// operator for this NFT. Throws if `from` is not the current owner. Throws
- // /// if `to` is the zero address. Throws if `tokenId` is not a valid NFT.
- // /// @param from The current owner of the NFT
- // /// @param tokenId The NFT to transfer
- // /// @dev EVM selector for this function is: 0x79cc6790,
- // /// or in textual repr: burnFrom(address,uint256)
- // function burnFrom(address from, uint256 tokenId) external;
-
- /// @notice Burns a specific ERC721 token.
- /// @dev Throws unless `msg.sender` is the current owner or an authorized
- /// operator for this NFT. Throws if `from` is not the current owner. Throws
- /// if `to` is the zero address. Throws if `tokenId` is not a valid NFT.
- /// @param from The current owner of the NFT
- /// @param tokenId The NFT to transfer
- /// @dev EVM selector for this function is: 0xbb2f5a58,
- /// or in textual repr: burnFromCross((address,uint256),uint256)
- function burnFromCross(CrossAddress memory from, uint256 tokenId) external;
-
- /// @notice Returns next free NFT ID.
- /// @dev EVM selector for this function is: 0x75794a3c,
- /// or in textual repr: nextTokenId()
- function nextTokenId() external view returns (uint256);
-
- // /// @notice Function to mint multiple tokens.
- // /// @dev `tokenIds` should be an array of consecutive numbers and first number
- // /// should be obtained with `nextTokenId` method
- // /// @param to The new owner
- // /// @param tokenIds IDs of the minted NFTs
- // /// @dev EVM selector for this function is: 0x44a9945e,
- // /// or in textual repr: mintBulk(address,uint256[])
- // function mintBulk(address to, uint256[] memory tokenIds) external returns (bool);
-
- /// @notice Function to mint a token.
- /// @param data Array of pairs of token owner and token's properties for minted token
- /// @dev EVM selector for this function is: 0xab427b0c,
- /// or in textual repr: mintBulkCross(((address,uint256),(string,bytes)[])[])
- function mintBulkCross(MintTokenData[] memory data) external returns (bool);
-
- // /// @notice Function to mint multiple tokens with the given tokenUris.
- // /// @dev `tokenIds` is array of pairs of token ID and token URI. Token IDs should be consecutive
- // /// numbers and first number should be obtained with `nextTokenId` method
- // /// @param to The new owner
- // /// @param tokens array of pairs of token ID and token URI for minted tokens
- // /// @dev EVM selector for this function is: 0x36543006,
- // /// or in textual repr: mintBulkWithTokenURI(address,(uint256,string)[])
- // function mintBulkWithTokenURI(address to, TokenUri[] memory tokens) external returns (bool);
-
- /// @notice Function to mint a token.
- /// @param to The new owner crossAccountId
- /// @param properties Properties of minted token
- /// @return uint256 The id of the newly minted token
- /// @dev EVM selector for this function is: 0xb904db03,
- /// or in textual repr: mintCross((address,uint256),(string,bytes)[])
- function mintCross(CrossAddress memory to, Property[] memory properties) external returns (uint256);
-
- /// @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);
-}
-
-/// Data for creation token with uri.
-struct TokenUri {
- /// Id of new token.
- uint256 id;
- /// Uri of new token.
- string uri;
-}
-
-/// Token minting parameters
-struct MintTokenData {
- /// Minted token owner
- CrossAddress owner;
- /// Minted token properties
- Property[] properties;
-}
-
-/// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
-/// @dev See https://eips.ethereum.org/EIPS/eip-721
-/// @dev the ERC-165 identifier for this interface is 0x780e9d63
-interface ERC721Enumerable is Dummy, ERC165 {
- /// @notice Enumerate valid NFTs
- /// @param index A counter less than `totalSupply()`
- /// @return The token identifier for the `index`th NFT,
- /// (sort order not specified)
- /// @dev EVM selector for this function is: 0x4f6ccce7,
- /// or in textual repr: tokenByIndex(uint256)
- function tokenByIndex(uint256 index) external view returns (uint256);
-
- /// @dev Not implemented
- /// @dev EVM selector for this function is: 0x2f745c59,
- /// or in textual repr: tokenOfOwnerByIndex(address,uint256)
- function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);
-
- /// @notice Count NFTs tracked by this contract
- /// @return A count of valid NFTs tracked by this contract, where each one of
- /// them has an assigned and queryable owner not equal to the zero address
- /// @dev EVM selector for this function is: 0x18160ddd,
- /// or in textual repr: totalSupply()
- function totalSupply() external view returns (uint256);
-}
-
-/// @dev inlined interface
-interface ERC721Events {
- event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
- event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
- event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
-}
-
-/// @title ERC-721 Non-Fungible Token Standard
-/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
-/// @dev the ERC-165 identifier for this interface is 0x80ac58cd
-interface ERC721 is Dummy, ERC165, ERC721Events {
- /// @notice Count all NFTs assigned to an owner
- /// @dev NFTs assigned to the zero address are considered invalid, and this
- /// function throws for queries about the zero address.
- /// @param owner An address for whom to query the balance
- /// @return The number of NFTs owned by `owner`, possibly zero
- /// @dev EVM selector for this function is: 0x70a08231,
- /// or in textual repr: balanceOf(address)
- function balanceOf(address owner) external view returns (uint256);
-
- /// @notice Find the owner of an NFT
- /// @dev NFTs assigned to zero address are considered invalid, and queries
- /// about them do throw.
- /// @param tokenId The identifier for an NFT
- /// @return The address of the owner of the NFT
- /// @dev EVM selector for this function is: 0x6352211e,
- /// or in textual repr: ownerOf(uint256)
- function ownerOf(uint256 tokenId) external view returns (address);
-
- /// @dev Not implemented
- /// @dev EVM selector for this function is: 0xb88d4fde,
- /// or in textual repr: safeTransferFrom(address,address,uint256,bytes)
- function safeTransferFrom(
- address from,
- address to,
- uint256 tokenId,
- bytes memory data
- ) external;
-
- /// @dev Not implemented
- /// @dev EVM selector for this function is: 0x42842e0e,
- /// or in textual repr: safeTransferFrom(address,address,uint256)
- function safeTransferFrom(
- address from,
- address to,
- uint256 tokenId
- ) external;
-
- /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE
- /// TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE
- /// THEY MAY BE PERMANENTLY LOST
- /// @dev Throws unless `msg.sender` is the current owner or an authorized
- /// operator for this NFT. Throws if `from` is not the current owner. Throws
- /// if `to` is the zero address. Throws if `tokenId` is not a valid NFT.
- /// @param from The current owner of the NFT
- /// @param to The new owner
- /// @param tokenId The NFT to transfer
- /// @dev EVM selector for this function is: 0x23b872dd,
- /// or in textual repr: transferFrom(address,address,uint256)
- function transferFrom(
- address from,
- address to,
- uint256 tokenId
- ) external;
-
- /// @notice Set or reaffirm the approved address for an NFT
- /// @dev The zero address indicates there is no approved address.
- /// @dev Throws unless `msg.sender` is the current NFT owner, or an authorized
- /// operator of the current owner.
- /// @param approved The new approved NFT controller
- /// @param tokenId The NFT to approve
- /// @dev EVM selector for this function is: 0x095ea7b3,
- /// or in textual repr: approve(address,uint256)
- function approve(address approved, uint256 tokenId) external;
-
- /// @notice Sets or unsets the approval of a given operator.
- /// The `operator` is allowed to transfer all tokens of the `caller` on their behalf.
- /// @param operator Operator
- /// @param approved Should operator status be granted or revoked?
- /// @dev EVM selector for this function is: 0xa22cb465,
- /// or in textual repr: setApprovalForAll(address,bool)
- function setApprovalForAll(address operator, bool approved) external;
-
- /// @notice Get the approved address for a single NFT
- /// @dev Throws if `tokenId` is not a valid NFT
- /// @param tokenId The NFT to find the approved address for
- /// @return The approved address for this NFT, or the zero address if there is none
- /// @dev EVM selector for this function is: 0x081812fc,
- /// or in textual repr: getApproved(uint256)
- function getApproved(uint256 tokenId) external view returns (address);
-
- /// @notice Tells whether the given `owner` approves the `operator`.
- /// @dev EVM selector for this function is: 0xe985e9c5,
- /// or in textual repr: isApprovedForAll(address,address)
- function isApprovedForAll(address owner, address operator) external view returns (bool);
-}
-
-interface UniqueNFT is
- Dummy,
- ERC165,
- ERC721,
- ERC721Enumerable,
- ERC721UniqueExtensions,
- ERC721UniqueMintable,
- ERC721Burnable,
- ERC721Metadata,
- Collection,
- TokenProperties
-{}
js-packages/tests/eth/api/UniqueNativeFungible.soldiffbeforeafterboth--- a/js-packages/tests/eth/api/UniqueNativeFungible.sol
+++ /dev/null
@@ -1,89 +0,0 @@
-// 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);
-}
-
-/// @dev the ERC-165 identifier for this interface is 0x1313556c
-interface ERC20UniqueExtensions is Dummy, ERC165 {
- /// @dev EVM selector for this function is: 0xec069398,
- /// or in textual repr: balanceOfCross((address,uint256))
- function balanceOfCross(CrossAddress memory owner) external view returns (uint256);
-
- /// @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);
-}
-
-/// Cross account struct
-struct CrossAddress {
- address eth;
- uint256 sub;
-}
-
-/// @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: 0xdd62ed3e,
- /// or in textual repr: allowance(address,address)
- function allowance(address owner, address spender) external view returns (uint256);
-
- /// @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: 0x70a08231,
- /// or in textual repr: balanceOf(address)
- function balanceOf(address owner) 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: 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: 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);
-}
-
-interface UniqueNativeFungible is Dummy, ERC165, ERC20, ERC20UniqueExtensions {}
js-packages/tests/eth/api/UniqueRefungible.soldiffbeforeafterboth--- a/js-packages/tests/eth/api/UniqueRefungible.sol
+++ /dev/null
@@ -1,859 +0,0 @@
-// 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);
-}
-
-/// @dev inlined interface
-interface ERC721TokenEvent {
- event TokenChanged(uint256 indexed tokenId);
-}
-
-/// @title A contract that allows to set and delete token properties and change token property permissions.
-/// @dev the ERC-165 identifier for this interface is 0xde0695c2
-interface TokenProperties is Dummy, ERC165, ERC721TokenEvent {
- // /// @notice Set permissions for token property.
- // /// @dev Throws error if `msg.sender` is not admin or owner of the collection.
- // /// @param key Property key.
- // /// @param isMutable Permission to mutate property.
- // /// @param collectionAdmin Permission to mutate property by collection admin if property is mutable.
- // /// @param tokenOwner Permission to mutate property by token owner if property is mutable.
- // /// @dev EVM selector for this function is: 0x222d97fa,
- // /// or in textual repr: setTokenPropertyPermission(string,bool,bool,bool)
- // function setTokenPropertyPermission(string memory key, bool isMutable, bool collectionAdmin, bool tokenOwner) external;
-
- /// @notice Set permissions for token property.
- /// @dev Throws error if `msg.sender` is not admin or owner of the collection.
- /// @param permissions Permissions for keys.
- /// @dev EVM selector for this function is: 0xbd92983a,
- /// or in textual repr: setTokenPropertyPermissions((string,(uint8,bool)[])[])
- function setTokenPropertyPermissions(TokenPropertyPermission[] memory permissions) external;
-
- /// @notice Get permissions for token properties.
- /// @dev EVM selector for this function is: 0xf23d7790,
- /// or in textual repr: tokenPropertyPermissions()
- function tokenPropertyPermissions() external view returns (TokenPropertyPermission[] memory);
-
- // /// @notice Set token property value.
- // /// @dev Throws error if `msg.sender` has no permission to edit the property.
- // /// @param tokenId ID of the token.
- // /// @param key Property key.
- // /// @param value Property value.
- // /// @dev EVM selector for this function is: 0x1752d67b,
- // /// or in textual repr: setProperty(uint256,string,bytes)
- // function setProperty(uint256 tokenId, string memory key, bytes memory value) external;
-
- /// @notice Set token properties value.
- /// @dev Throws error if `msg.sender` has no permission to edit the property.
- /// @param tokenId ID of the token.
- /// @param properties settable properties
- /// @dev EVM selector for this function is: 0x14ed3a6e,
- /// or in textual repr: setProperties(uint256,(string,bytes)[])
- function setProperties(uint256 tokenId, Property[] memory properties) external;
-
- // /// @notice Delete token property value.
- // /// @dev Throws error if `msg.sender` has no permission to edit the property.
- // /// @param tokenId ID of the token.
- // /// @param key Property key.
- // /// @dev EVM selector for this function is: 0x066111d1,
- // /// or in textual repr: deleteProperty(uint256,string)
- // function deleteProperty(uint256 tokenId, string memory key) external;
-
- /// @notice Delete token properties value.
- /// @dev Throws error if `msg.sender` has no permission to edit the property.
- /// @param tokenId ID of the token.
- /// @param keys Properties key.
- /// @dev EVM selector for this function is: 0xc472d371,
- /// or in textual repr: deleteProperties(uint256,string[])
- function deleteProperties(uint256 tokenId, string[] memory keys) external;
-
- /// @notice Get token property value.
- /// @dev Throws error if key not found
- /// @param tokenId ID of the token.
- /// @param key Property key.
- /// @return Property value bytes
- /// @dev EVM selector for this function is: 0x7228c327,
- /// or in textual repr: property(uint256,string)
- function property(uint256 tokenId, string memory key) external view returns (bytes memory);
-}
-
-/// Ethereum representation of collection [`PropertyKey`](up_data_structs::PropertyKey) and [`PropertyValue`](up_data_structs::PropertyValue).
-struct Property {
- string key;
- bytes value;
-}
-
-/// Ethereum representation of Token Property Permissions.
-struct TokenPropertyPermission {
- /// Token property key.
- string key;
- /// Token property permissions.
- PropertyPermission[] permissions;
-}
-
-/// Ethereum representation of TokenPermissions (see [`up_data_structs::PropertyPermission`]) as an key and value.
-struct PropertyPermission {
- /// TokenPermission field.
- TokenPermissionField code;
- /// TokenPermission value.
- bool value;
-}
-
-/// Ethereum representation of TokenPermissions (see [`up_data_structs::PropertyPermission`]) fields as an enumeration.
-enum TokenPermissionField {
- /// Permission to change the property and property permission. See [`up_data_structs::PropertyPermission::mutable`]
- Mutable,
- /// Change permission for the collection administrator. See [`up_data_structs::PropertyPermission::token_owner`]
- TokenOwner,
- /// Permission to change the property for the owner of the token. See [`up_data_structs::PropertyPermission::collection_admin`]
- CollectionAdmin
-}
-
-/// @title A contract that allows you to work with collections.
-/// @dev the ERC-165 identifier for this interface is 0xb34d97e9
-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;
-
- /// @dev EVM selector for this function is: 0x0b9f3890,
- /// or in textual repr: setCollectionNesting((bool,bool,address[]))
- function setCollectionNesting(CollectionNestingAndPermission memory collectionNestingAndPermissions) 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;
-
- /// @dev EVM selector for this function is: 0x92c660a8,
- /// or in textual repr: collectionNesting()
- function collectionNesting() external view returns (CollectionNestingAndPermission memory);
-
- // /// 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;
-}
-
-/// Nested collections and permissions
-struct CollectionNestingAndPermission {
- /// Owner of token can nest tokens under it.
- bool token_owner;
- /// Admin of token collection can nest tokens under token.
- bool collection_admin;
- /// If set - only tokens from specified collections can be nested.
- address[] restricted;
-}
-
-/// [`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
-}
-
-/// @title ERC-721 Non-Fungible Token Standard, optional metadata extension
-/// @dev See https://eips.ethereum.org/EIPS/eip-721
-/// @dev the ERC-165 identifier for this interface is 0x5b5e139f
-interface ERC721Metadata is Dummy, ERC165 {
- // /// @notice A descriptive name for a collection of NFTs in this contract
- // /// @dev real implementation of this function lies in `ERC721UniqueExtensions`
- // /// @dev EVM selector for this function is: 0x06fdde03,
- // /// or in textual repr: name()
- // function name() external view returns (string memory);
-
- // /// @notice An abbreviated name for NFTs in this contract
- // /// @dev real implementation of this function lies in `ERC721UniqueExtensions`
- // /// @dev EVM selector for this function is: 0x95d89b41,
- // /// or in textual repr: symbol()
- // function symbol() external view returns (string memory);
-
- /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.
- ///
- /// @dev If the token has a `url` property and it is not empty, it is returned.
- /// Else If the collection does not have a property with key `schemaName` or its value is not equal to `ERC721Metadata`, it return an error `tokenURI not set`.
- /// If the collection property `baseURI` is empty or absent, return "" (empty string)
- /// otherwise, if token property `suffix` present and is non-empty, return concatenation of baseURI and suffix
- /// otherwise, return concatenation of `baseURI` and stringified token id (decimal stringifying, without paddings).
- ///
- /// @return token's const_metadata
- /// @dev EVM selector for this function is: 0xc87b56dd,
- /// or in textual repr: tokenURI(uint256)
- function tokenURI(uint256 tokenId) external view returns (string memory);
-}
-
-/// @title ERC721 Token that can be irreversibly burned (destroyed).
-/// @dev the ERC-165 identifier for this interface is 0x42966c68
-interface ERC721Burnable is Dummy, ERC165 {
- /// @notice Burns a specific ERC721 token.
- /// @dev Throws unless `msg.sender` is the current RFT owner, or an authorized
- /// operator of the current owner.
- /// @param tokenId The RFT to approve
- /// @dev EVM selector for this function is: 0x42966c68,
- /// or in textual repr: burn(uint256)
- function burn(uint256 tokenId) external;
-}
-
-/// @title ERC721 minting logic.
-/// @dev the ERC-165 identifier for this interface is 0x3fd94ea6
-interface ERC721UniqueMintable is Dummy, ERC165 {
- /// @notice Function to mint a token.
- /// @param to The new owner
- /// @return uint256 The id of the newly minted token
- /// @dev EVM selector for this function is: 0x6a627842,
- /// or in textual repr: mint(address)
- function mint(address to) external returns (uint256);
-
- // /// @notice Function to mint a token.
- // /// @dev `tokenId` should be obtained with `nextTokenId` method,
- // /// unlike standard, you can't specify it manually
- // /// @param to The new owner
- // /// @param tokenId ID of the minted RFT
- // /// @dev EVM selector for this function is: 0x40c10f19,
- // /// or in textual repr: mint(address,uint256)
- // function mint(address to, uint256 tokenId) external returns (bool);
-
- /// @notice Function to mint token with the given tokenUri.
- /// @param to The new owner
- /// @param tokenUri Token URI that would be stored in the NFT properties
- /// @return uint256 The id of the newly minted token
- /// @dev EVM selector for this function is: 0x45c17782,
- /// or in textual repr: mintWithTokenURI(address,string)
- function mintWithTokenURI(address to, string memory tokenUri) external returns (uint256);
- // /// @notice Function to mint token with the given tokenUri.
- // /// @dev `tokenId` should be obtained with `nextTokenId` method,
- // /// unlike standard, you can't specify it manually
- // /// @param to The new owner
- // /// @param tokenId ID of the minted RFT
- // /// @param tokenUri Token URI that would be stored in the RFT properties
- // /// @dev EVM selector for this function is: 0x50bb4e7f,
- // /// or in textual repr: mintWithTokenURI(address,uint256,string)
- // function mintWithTokenURI(address to, uint256 tokenId, string memory tokenUri) external returns (bool);
-
-}
-
-/// @title Unique extensions for ERC721.
-/// @dev the ERC-165 identifier for this interface is 0x4abaabdb
-interface ERC721UniqueExtensions is Dummy, ERC165 {
- /// @notice A descriptive name for a collection of NFTs in this contract
- /// @dev EVM selector for this function is: 0x06fdde03,
- /// or in textual repr: name()
- function name() external view returns (string memory);
-
- /// @notice An abbreviated name for NFTs in this contract
- /// @dev EVM selector for this function is: 0x95d89b41,
- /// or in textual repr: symbol()
- function symbol() external view returns (string memory);
-
- /// @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);
-
- // /// Returns the owner (in cross format) of the token.
- // ///
- // /// @param tokenId Id for the token.
- // /// @dev EVM selector for this function is: 0x2b29dace,
- // /// or in textual repr: crossOwnerOf(uint256)
- // function crossOwnerOf(uint256 tokenId) external view returns (CrossAddress memory);
-
- /// Returns the owner (in cross format) of the token.
- ///
- /// @param tokenId Id for the token.
- /// @dev EVM selector for this function is: 0xcaa3a4d0,
- /// or in textual repr: ownerOfCross(uint256)
- function ownerOfCross(uint256 tokenId) external view returns (CrossAddress memory);
-
- /// @notice Count all RFTs assigned to an owner
- /// @param owner An cross address for whom to query the balance
- /// @return The number of RFTs owned by `owner`, possibly zero
- /// @dev EVM selector for this function is: 0xec069398,
- /// or in textual repr: balanceOfCross((address,uint256))
- function balanceOfCross(CrossAddress memory owner) external view returns (uint256);
-
- /// Returns the token properties.
- ///
- /// @param tokenId Id for the token.
- /// @param keys Properties keys. Empty keys for all propertyes.
- /// @return Vector of properties key/value pairs.
- /// @dev EVM selector for this function is: 0xe07ede7e,
- /// or in textual repr: properties(uint256,string[])
- function properties(uint256 tokenId, string[] memory keys) external view returns (Property[] memory);
-
- /// @notice Transfer ownership of an RFT
- /// @dev Throws unless `msg.sender` is the current owner. Throws if `to`
- /// is the zero address. Throws if `tokenId` is not a valid RFT.
- /// Throws if RFT pieces have multiple owners.
- /// @param to The new owner
- /// @param tokenId The RFT to transfer
- /// @dev EVM selector for this function is: 0xa9059cbb,
- /// or in textual repr: transfer(address,uint256)
- function transfer(address to, uint256 tokenId) external;
-
- /// @notice Transfer ownership of an RFT
- /// @dev Throws unless `msg.sender` is the current owner. Throws if `to`
- /// is the zero address. Throws if `tokenId` is not a valid RFT.
- /// Throws if RFT pieces have multiple owners.
- /// @param to The new owner
- /// @param tokenId The RFT to transfer
- /// @dev EVM selector for this function is: 0x2ada85ff,
- /// or in textual repr: transferCross((address,uint256),uint256)
- function transferCross(CrossAddress memory to, uint256 tokenId) external;
-
- /// @notice Transfer ownership of an RFT
- /// @dev Throws unless `msg.sender` is the current owner. Throws if `to`
- /// is the zero address. Throws if `tokenId` is not a valid RFT.
- /// Throws if RFT pieces have multiple owners.
- /// @param to The new owner
- /// @param tokenId The RFT to transfer
- /// @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 tokenId
- ) external;
-
- // /// @notice Burns a specific ERC721 token.
- // /// @dev Throws unless `msg.sender` is the current owner or an authorized
- // /// operator for this RFT. Throws if `from` is not the current owner. Throws
- // /// if `to` is the zero address. Throws if `tokenId` is not a valid RFT.
- // /// Throws if RFT pieces have multiple owners.
- // /// @param from The current owner of the RFT
- // /// @param tokenId The RFT to transfer
- // /// @dev EVM selector for this function is: 0x79cc6790,
- // /// or in textual repr: burnFrom(address,uint256)
- // function burnFrom(address from, uint256 tokenId) external;
-
- /// @notice Burns a specific ERC721 token.
- /// @dev Throws unless `msg.sender` is the current owner or an authorized
- /// operator for this RFT. Throws if `from` is not the current owner. Throws
- /// if `to` is the zero address. Throws if `tokenId` is not a valid RFT.
- /// Throws if RFT pieces have multiple owners.
- /// @param from The current owner of the RFT
- /// @param tokenId The RFT to transfer
- /// @dev EVM selector for this function is: 0xbb2f5a58,
- /// or in textual repr: burnFromCross((address,uint256),uint256)
- function burnFromCross(CrossAddress memory from, uint256 tokenId) external;
-
- /// @notice Returns next free RFT ID.
- /// @dev EVM selector for this function is: 0x75794a3c,
- /// or in textual repr: nextTokenId()
- function nextTokenId() external view returns (uint256);
-
- // /// @notice Function to mint multiple tokens.
- // /// @dev `tokenIds` should be an array of consecutive numbers and first number
- // /// should be obtained with `nextTokenId` method
- // /// @param to The new owner
- // /// @param tokenIds IDs of the minted RFTs
- // /// @dev EVM selector for this function is: 0x44a9945e,
- // /// or in textual repr: mintBulk(address,uint256[])
- // function mintBulk(address to, uint256[] memory tokenIds) external returns (bool);
-
- /// @notice Function to mint a token.
- /// @param tokenProperties Properties of minted token
- /// @dev EVM selector for this function is: 0xdf7a5db7,
- /// or in textual repr: mintBulkCross((((address,uint256),uint128)[],(string,bytes)[])[])
- function mintBulkCross(MintTokenData[] memory tokenProperties) external returns (bool);
-
- // /// @notice Function to mint multiple tokens with the given tokenUris.
- // /// @dev `tokenIds` is array of pairs of token ID and token URI. Token IDs should be consecutive
- // /// numbers and first number should be obtained with `nextTokenId` method
- // /// @param to The new owner
- // /// @param tokens array of pairs of token ID and token URI for minted tokens
- // /// @dev EVM selector for this function is: 0x36543006,
- // /// or in textual repr: mintBulkWithTokenURI(address,(uint256,string)[])
- // function mintBulkWithTokenURI(address to, TokenUri[] memory tokens) external returns (bool);
-
- /// @notice Function to mint a token.
- /// @param to The new owner crossAccountId
- /// @param properties Properties of minted token
- /// @return uint256 The id of the newly minted token
- /// @dev EVM selector for this function is: 0xb904db03,
- /// or in textual repr: mintCross((address,uint256),(string,bytes)[])
- function mintCross(CrossAddress memory to, Property[] memory properties) external returns (uint256);
-
- /// Returns EVM address for refungible token
- ///
- /// @param token ID of the token
- /// @dev EVM selector for this function is: 0xab76fac6,
- /// or in textual repr: tokenContractAddress(uint256)
- function tokenContractAddress(uint256 token) external view returns (address);
-
- /// @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);
-}
-
-/// Data for creation token with uri.
-struct TokenUri {
- /// Id of new token.
- uint256 id;
- /// Uri of new token.
- string uri;
-}
-
-/// Token minting parameters
-struct MintTokenData {
- /// Minted token owner and number of pieces
- OwnerPieces[] owners;
- /// Minted token properties
- Property[] properties;
-}
-
-/// Token minting parameters
-struct OwnerPieces {
- /// Minted token owner
- CrossAddress owner;
- /// Number of token pieces
- uint128 pieces;
-}
-
-/// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
-/// @dev See https://eips.ethereum.org/EIPS/eip-721
-/// @dev the ERC-165 identifier for this interface is 0x780e9d63
-interface ERC721Enumerable is Dummy, ERC165 {
- /// @notice Enumerate valid RFTs
- /// @param index A counter less than `totalSupply()`
- /// @return The token identifier for the `index`th NFT,
- /// (sort order not specified)
- /// @dev EVM selector for this function is: 0x4f6ccce7,
- /// or in textual repr: tokenByIndex(uint256)
- function tokenByIndex(uint256 index) external view returns (uint256);
-
- /// Not implemented
- /// @dev EVM selector for this function is: 0x2f745c59,
- /// or in textual repr: tokenOfOwnerByIndex(address,uint256)
- function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);
-
- /// @notice Count RFTs tracked by this contract
- /// @return A count of valid RFTs tracked by this contract, where each one of
- /// them has an assigned and queryable owner not equal to the zero address
- /// @dev EVM selector for this function is: 0x18160ddd,
- /// or in textual repr: totalSupply()
- function totalSupply() external view returns (uint256);
-}
-
-/// @dev inlined interface
-interface ERC721Events {
- event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
- event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
- event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
-}
-
-/// @title ERC-721 Non-Fungible Token Standard
-/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
-/// @dev the ERC-165 identifier for this interface is 0x80ac58cd
-interface ERC721 is Dummy, ERC165, ERC721Events {
- /// @notice Count all RFTs assigned to an owner
- /// @dev RFTs assigned to the zero address are considered invalid, and this
- /// function throws for queries about the zero address.
- /// @param owner An address for whom to query the balance
- /// @return The number of RFTs owned by `owner`, possibly zero
- /// @dev EVM selector for this function is: 0x70a08231,
- /// or in textual repr: balanceOf(address)
- function balanceOf(address owner) external view returns (uint256);
-
- /// @notice Find the owner of an RFT
- /// @dev RFTs assigned to zero address are considered invalid, and queries
- /// about them do throw.
- /// Returns special 0xffffffffffffffffffffffffffffffffffffffff address for
- /// the tokens that are partially owned.
- /// @param tokenId The identifier for an RFT
- /// @return The address of the owner of the RFT
- /// @dev EVM selector for this function is: 0x6352211e,
- /// or in textual repr: ownerOf(uint256)
- function ownerOf(uint256 tokenId) external view returns (address);
-
- /// @dev Not implemented
- /// @dev EVM selector for this function is: 0xb88d4fde,
- /// or in textual repr: safeTransferFrom(address,address,uint256,bytes)
- function safeTransferFrom(
- address from,
- address to,
- uint256 tokenId,
- bytes memory data
- ) external;
-
- /// @dev Not implemented
- /// @dev EVM selector for this function is: 0x42842e0e,
- /// or in textual repr: safeTransferFrom(address,address,uint256)
- function safeTransferFrom(
- address from,
- address to,
- uint256 tokenId
- ) external;
-
- /// @notice Transfer ownership of an RFT -- THE CALLER IS RESPONSIBLE
- /// TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE
- /// THEY MAY BE PERMANENTLY LOST
- /// @dev Throws unless `msg.sender` is the current owner or an authorized
- /// operator for this RFT. Throws if `from` is not the current owner. Throws
- /// if `to` is the zero address. Throws if `tokenId` is not a valid RFT.
- /// Throws if RFT pieces have multiple owners.
- /// @param from The current owner of the NFT
- /// @param to The new owner
- /// @param tokenId The NFT to transfer
- /// @dev EVM selector for this function is: 0x23b872dd,
- /// or in textual repr: transferFrom(address,address,uint256)
- function transferFrom(
- address from,
- address to,
- uint256 tokenId
- ) external;
-
- /// @dev Not implemented
- /// @dev EVM selector for this function is: 0x095ea7b3,
- /// or in textual repr: approve(address,uint256)
- function approve(address approved, uint256 tokenId) external;
-
- /// @notice Sets or unsets the approval of a given operator.
- /// The `operator` is allowed to transfer all token pieces of the `caller` on their behalf.
- /// @param operator Operator
- /// @param approved Should operator status be granted or revoked?
- /// @dev EVM selector for this function is: 0xa22cb465,
- /// or in textual repr: setApprovalForAll(address,bool)
- function setApprovalForAll(address operator, bool approved) external;
-
- /// @dev Not implemented
- /// @dev EVM selector for this function is: 0x081812fc,
- /// or in textual repr: getApproved(uint256)
- function getApproved(uint256 tokenId) external view returns (address);
-
- /// @notice Tells whether the given `owner` approves the `operator`.
- /// @dev EVM selector for this function is: 0xe985e9c5,
- /// or in textual repr: isApprovedForAll(address,address)
- function isApprovedForAll(address owner, address operator) external view returns (bool);
-}
-
-interface UniqueRefungible is
- Dummy,
- ERC165,
- ERC721,
- ERC721Enumerable,
- ERC721UniqueExtensions,
- ERC721UniqueMintable,
- ERC721Burnable,
- ERC721Metadata,
- Collection,
- TokenProperties
-{}
js-packages/tests/eth/api/UniqueRefungibleToken.soldiffbeforeafterboth--- a/js-packages/tests/eth/api/UniqueRefungibleToken.sol
+++ /dev/null
@@ -1,181 +0,0 @@
-// 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);
-}
-
-/// @dev the ERC-165 identifier for this interface is 0x5755c3f2
-interface ERC1633 is Dummy, ERC165 {
- /// @dev EVM selector for this function is: 0x80a54001,
- /// or in textual repr: parentToken()
- function parentToken() external view returns (address);
-
- /// @dev EVM selector for this function is: 0xd7f083f3,
- /// or in textual repr: parentTokenId()
- function parentTokenId() external view returns (uint256);
-}
-
-/// @dev the ERC-165 identifier for this interface is 0xedd3a564
-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);
-
- // /// @dev Function that burns an amount of the token 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);
-
- /// @dev Function that burns an amount of the token 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);
-
- /// @dev Approve the passed address to spend the specified amount of tokens on behalf of `msg.sender`.
- /// Beware that changing an allowance with this method brings the risk that someone may use both the old
- /// and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
- /// race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
- /// https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
- /// @param spender The crossaccount which will spend the funds.
- /// @param amount The amount of tokens to be spent.
- /// @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);
-
- /// @notice Balance of account
- /// @param owner An cross address for whom to query the balance
- /// @return The number of fingibles owned by `owner`, possibly zero
- /// @dev EVM selector for this function is: 0xec069398,
- /// or in textual repr: balanceOfCross((address,uint256))
- function balanceOfCross(CrossAddress memory owner) external view returns (uint256);
-
- /// @dev Function that changes total amount of the tokens.
- /// Throws if `msg.sender` doesn't owns all of the tokens.
- /// @param amount New total amount of the tokens.
- /// @dev EVM selector for this function is: 0xd2418ca7,
- /// or in textual repr: repartition(uint256)
- function repartition(uint256 amount) external returns (bool);
-
- /// @dev Transfer token for a specified address
- /// @param to The crossaccount to transfer to.
- /// @param amount The amount to be transferred.
- /// @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 Transfer tokens from one address to another
- /// @param from The address which you want to send tokens from
- /// @param to The address which you want to transfer to
- /// @param amount the amount of tokens to be transferred
- /// @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);
-}
-
-/// Cross account struct
-struct CrossAddress {
- address eth;
- uint256 sub;
-}
-
-/// @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);
-}
-
-/// @title Standard ERC20 token
-///
-/// @dev Implementation of the basic standard token.
-/// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
-/// @dev the ERC-165 identifier for this interface is 0x942e8b22
-interface ERC20 is Dummy, ERC165, ERC20Events {
- /// @return the name of the token.
- /// @dev EVM selector for this function is: 0x06fdde03,
- /// or in textual repr: name()
- function name() external view returns (string memory);
-
- /// @return the symbol of the token.
- /// @dev EVM selector for this function is: 0x95d89b41,
- /// or in textual repr: symbol()
- function symbol() external view returns (string memory);
-
- /// @dev Total number of tokens in existence
- /// @dev EVM selector for this function is: 0x18160ddd,
- /// or in textual repr: totalSupply()
- function totalSupply() external view returns (uint256);
-
- /// @dev Not supported
- /// @dev EVM selector for this function is: 0x313ce567,
- /// or in textual repr: decimals()
- function decimals() external view returns (uint8);
-
- /// @dev Gets the balance of the specified address.
- /// @param owner The address to query the balance of.
- /// @return An uint256 representing the amount owned by the passed address.
- /// @dev EVM selector for this function is: 0x70a08231,
- /// or in textual repr: balanceOf(address)
- function balanceOf(address owner) external view returns (uint256);
-
- /// @dev Transfer token for a specified address
- /// @param to The address to transfer to.
- /// @param amount The amount to be transferred.
- /// @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 Transfer tokens from one address to another
- /// @param from address The address which you want to send tokens from
- /// @param to address The address which you want to transfer to
- /// @param amount uint256 the amount of tokens to be transferred
- /// @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 Approve the passed address to spend the specified amount of tokens on behalf of `msg.sender`.
- /// Beware that changing an allowance with this method brings the risk that someone may use both the old
- /// and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
- /// race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
- /// https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
- /// @param spender The address which will spend the funds.
- /// @param amount The amount of tokens to be spent.
- /// @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 Function to check the amount of tokens that an owner allowed to a spender.
- /// @param owner address The address which owns the funds.
- /// @param spender address The address which will spend the funds.
- /// @return A uint256 specifying the amount of tokens still available for the spender.
- /// @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 UniqueRefungibleToken is Dummy, ERC165, ERC20, ERC20UniqueExtensions, ERC1633 {}
js-packages/tests/eth/base.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/base.test.ts
+++ b/js-packages/tests/eth/base.test.ts
@@ -15,8 +15,8 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
import type {IKeyringPair} from '@polkadot/types/types';
-import {itEth, usingEthPlaygrounds, expect} from './util/index.js';
-import {EthUniqueHelper} from './util/playgrounds/unique.dev.js';
+import {itEth, usingEthPlaygrounds, expect} from '@unique/test-utils/eth/util.js';
+import {EthUniqueHelper} from '@unique/test-utils/eth/index.js';
describe('Contract calls', () => {
js-packages/tests/eth/collectionAdmin.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/collectionAdmin.test.ts
+++ b/js-packages/tests/eth/collectionAdmin.test.ts
@@ -17,9 +17,9 @@
import {expect} from 'chai';
import {Pallets} from '@unique/test-utils/util.js';
import type {IEthCrossAccountId} from '@unique-nft/playgrounds/types.js';
-import {usingEthPlaygrounds, itEth} from './util/index.js';
-import {EthUniqueHelper} from './util/playgrounds/unique.dev.js';
-import {CreateCollectionData} from './util/playgrounds/types.js';
+import {usingEthPlaygrounds, itEth} from '@unique/test-utils/eth/util.js';
+import {EthUniqueHelper} from '@unique/test-utils/eth/index.js';
+import {CreateCollectionData} from '@unique/test-utils/eth/types.js';
async function recordEthFee(helper: EthUniqueHelper, userAddress: string, call: () => Promise<any>) {
const before = await helper.balance.getSubstrate(helper.address.ethToSubstrate(userAddress));
js-packages/tests/eth/collectionHelperAddress.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/collectionHelperAddress.test.ts
+++ b/js-packages/tests/eth/collectionHelperAddress.test.ts
@@ -14,7 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-import {itEth, usingEthPlaygrounds, expect} from './util/index.js';
+import {itEth, usingEthPlaygrounds, expect} from '@unique/test-utils/eth/util.js';
import type {IKeyringPair} from '@polkadot/types/types';
import {COLLECTION_HELPER, Pallets} from '@unique/test-utils/util.js';
js-packages/tests/eth/collectionLimits.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/collectionLimits.test.ts
+++ b/js-packages/tests/eth/collectionLimits.test.ts
@@ -1,7 +1,7 @@
import type {IKeyringPair} from '@polkadot/types/types';
import {Pallets} from '@unique/test-utils/util.js';
-import {expect, itEth, usingEthPlaygrounds} from './util/index.js';
-import {CollectionLimitField, CreateCollectionData} from './util/playgrounds/types.js';
+import {expect, itEth, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
+import {CollectionLimitField, CreateCollectionData} from '@unique/test-utils/eth/types.js';
describe('Can set collection limits', () => {
js-packages/tests/eth/collectionProperties.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/collectionProperties.test.ts
+++ b/js-packages/tests/eth/collectionProperties.test.ts
@@ -14,7 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-import {itEth, usingEthPlaygrounds, expect} from './util/index.js';
+import {itEth, usingEthPlaygrounds, expect} from '@unique/test-utils/eth/util.js';
import {Pallets} from '@unique/test-utils/util.js';
import type {IProperty, ITokenPropertyPermission} from '@unique-nft/playgrounds/types.js';
import type {IKeyringPair} from '@polkadot/types/types';
js-packages/tests/eth/collectionSponsoring.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/collectionSponsoring.test.ts
+++ b/js-packages/tests/eth/collectionSponsoring.test.ts
@@ -16,8 +16,8 @@
import type {IKeyringPair} from '@polkadot/types/types';
import {Pallets, requirePalletsOrSkip, usingPlaygrounds} from '@unique/test-utils/util.js';
-import {itEth, expect} from './util/index.js';
-import {CollectionLimitField, TokenPermissionField} from './util/playgrounds/types.js';
+import {itEth, expect} from '@unique/test-utils/eth/util.js';
+import {CollectionLimitField, TokenPermissionField} from '@unique/test-utils/eth/types.js';
describe('evm nft collection sponsoring', () => {
let donor: IKeyringPair;
js-packages/tests/eth/contractSponsoring.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/contractSponsoring.test.ts
+++ b/js-packages/tests/eth/contractSponsoring.test.ts
@@ -15,10 +15,10 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
import type {IKeyringPair} from '@polkadot/types/types';
-import {EthUniqueHelper} from './util/playgrounds/unique.dev.js';
-import {itEth, expect, SponsoringMode, usingEthPlaygrounds} from './util/index.js';
+import {EthUniqueHelper} from '@unique/test-utils/eth/index.js';
+import {itEth, expect, SponsoringMode, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
import {usingPlaygrounds} from '@unique/test-utils/util.js';
-import type {CompiledContract} from './util/playgrounds/types.js';
+import type {CompiledContract} from '@unique/test-utils/eth/types.js';
describe('Sponsoring EVM contracts', () => {
let donor: IKeyringPair;
js-packages/tests/eth/createCollection.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/createCollection.test.ts
+++ b/js-packages/tests/eth/createCollection.test.ts
@@ -17,8 +17,8 @@
import type {IKeyringPair} from '@polkadot/types/types';
import {evmToAddress} from '@polkadot/util-crypto';
import {Pallets, requirePalletsOrSkip} from '@unique/test-utils/util.js';
-import {expect, itEth, usingEthPlaygrounds} from './util/index.js';
-import {CREATE_COLLECTION_DATA_DEFAULTS, CollectionLimitField, CollectionMode, CreateCollectionData, TokenPermissionField, emptyAddress} from './util/playgrounds/types.js';
+import {expect, itEth, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
+import {CREATE_COLLECTION_DATA_DEFAULTS, CollectionLimitField, CollectionMode, CreateCollectionData, TokenPermissionField, emptyAddress} from '@unique/test-utils/eth/types.js';
import {CollectionFlag} from '@unique-nft/playgrounds/types.js';
import type {IEthCrossAccountId, TCollectionMode} from '@unique-nft/playgrounds/types.js';
js-packages/tests/eth/createFTCollection.seqtest.tsdiffbeforeafterboth--- a/js-packages/tests/eth/createFTCollection.seqtest.ts
+++ b/js-packages/tests/eth/createFTCollection.seqtest.ts
@@ -16,7 +16,7 @@
import type {IKeyringPair} from '@polkadot/types/types';
import {Pallets, requirePalletsOrSkip} from '@unique/test-utils/util.js';
-import {expect, itEth, usingEthPlaygrounds} from './util/index.js';
+import {expect, itEth, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
const DECIMALS = 18;
js-packages/tests/eth/createFTCollection.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/createFTCollection.test.ts
+++ b/js-packages/tests/eth/createFTCollection.test.ts
@@ -17,8 +17,8 @@
import type {IKeyringPair} from '@polkadot/types/types';
import {evmToAddress} from '@polkadot/util-crypto';
import {Pallets, requirePalletsOrSkip} from '@unique/test-utils/util.js';
-import {expect, itEth, usingEthPlaygrounds} from './util/index.js';
-import {CollectionLimitField} from './util/playgrounds/types.js';
+import {expect, itEth, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
+import {CollectionLimitField} from '@unique/test-utils/eth/types.js';
const DECIMALS = 18;
js-packages/tests/eth/createNFTCollection.seqtest.tsdiffbeforeafterboth--- a/js-packages/tests/eth/createNFTCollection.seqtest.ts
+++ b/js-packages/tests/eth/createNFTCollection.seqtest.ts
@@ -15,7 +15,7 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
import type {IKeyringPair} from '@polkadot/types/types';
-import {expect, itEth, usingEthPlaygrounds} from './util/index.js';
+import {expect, itEth, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
describe('Create NFT collection from EVM', () => {
js-packages/tests/eth/createNFTCollection.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/createNFTCollection.test.ts
+++ b/js-packages/tests/eth/createNFTCollection.test.ts
@@ -16,8 +16,8 @@
import {evmToAddress} from '@polkadot/util-crypto';
import type {IKeyringPair} from '@polkadot/types/types';
-import {expect, itEth, usingEthPlaygrounds} from './util/index.js';
-import {CollectionLimitField} from './util/playgrounds/types.js';
+import {expect, itEth, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
+import {CollectionLimitField} from '@unique/test-utils/eth/types.js';
describe('Create NFT collection from EVM', () => {
js-packages/tests/eth/createRFTCollection.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/createRFTCollection.test.ts
+++ b/js-packages/tests/eth/createRFTCollection.test.ts
@@ -17,8 +17,8 @@
import {evmToAddress} from '@polkadot/util-crypto';
import type {IKeyringPair} from '@polkadot/types/types';
import {Pallets, requirePalletsOrSkip} from '@unique/test-utils/util.js';
-import {expect, itEth, usingEthPlaygrounds} from './util/index.js';
-import {CollectionLimitField} from './util/playgrounds/types.js';
+import {expect, itEth, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
+import {CollectionLimitField} from '@unique/test-utils/eth/types.js';
describe('Create RFT collection from EVM', () => {
js-packages/tests/eth/crossTransfer.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/crossTransfer.test.ts
+++ b/js-packages/tests/eth/crossTransfer.test.ts
@@ -14,7 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-import {itEth, usingEthPlaygrounds} from './util/index.js';
+import {itEth, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
import {CrossAccountId} from '@unique-nft/playgrounds/unique.js';
import type {IKeyringPair} from '@polkadot/types/types';
js-packages/tests/eth/destroyCollection.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/destroyCollection.test.ts
+++ b/js-packages/tests/eth/destroyCollection.test.ts
@@ -16,9 +16,9 @@
import type {IKeyringPair} from '@polkadot/types/types';
import {Pallets} from '@unique/test-utils/util.js';
-import {expect, itEth, usingEthPlaygrounds} from './util/index.js';
+import {expect, itEth, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
import type {TCollectionMode} from '@unique-nft/playgrounds/types.js';
-import {CreateCollectionData} from './util/playgrounds/types.js';
+import {CreateCollectionData} from '@unique/test-utils/eth/types.js';
describe('Destroy Collection from EVM', function() {
let donor: IKeyringPair;
js-packages/tests/eth/ethFeesAreCorrect.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/ethFeesAreCorrect.test.ts
+++ b/js-packages/tests/eth/ethFeesAreCorrect.test.ts
@@ -15,7 +15,7 @@
// along with Unique Network. If not, see <http://witww.gnu.org/licenses/>.
import type {IKeyringPair} from '@polkadot/types/types';
-import {itEth, usingEthPlaygrounds, expect} from './util/index.js';
+import {itEth, usingEthPlaygrounds, expect} from '@unique/test-utils/eth/util.js';
describe('Eth fees are correct', () => {
let donor: IKeyringPair;
js-packages/tests/eth/events.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/events.test.ts
+++ b/js-packages/tests/eth/events.test.ts
@@ -16,12 +16,12 @@
import {expect} from 'chai';
import type {IKeyringPair} from '@polkadot/types/types';
-import {itEth, usingEthPlaygrounds} from './util/index.js';
-import {EthUniqueHelper} from './util/playgrounds/unique.dev.js';
+import {itEth, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
+import {EthUniqueHelper} from '@unique/test-utils/eth/index.js';
import type {IEvent, TCollectionMode} from '@unique-nft/playgrounds/types.js';
import {Pallets, requirePalletsOrSkip} from '@unique/test-utils/util.js';
-import {CollectionLimitField, TokenPermissionField, CreateCollectionData} from './util/playgrounds/types.js';
-import type {NormalizedEvent} from './util/playgrounds/types.js';
+import {CollectionLimitField, TokenPermissionField, CreateCollectionData} from '@unique/test-utils/eth/types.js';
+import type {NormalizedEvent} from '@unique/test-utils/eth/types.js';
let donor: IKeyringPair;
js-packages/tests/eth/evmCoder.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/evmCoder.test.ts
+++ b/js-packages/tests/eth/evmCoder.test.ts
@@ -15,7 +15,7 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
import type {IKeyringPair} from '@polkadot/types/types';
-import {itEth, expect, usingEthPlaygrounds} from './util/index.js';
+import {itEth, expect, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
const getContractSource = (collectionAddress: string, contractAddress: string): string => `
// SPDX-License-Identifier: MIT
js-packages/tests/eth/fractionalizer/fractionalizer.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/fractionalizer/fractionalizer.test.ts
+++ b/js-packages/tests/eth/fractionalizer/fractionalizer.test.ts
@@ -22,23 +22,25 @@
import {Contract} from 'web3-eth-contract';
-import {usingEthPlaygrounds, expect, itEth} from '../util/index.js';
-import {EthUniqueHelper} from '../util/playgrounds/unique.dev.js';
-import type {CompiledContract} from '../util/playgrounds/types.js';
+import {usingEthPlaygrounds, expect, itEth} from '@unique/test-utils/eth/util.js';
+import {EthUniqueHelper} from '@unique/test-utils/eth/index.js';
+import type {CompiledContract} from '@unique/test-utils/eth/types.js';
import {requirePalletsOrSkip, Pallets, makeNames} from '@unique/test-utils/util.js';
const {dirname} = makeNames(import.meta.url);
let compiledFractionalizer: CompiledContract;
+const EVM_ABI_DIR = `${dirname}/../../../evm-abi`;
+
const compileContract = async (helper: EthUniqueHelper): Promise<CompiledContract> => {
if(!compiledFractionalizer) {
compiledFractionalizer = await helper.ethContract.compile('Fractionalizer', (await readFile(`${dirname}/Fractionalizer.sol`)).toString(), [
- {solPath: 'api/CollectionHelpers.sol', fsPath: `${dirname}/../api/CollectionHelpers.sol`},
- {solPath: 'api/ContractHelpers.sol', fsPath: `${dirname}/../api/ContractHelpers.sol`},
- {solPath: 'api/UniqueRefungibleToken.sol', fsPath: `${dirname}/../api/UniqueRefungibleToken.sol`},
- {solPath: 'api/UniqueRefungible.sol', fsPath: `${dirname}/../api/UniqueRefungible.sol`},
- {solPath: 'api/UniqueNFT.sol', fsPath: `${dirname}/../api/UniqueNFT.sol`},
+ {solPath: 'api/CollectionHelpers.sol', fsPath: `${EVM_ABI_DIR}/api/CollectionHelpers.sol`},
+ {solPath: 'api/ContractHelpers.sol', fsPath: `${EVM_ABI_DIR}/api/ContractHelpers.sol`},
+ {solPath: 'api/UniqueRefungibleToken.sol', fsPath: `${EVM_ABI_DIR}/api/UniqueRefungibleToken.sol`},
+ {solPath: 'api/UniqueRefungible.sol', fsPath: `${EVM_ABI_DIR}/api/UniqueRefungible.sol`},
+ {solPath: 'api/UniqueNFT.sol', fsPath: `${EVM_ABI_DIR}/api/UniqueNFT.sol`},
]);
}
return compiledFractionalizer;
js-packages/tests/eth/fungible.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/fungible.test.ts
+++ b/js-packages/tests/eth/fungible.test.ts
@@ -14,7 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-import {expect, itEth, usingEthPlaygrounds} from './util/index.js';
+import {expect, itEth, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
import type {IKeyringPair} from '@polkadot/types/types';
describe('Fungible: Plain calls', () => {
js-packages/tests/eth/getCode.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/getCode.test.ts
+++ b/js-packages/tests/eth/getCode.test.ts
@@ -14,7 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-import {expect, itEth, usingEthPlaygrounds} from './util/index.js';
+import {expect, itEth, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
import type {IKeyringPair} from '@polkadot/types/types';
import {COLLECTION_HELPER, CONTRACT_HELPER} from '@unique/test-utils/util.js';
js-packages/tests/eth/helpersSmoke.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/helpersSmoke.test.ts
+++ b/js-packages/tests/eth/helpersSmoke.test.ts
@@ -14,7 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-import {expect, itEth, usingEthPlaygrounds} from './util/index.js';
+import {expect, itEth, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
import type {IKeyringPair} from '@polkadot/types/types';
describe('Helpers sanity check', () => {
js-packages/tests/eth/marketplace-v2/marketplace.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/marketplace-v2/marketplace.test.ts
+++ b/js-packages/tests/eth/marketplace-v2/marketplace.test.ts
@@ -17,8 +17,8 @@
import * as web3 from 'web3';
import type {IKeyringPair} from '@polkadot/types/types';
import {readFile} from 'fs/promises';
-import {SponsoringMode, itEth, usingEthPlaygrounds} from '../util/index.js';
-import {EthUniqueHelper} from '../util/playgrounds/unique.dev.js';
+import {SponsoringMode, itEth, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
+import {EthUniqueHelper} from '@unique/test-utils/eth/index.js';
import {makeNames, expect} from '@unique/test-utils/util.js';
const {dirname} = makeNames(import.meta.url);
@@ -40,7 +40,7 @@
async function deployMarket(helper: EthUniqueHelper, marketOwner: string) {
const nodeModulesDir = `${dirname}/../../../node_modules`;
- const solApiDir = `${dirname}/../api`;
+ const solApiDir = `${dirname}/../../../evm-abi/api`;
return await helper.ethContract.deployByCode(
marketOwner,
'Market',
js-packages/tests/eth/marketplace/marketplace.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/marketplace/marketplace.test.ts
+++ b/js-packages/tests/eth/marketplace/marketplace.test.ts
@@ -16,10 +16,11 @@
import type {IKeyringPair} from '@polkadot/types/types';
import {readFile} from 'fs/promises';
-import {itEth, usingEthPlaygrounds, expect, SponsoringMode} from '../util/index.js';
+import {itEth, usingEthPlaygrounds, expect, SponsoringMode} from '@unique/test-utils/eth/util.js';
import {makeNames} from '@unique/test-utils/util.js';
const {dirname} = makeNames(import.meta.url);
+const EVM_ABI_DIR = `${dirname}/../../../evm-abi`;
describe('Matcher contract usage', () => {
const PRICE = 2000n;
@@ -50,7 +51,7 @@
itEth('With UNQ', async ({helper}) => {
const matcherOwner = await helper.eth.createAccountWithBalance(donor);
- const matcher = await helper.ethContract.deployByCode(matcherOwner, 'MarketPlace', (await readFile(`${dirname}/MarketPlace.sol`)).toString(), [{solPath: 'api/UniqueNFT.sol', fsPath: `${dirname}/../api/UniqueNFT.sol`}], helper.eth.DEFAULT_GAS * 2);
+ const matcher = await helper.ethContract.deployByCode(matcherOwner, 'MarketPlace', (await readFile(`${dirname}/MarketPlace.sol`)).toString(), [{solPath: 'api/UniqueNFT.sol', fsPath: `${EVM_ABI_DIR}/api/UniqueNFT.sol`}], helper.eth.DEFAULT_GAS * 2);
const sponsor = await helper.eth.createAccountWithBalance(donor);
const helpers = await helper.ethNativeContract.contractHelpers(matcherOwner);
@@ -102,7 +103,7 @@
itEth('With escrow', async ({helper}) => {
const matcherOwner = await helper.eth.createAccountWithBalance(donor);
- const matcher = await helper.ethContract.deployByCode(matcherOwner, 'MarketPlace', (await readFile(`${dirname}/MarketPlace.sol`)).toString(), [{solPath: 'api/UniqueNFT.sol', fsPath: `${dirname}/../api/UniqueNFT.sol`}], helper.eth.DEFAULT_GAS * 2);
+ const matcher = await helper.ethContract.deployByCode(matcherOwner, 'MarketPlace', (await readFile(`${dirname}/MarketPlace.sol`)).toString(), [{solPath: 'api/UniqueNFT.sol', fsPath: `${EVM_ABI_DIR}/api/UniqueNFT.sol`}], helper.eth.DEFAULT_GAS * 2);
const sponsor = await helper.eth.createAccountWithBalance(donor);
const escrow = await helper.eth.createAccountWithBalance(donor);
@@ -166,7 +167,7 @@
itEth('Sell tokens from substrate user via EVM contract', async ({helper}) => {
const matcherOwner = await helper.eth.createAccountWithBalance(donor);
- const matcher = await helper.ethContract.deployByCode(matcherOwner, 'MarketPlace', (await readFile(`${dirname}/MarketPlace.sol`)).toString(), [{solPath: 'api/UniqueNFT.sol', fsPath: `${dirname}/../api/UniqueNFT.sol`}], helper.eth.DEFAULT_GAS * 2);
+ const matcher = await helper.ethContract.deployByCode(matcherOwner, 'MarketPlace', (await readFile(`${dirname}/MarketPlace.sol`)).toString(), [{solPath: 'api/UniqueNFT.sol', fsPath: `${EVM_ABI_DIR}/api/UniqueNFT.sol`}], helper.eth.DEFAULT_GAS * 2);
await helper.eth.transferBalanceFromSubstrate(donor, matcher.options.address);
js-packages/tests/eth/migration.seqtest.tsdiffbeforeafterboth--- a/js-packages/tests/eth/migration.seqtest.ts
+++ b/js-packages/tests/eth/migration.seqtest.ts
@@ -14,7 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-import {expect, itEth, usingEthPlaygrounds} from './util/index.js';
+import {expect, itEth, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
import type {IKeyringPair} from '@polkadot/types/types';
import {Struct} from '@polkadot/types';
js-packages/tests/eth/nativeFungible.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/nativeFungible.test.ts
+++ b/js-packages/tests/eth/nativeFungible.test.ts
@@ -15,7 +15,7 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
import type {IKeyringPair} from '@polkadot/types/types';
-import {expect, itEth, usingEthPlaygrounds} from './util/index.js';
+import {expect, itEth, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
import {UniqueHelper} from '@unique-nft/playgrounds/unique.js';
describe('NativeFungible: ERC20 calls', () => {
js-packages/tests/eth/nativeRpc/estimateGas.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/nativeRpc/estimateGas.test.ts
+++ b/js-packages/tests/eth/nativeRpc/estimateGas.test.ts
@@ -14,7 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-import {expect, itEth, usingEthPlaygrounds} from '../util/index.js';
+import {expect, itEth, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
import type {IKeyringPair} from '@polkadot/types/types';
js-packages/tests/eth/nesting/nest.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/nesting/nest.test.ts
+++ b/js-packages/tests/eth/nesting/nest.test.ts
@@ -1,8 +1,8 @@
import type {IKeyringPair} from '@polkadot/types/types';
import {Contract} from 'web3-eth-contract';
-import {itEth, usingEthPlaygrounds, expect} from '../util/index.js';
-import {EthUniqueHelper} from '../util/playgrounds/unique.dev.js';
+import {itEth, usingEthPlaygrounds, expect} from '@unique/test-utils/eth/util.js';
+import {EthUniqueHelper} from '@unique/test-utils/eth/index.js';
const createNestingCollection = async (
helper: EthUniqueHelper,
js-packages/tests/eth/nonFungible.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/nonFungible.test.ts
+++ b/js-packages/tests/eth/nonFungible.test.ts
@@ -14,12 +14,12 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-import {itEth, usingEthPlaygrounds, expect} from './util/index.js';
-import {EthUniqueHelper} from './util/playgrounds/unique.dev.js';
+import {itEth, usingEthPlaygrounds, expect} from '@unique/test-utils/eth/util.js';
+import {EthUniqueHelper} from '@unique/test-utils/eth/index.js';
import type {IKeyringPair} from '@polkadot/types/types';
import {Contract} from 'web3-eth-contract';
import type {ITokenPropertyPermission} from '@unique-nft/playgrounds/types.js';
-import {CREATE_COLLECTION_DATA_DEFAULTS, TokenPermissionField} from './util/playgrounds/types.js';
+import {CREATE_COLLECTION_DATA_DEFAULTS, TokenPermissionField} from '@unique/test-utils/eth/types.js';
describe('Check ERC721 token URI for NFT', () => {
let donor: IKeyringPair;
js-packages/tests/eth/payable.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/payable.test.ts
+++ b/js-packages/tests/eth/payable.test.ts
@@ -16,8 +16,8 @@
import type {IKeyringPair} from '@polkadot/types/types';
-import {itEth, expect, usingEthPlaygrounds} from './util/index.js';
-import {EthUniqueHelper} from './util/playgrounds/unique.dev.js';
+import {itEth, expect, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
+import {EthUniqueHelper} from '@unique/test-utils/eth/index.js';
import {makeNames} from '@unique/test-utils/util.js';
const {dirname} = makeNames(import.meta.url);
@@ -261,11 +261,11 @@
[
{
solPath: 'api/CollectionHelpers.sol',
- fsPath: `${dirname}/api/CollectionHelpers.sol`,
+ fsPath: `${dirname}/../../evm-abi/api/CollectionHelpers.sol`,
},
{
solPath: 'api/UniqueNFT.sol',
- fsPath: `${dirname}/api/UniqueNFT.sol`,
+ fsPath: `${dirname}/../../evm-abi/api/UniqueNFT.sol`,
},
],
);
js-packages/tests/eth/precompile.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/precompile.test.ts
+++ b/js-packages/tests/eth/precompile.test.ts
@@ -16,7 +16,7 @@
import type {IKeyringPair} from '@polkadot/types/types';
-import {expect, itEth, usingEthPlaygrounds} from './util/index.js';
+import {expect, itEth, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
describe('Precompiles', () => {
let donor: IKeyringPair;
js-packages/tests/eth/proxy/fungibleProxy.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/proxy/fungibleProxy.test.ts
+++ b/js-packages/tests/eth/proxy/fungibleProxy.test.ts
@@ -17,8 +17,8 @@
import {expect} from 'chai';
import {readFile} from 'fs/promises';
import type {IKeyringPair} from '@polkadot/types/types';
-import {itEth, usingEthPlaygrounds} from '../util/index.js';
-import {EthUniqueHelper} from '../util/playgrounds/unique.dev.js';
+import {itEth, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
+import {EthUniqueHelper} from '@unique/test-utils/eth/index.js';
import {makeNames} from '@unique/test-utils/util.js';
const {dirname} = makeNames(import.meta.url);
js-packages/tests/eth/proxy/nonFungibleProxy.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/proxy/nonFungibleProxy.test.ts
+++ b/js-packages/tests/eth/proxy/nonFungibleProxy.test.ts
@@ -16,8 +16,8 @@
import {readFile} from 'fs/promises';
import type {IKeyringPair} from '@polkadot/types/types';
-import {itEth, usingEthPlaygrounds, expect} from '../util/index.js';
-import {EthUniqueHelper} from '../util/playgrounds/unique.dev.js';
+import {itEth, usingEthPlaygrounds, expect} from '@unique/test-utils/eth/util.js';
+import {EthUniqueHelper} from '@unique/test-utils/eth/index.js';
import {makeNames} from '@unique/test-utils/util.js';
const {dirname} = makeNames(import.meta.url);
js-packages/tests/eth/proxyContract.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/proxyContract.test.ts
+++ b/js-packages/tests/eth/proxyContract.test.ts
@@ -16,8 +16,8 @@
import type {IKeyringPair} from '@polkadot/types/types';
-import {itEth, expect, usingEthPlaygrounds} from './util/index.js';
-import {EthUniqueHelper} from './util/playgrounds/unique.dev.js';
+import {itEth, expect, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
+import {EthUniqueHelper} from '@unique/test-utils/eth/index.js';
describe('EVM payable contracts', () => {
let donor: IKeyringPair;
js-packages/tests/eth/reFungible.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/reFungible.test.ts
+++ b/js-packages/tests/eth/reFungible.test.ts
@@ -15,10 +15,10 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
import {Pallets, requirePalletsOrSkip} from '@unique/test-utils/util.js';
-import {expect, itEth, usingEthPlaygrounds} from './util/index.js';
+import {expect, itEth, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
import type {IKeyringPair} from '@polkadot/types/types';
import type {ITokenPropertyPermission} from '@unique-nft/playgrounds/types.js';
-import {CREATE_COLLECTION_DATA_DEFAULTS, TokenPermissionField} from './util/playgrounds/types.js';
+import {CREATE_COLLECTION_DATA_DEFAULTS, TokenPermissionField} from '@unique/test-utils/eth/types.js';
describe('Refungible: Plain calls', () => {
let donor: IKeyringPair;
js-packages/tests/eth/reFungibleToken.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/reFungibleToken.test.ts
+++ b/js-packages/tests/eth/reFungibleToken.test.ts
@@ -15,8 +15,8 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
import {Pallets, requirePalletsOrSkip} from '@unique/test-utils/util.js';
-import {expect, itEth, usingEthPlaygrounds} from './util/index.js';
-import {EthUniqueHelper} from './util/playgrounds/unique.dev.js';
+import {expect, itEth, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
+import {EthUniqueHelper} from '@unique/test-utils/eth/index.js';
import type {IKeyringPair} from '@polkadot/types/types';
import {Contract} from 'web3-eth-contract';
js-packages/tests/eth/scheduling.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/scheduling.test.ts
+++ b/js-packages/tests/eth/scheduling.test.ts
@@ -15,8 +15,8 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
import {expect} from 'chai';
-import {itSchedEth} from './util/index.js';
-import {EthUniqueHelper} from './util/playgrounds/unique.dev.js';
+import {itSchedEth} from '@unique/test-utils/eth/util.js';
+import {EthUniqueHelper} from '@unique/test-utils/eth/index.js';
import {Pallets, usingPlaygrounds} from '@unique/test-utils/util.js';
describe('Scheduing EVM smart contracts', () => {
js-packages/tests/eth/sponsoring.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/sponsoring.test.ts
+++ b/js-packages/tests/eth/sponsoring.test.ts
@@ -15,7 +15,7 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
import type {IKeyringPair} from '@polkadot/types/types';
-import {itEth, expect, SponsoringMode} from './util/index.js';
+import {itEth, expect, SponsoringMode} from '@unique/test-utils/eth/util.js';
import {usingPlaygrounds} from '@unique/test-utils/util.js';
describe('EVM sponsoring', () => {
js-packages/tests/eth/tokenProperties.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/tokenProperties.test.ts
+++ b/js-packages/tests/eth/tokenProperties.test.ts
@@ -16,11 +16,11 @@
import type {IKeyringPair} from '@polkadot/types/types';
import {Contract} from 'web3-eth-contract';
-import {itEth, usingEthPlaygrounds, expect} from './util/index.js';
+import {itEth, usingEthPlaygrounds, expect} from '@unique/test-utils/eth/util.js';
import type {ITokenPropertyPermission} from '@unique-nft/playgrounds/types.js';
import {Pallets} from '@unique/test-utils/util.js';
import {UniqueNFTCollection, UniqueNFToken, UniqueRFTCollection} from '@unique-nft/playgrounds/unique.js';
-import {CreateCollectionData, TokenPermissionField} from './util/playgrounds/types.js';
+import {CreateCollectionData, TokenPermissionField} from '@unique/test-utils/eth/types.js';
describe('EVM token properties', () => {
let donor: IKeyringPair;
js-packages/tests/eth/tokens/callMethodsERC20.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/tokens/callMethodsERC20.test.ts
+++ b/js-packages/tests/eth/tokens/callMethodsERC20.test.ts
@@ -15,9 +15,9 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
import {Pallets, requirePalletsOrSkip} from '@unique/test-utils/util.js';
-import {expect, itEth, usingEthPlaygrounds} from '../util/index.js';
+import {expect, itEth, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
import type {IKeyringPair} from '@polkadot/types/types';
-import {CreateCollectionData} from '../util/playgrounds/types.js';
+import {CreateCollectionData} from '@unique/test-utils/eth/types.js';
[
{mode: 'ft' as const, requiredPallets: []},
js-packages/tests/eth/tokens/callMethodsERC721.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/tokens/callMethodsERC721.test.ts
+++ b/js-packages/tests/eth/tokens/callMethodsERC721.test.ts
@@ -15,9 +15,9 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
import {Pallets} from '@unique/test-utils/util.js';
-import {expect, itEth, usingEthPlaygrounds} from '../util/index.js';
+import {expect, itEth, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
import type {IKeyringPair} from '@polkadot/types/types';
-import {CreateCollectionData} from '../util/playgrounds/types.js';
+import {CreateCollectionData} from '@unique/test-utils/eth/types.js';
describe('ERC-721 call methods', () => {
js-packages/tests/eth/tokens/minting.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/tokens/minting.test.ts
+++ b/js-packages/tests/eth/tokens/minting.test.ts
@@ -16,8 +16,8 @@
import type {IKeyringPair} from '@polkadot/types/types';
import {Pallets} from '@unique/test-utils/util.js';
-import {expect, itEth, usingEthPlaygrounds} from '../util/index.js';
-import {CreateCollectionData} from '../util/playgrounds/types.js';
+import {expect, itEth, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
+import {CreateCollectionData} from '@unique/test-utils/eth/types.js';
describe('Minting tokens', () => {
js-packages/tests/eth/transferValue.test.tsdiffbeforeafterboth--- a/js-packages/tests/eth/transferValue.test.ts
+++ b/js-packages/tests/eth/transferValue.test.ts
@@ -15,7 +15,7 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
import type {IKeyringPair} from '@polkadot/types/types';
-import {itEth, usingEthPlaygrounds} from './util/index.js';
+import {itEth, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
import {expect} from 'chai';
describe('Send value to contract', () => {
js-packages/tests/eth/util/index.tsdiffbeforeafterboth--- a/js-packages/tests/eth/util/index.ts
+++ /dev/null
@@ -1,106 +0,0 @@
-// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
-// SPDX-License-Identifier: Apache-2.0
-
-import * as path from 'path';
-import type {IKeyringPair} from '@polkadot/types/types';
-
-import config from '../../config.js';
-
-import {EthUniqueHelper} from './playgrounds/unique.dev.js';
-import {SilentLogger, SilentConsole} from '@unique/test-utils';
-import type {SchedKind} from '@unique/test-utils/util.js';
-
-import chai from 'chai';
-import chaiAsPromised from 'chai-as-promised';
-import chaiLike from 'chai-like';
-import {getTestSeed, MINIMUM_DONOR_FUND, requirePalletsOrSkip, makeNames} from '@unique/test-utils/util.js';
-
-chai.use(chaiAsPromised);
-chai.use(chaiLike);
-export const expect = chai.expect;
-
-export enum SponsoringMode {
- Disabled = 0,
- Allowlisted = 1,
- Generous = 2,
-}
-
-type PrivateKeyFn = (seed: string | {filename?: string, url?: string}) => Promise<IKeyringPair>;
-
-export const usingEthPlaygrounds = async (code: (helper: EthUniqueHelper, privateKey: PrivateKeyFn) => Promise<void>) => {
- const silentConsole = new SilentConsole();
- silentConsole.enable();
-
- const helper = new EthUniqueHelper(new SilentLogger());
-
- try {
- await helper.connect(config.substrateUrl);
- await helper.connectWeb3(config.substrateUrl);
- const ss58Format = helper.chain.getChainProperties().ss58Format;
- const privateKey: PrivateKeyFn = async (seed) => {
- if(typeof seed === 'string') {
- return helper.util.fromSeed(seed, ss58Format);
- }
- if(seed.url) {
- const {filename} = makeNames(seed.url);
- seed.filename = filename;
- } else if(seed.filename) {
- // Pass
- } else {
- throw new Error('no url nor filename set');
- }
- const actualSeed = getTestSeed(seed.filename);
- let account = helper.util.fromSeed(actualSeed, ss58Format);
- if(await helper.balance.getSubstrate(account.address) < MINIMUM_DONOR_FUND) {
- console.warn(`${path.basename(seed.filename)}: Not enough funds present on the filename account. Using the default one as the donor instead.`);
- account = helper.util.fromSeed('//Alice', ss58Format);
- }
- return account;
- };
- await code(helper, privateKey);
- }
- finally {
- await helper.disconnect();
- silentConsole.disable();
- }
-};
-
-export function itEth(name: string, cb: (apis: { helper: EthUniqueHelper, privateKey: PrivateKeyFn }) => any, opts: { only?: boolean, skip?: boolean, requiredPallets?: string[] } = {}) {
- (opts.only ? it.only :
- opts.skip ? it.skip : it)(name, async function() {
- await usingEthPlaygrounds(async (helper, privateKey) => {
- if(opts.requiredPallets) {
- requirePalletsOrSkip(this, helper, opts.requiredPallets);
- }
-
- await cb({helper, privateKey});
- });
- });
-}
-
-export function itEthIfWithPallet(name: string, required: string[], cb: (apis: { helper: EthUniqueHelper, privateKey: PrivateKeyFn }) => any, opts: { only?: boolean, skip?: boolean, requiredPallets?: string[] } = {}) {
- return itEth(name, cb, {requiredPallets: required, ...opts});
-}
-
-itEth.only = (name: string, cb: (apis: { helper: EthUniqueHelper, privateKey: PrivateKeyFn }) => any) => itEth(name, cb, {only: true});
-itEth.skip = (name: string, cb: (apis: { helper: EthUniqueHelper, privateKey: (seed: string | {filename: string}) => Promise<IKeyringPair> }) => any) => itEth(name, cb, {skip: true});
-
-itEthIfWithPallet.only = (name: string, required: string[], cb: (apis: { helper: EthUniqueHelper, privateKey: PrivateKeyFn }) => any) => itEthIfWithPallet(name, required, cb, {only: true});
-itEthIfWithPallet.skip = (name: string, required: string[], cb: (apis: { helper: EthUniqueHelper, privateKey: PrivateKeyFn }) => any) => itEthIfWithPallet(name, required, cb, {skip: true});
-itEth.ifWithPallets = itEthIfWithPallet;
-
-export function itSchedEth(
- name: string,
- cb: (schedKind: SchedKind, apis: { helper: EthUniqueHelper, privateKey: PrivateKeyFn }) => any,
- opts: { only?: boolean, skip?: boolean, requiredPallets?: string[] } = {},
-) {
- itEth(name + ' (anonymous scheduling)', (apis) => cb('anon', apis), opts);
- itEth(name + ' (named scheduling)', (apis) => cb('named', apis), opts);
-}
-itSchedEth.only = (name: string, cb: (schedKind: SchedKind, apis: { helper: EthUniqueHelper, privateKey: (seed: string | {filename: string}) => Promise<IKeyringPair> }) => any) => itSchedEth(name, cb, {only: true});
-itSchedEth.skip = (name: string, cb: (schedKind: SchedKind, apis: { helper: EthUniqueHelper, privateKey: (seed: string | {filename: string}) => Promise<IKeyringPair> }) => any) => itSchedEth(name, cb, {skip: true});
-itSchedEth.ifWithPallets = itSchedIfWithPallets;
-
-function itSchedIfWithPallets(name: string, required: string[], cb: (schedKind: SchedKind, apis: { helper: EthUniqueHelper, privateKey: PrivateKeyFn }) => any, opts: { only?: boolean, skip?: boolean, requiredPallets?: string[] } = {}) {
- return itSchedEth(name, cb, {requiredPallets: required, ...opts});
-}
js-packages/tests/eth/util/playgrounds/types.tsdiffbeforeafterboth--- a/js-packages/tests/eth/util/playgrounds/types.ts
+++ /dev/null
@@ -1,133 +0,0 @@
-import {CollectionFlag} from '@unique-nft/playgrounds/types.js';
-import type {TCollectionMode} from '@unique-nft/playgrounds/types.js';
-
-export interface ContractImports {
- solPath: string;
- fsPath: string;
-}
-
-export interface CompiledContract {
- abi: any;
- object: string;
-}
-
-export type NormalizedEvent = {
- address: string,
- event: string,
- args: { [key: string]: string }
-};
-
-export interface OptionUint {
- status: boolean,
- value: bigint,
-}
-
-export type EthAddress = string;
-
-export interface CrossAddress {
- readonly eth: EthAddress,
- readonly sub: string | Uint8Array,
-}
-
-export type EthProperty = string[];
-
-export enum TokenPermissionField {
- Mutable,
- TokenOwner,
- CollectionAdmin
-}
-
-export enum CollectionLimitField {
- AccountTokenOwnership,
- SponsoredDataSize,
- SponsoredDataRateLimit,
- TokenLimit,
- SponsorTransferTimeout,
- SponsorApproveTimeout,
- OwnerCanTransfer,
- OwnerCanDestroy,
- TransferEnabled
-}
-
-export interface CollectionLimit {
- field: CollectionLimitField,
- value: OptionUint,
-}
-
-export interface CollectionLimitValue {
- field: CollectionLimitField,
- value: bigint,
-}
-
-export enum CollectionMode {
- Nonfungible,
- Fungible,
- Refungible,
-}
-
-export interface PropertyPermission {
- code: TokenPermissionField,
- value: boolean,
-}
-export interface TokenPropertyPermission {
- key: string,
- permissions: PropertyPermission[],
-}
-export interface CollectionNestingAndPermission {
- token_owner: boolean,
- collection_admin: boolean,
- restricted: string[],
-}
-
-export const emptyAddress: [string, string] = [
- '0x0000000000000000000000000000000000000000',
- '0',
-];
-
-export const CREATE_COLLECTION_DATA_DEFAULTS = {
- decimals: 0,
- properties: [],
- tokenPropertyPermissions: [],
- adminList: [],
- nestingSettings: {token_owner: false, collection_admin: false, restricted: []},
- limits: [],
- pendingSponsor: emptyAddress,
- flags: 0,
-};
-
-export interface Property {
- key: string;
- value: Buffer;
-}
-
-export class CreateCollectionData {
- name: string;
- description: string;
- tokenPrefix: string;
- collectionMode: TCollectionMode;
- decimals? = 0;
- properties?: Property[] = [];
- tokenPropertyPermissions?: TokenPropertyPermission[] = [];
- adminList?: CrossAddress[] = [];
- nestingSettings?: CollectionNestingAndPermission = {token_owner: false, collection_admin: false, restricted: []};
- limits?: CollectionLimitValue[] = [];
- pendingSponsor?: [string, string] = emptyAddress;
- flags?: number | CollectionFlag[] = [0];
-
- constructor(
- name: string,
- description: string,
- tokenPrefix: string,
- collectionMode: TCollectionMode,
- decimals = 18,
- ) {
- this.name = name;
- this.description = description;
- this.tokenPrefix = tokenPrefix;
- this.collectionMode = collectionMode;
- if(collectionMode == 'ft')
- this.decimals = decimals;
- else
- this.decimals = 0;
- }
-}
js-packages/tests/eth/util/playgrounds/unique.dev.tsdiffbeforeafterboth--- a/js-packages/tests/eth/util/playgrounds/unique.dev.ts
+++ /dev/null
@@ -1,616 +0,0 @@
-// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
-// SPDX-License-Identifier: Apache-2.0
-
-/* eslint-disable function-call-argument-newline */
-
-import {readFile} from 'fs/promises';
-
-import * as web3 from 'web3';
-import {WebsocketProvider} from 'web3-core';
-import {Contract} from 'web3-eth-contract';
-
-// @ts-ignore
-import solc from 'solc';
-
-import {evmToAddress} from '@polkadot/util-crypto';
-import type {IKeyringPair} from '@polkadot/types/types';
-
-import {ArrangeGroup, DevUniqueHelper} from '@unique/test-utils/index.js';
-
-import type {ContractImports, CompiledContract, CrossAddress, NormalizedEvent, EthProperty} from './types.js';
-import {CollectionMode, CreateCollectionData} from './types.js';
-
-// Native contracts ABI
-import collectionHelpersAbi from '../../abi/collectionHelpers.json' assert {type: 'json'};
-import nativeFungibleAbi from '../../abi/nativeFungible.json' assert {type: 'json'};
-import fungibleAbi from '../../abi/fungible.json' assert {type: 'json'};
-import fungibleDeprecatedAbi from '../../abi/fungibleDeprecated.json' assert {type: 'json'};
-import nonFungibleAbi from '../../abi/nonFungible.json' assert {type: 'json'};
-import nonFungibleDeprecatedAbi from '../../abi/nonFungibleDeprecated.json' assert {type: 'json'};
-import refungibleAbi from '../../abi/reFungible.json' assert {type: 'json'};
-import refungibleDeprecatedAbi from '../../abi/reFungibleDeprecated.json' assert {type: 'json'};
-import refungibleTokenAbi from '../../abi/reFungibleToken.json' assert {type: 'json'};
-import refungibleTokenDeprecatedAbi from '../../abi/reFungibleTokenDeprecated.json' assert {type: 'json'};
-import contractHelpersAbi from '../../abi/contractHelpers.json' assert {type: 'json'};
-import type {ICrossAccountId, TEthereumAccount, TCollectionMode} from '@unique-nft/playgrounds/types.js';
-
-class EthGroupBase {
- helper: EthUniqueHelper;
- gasPrice?: string;
-
- constructor(helper: EthUniqueHelper) {
- this.helper = helper;
- }
- async getGasPrice() {
- if(this.gasPrice)
- return this.gasPrice;
- this.gasPrice = await this.helper.getWeb3().eth.getGasPrice();
- return this.gasPrice;
- }
-}
-
-class ContractGroup extends EthGroupBase {
- async findImports(imports?: ContractImports[]) {
- if(!imports) return function(path: string) {
- return {error: `File not found: ${path}`};
- };
-
- const knownImports = {} as { [key: string]: string };
- for(const imp of imports) {
- knownImports[imp.solPath] = (await readFile(imp.fsPath)).toString();
- }
-
- return function(path: string) {
- if(path in knownImports) return {contents: knownImports[path]};
- return {error: `File not found: ${path}`};
- };
- }
-
- async compile(name: string, src: string, imports?: ContractImports[]): Promise<CompiledContract> {
- const compiled = JSON.parse(solc.compile(JSON.stringify({
- language: 'Solidity',
- sources: {
- [`${name}.sol`]: {
- content: src,
- },
- },
- settings: {
- outputSelection: {
- '*': {
- '*': ['*'],
- },
- },
- },
- }), {import: await this.findImports(imports)}));
-
- const hasErrors = compiled['errors']
- && compiled['errors'].length > 0
- && compiled.errors.some(function(err: any) {
- return err.severity == 'error';
- });
-
- if(hasErrors) {
- throw compiled.errors;
- }
- const out = compiled.contracts[`${name}.sol`][name];
-
- return {
- abi: out.abi,
- object: '0x' + out.evm.bytecode.object,
- };
- }
-
- async deployByCode(signer: string, name: string, src: string, imports?: ContractImports[], gas?: number, args?: any[]): Promise<Contract> {
- const compiledContract = await this.compile(name, src, imports);
- return this.deployByAbi(signer, compiledContract.abi, compiledContract.object, gas, args);
- }
-
- async deployByAbi(signer: string, abi: any, object: string, gas?: number, args?: any[]): Promise<Contract> {
- const web3 = this.helper.getWeb3();
- const contract = new web3.eth.Contract(abi, undefined, {
- data: object,
- from: signer,
- gas: gas ?? this.helper.eth.DEFAULT_GAS,
- });
- return await contract.deploy({data: object, arguments: args}).send({from: signer});
- }
-
-}
-
-class NativeContractGroup extends EthGroupBase {
-
- contractHelpers(caller: string) {
- const web3 = this.helper.getWeb3();
- return new web3.eth.Contract(contractHelpersAbi as any, this.helper.getApi().consts.evmContractHelpers.contractAddress.toString(), {
- from: caller,
- gas: this.helper.eth.DEFAULT_GAS,
- });
- }
-
- collectionHelpers(caller: string) {
- const web3 = this.helper.getWeb3();
- return new web3.eth.Contract(collectionHelpersAbi as any, this.helper.getApi().consts.common.contractAddress.toString(), {
- from: caller,
- gas: this.helper.eth.DEFAULT_GAS,
- });
- }
-
- collection(address: string, mode: TCollectionMode, caller?: string, mergeDeprecated = false) {
- let abi;
- if(address === this.helper.ethAddress.fromCollectionId(0)) {
- abi = nativeFungibleAbi;
- } else {
- abi ={
- 'nft': nonFungibleAbi,
- 'rft': refungibleAbi,
- 'ft': fungibleAbi,
- }[mode];
- }
- if(mergeDeprecated) {
- const deprecated = {
- 'nft': nonFungibleDeprecatedAbi,
- 'rft': refungibleDeprecatedAbi,
- 'ft': fungibleDeprecatedAbi,
- }[mode];
- abi = [...abi, ...deprecated];
- }
- const web3 = this.helper.getWeb3();
- return new web3.eth.Contract(abi as any, address, {
- gas: this.helper.eth.DEFAULT_GAS,
- ...(caller ? {from: caller} : {}),
- });
- }
-
- collectionById(collectionId: number, mode: 'nft' | 'rft' | 'ft', caller?: string, mergeDeprecated = false) {
- return this.collection(this.helper.ethAddress.fromCollectionId(collectionId), mode, caller, mergeDeprecated);
- }
-
- rftToken(address: string, caller?: string, mergeDeprecated = false) {
- const web3 = this.helper.getWeb3();
- const abi = mergeDeprecated ? [...refungibleTokenAbi, ...refungibleTokenDeprecatedAbi] : refungibleTokenAbi;
- return new web3.eth.Contract(abi as any, address, {
- gas: this.helper.eth.DEFAULT_GAS,
- ...(caller ? {from: caller} : {}),
- });
- }
-
- rftTokenById(collectionId: number, tokenId: number, caller?: string, mergeDeprecated = false) {
- return this.rftToken(this.helper.ethAddress.fromTokenId(collectionId, tokenId), caller, mergeDeprecated);
- }
-}
-
-class CreateCollectionTransaction {
- signer: string;
- data: CreateCollectionData;
- mergeDeprecated: boolean;
- helper: EthUniqueHelper;
-
- constructor(helper: EthUniqueHelper, signer: string, data: CreateCollectionData, mergeDeprecated = false) {
- this.helper = helper;
- this.signer = signer;
-
- let flags = 0;
- // convert CollectionFlags to number and join them in one number
- if(!data.flags) {
- flags = 0;
- } else if(typeof data.flags == 'number') {
- flags = data.flags;
- } else {
- for(let i = 0; i < data.flags.length; i++){
- const flag = data.flags[i];
- flags = flags | flag;
- }
- }
- data.flags = flags;
-
- this.data = data;
- this.mergeDeprecated = mergeDeprecated;
- }
-
- // eslint-disable-next-line require-await
- private async createTransaction() {
- const collectionHelper = this.helper.ethNativeContract.collectionHelpers(this.signer);
- let collectionMode;
- switch (this.data.collectionMode) {
- case 'nft': collectionMode = CollectionMode.Nonfungible; break;
- case 'rft': collectionMode = CollectionMode.Refungible; break;
- case 'ft': collectionMode = CollectionMode.Fungible; break;
- }
-
- const tx = collectionHelper.methods.createCollection([
- this.data.name,
- this.data.description,
- this.data.tokenPrefix,
- collectionMode,
- this.data.decimals,
- this.data.properties,
- this.data.tokenPropertyPermissions,
- this.data.adminList,
- this.data.nestingSettings,
- this.data.limits,
- this.data.pendingSponsor,
- this.data.flags,
- ]);
- return tx;
- }
-
- async send(options?: any): Promise<{ collectionId: number, collectionAddress: string, events: NormalizedEvent[], collection: Contract }> {
- const collectionCreationPrice = {
- value: Number(this.helper.balance.getCollectionCreationPrice()),
- };
- const tx = await this.createTransaction();
- const result = await tx.send({...options, ...collectionCreationPrice});
-
- const collectionAddress = this.helper.ethAddress.normalizeAddress(result.events.CollectionCreated.returnValues.collectionId);
- const collectionId = this.helper.ethAddress.extractCollectionId(collectionAddress);
- const events = this.helper.eth.normalizeEvents(result.events);
- const collection = await this.helper.ethNativeContract.collectionById(collectionId, this.data.collectionMode, this.signer, this.mergeDeprecated);
-
- return {collectionId, collectionAddress, events, collection};
- }
-
- async call(options?: any) {
- const collectionCreationPrice = {
- value: Number(this.helper.balance.getCollectionCreationPrice()),
- };
- const tx = await this.createTransaction();
-
- return await tx.call({...options, ...collectionCreationPrice});
- }
-}
-
-
-class EthGroup extends EthGroupBase {
- DEFAULT_GAS = 2_500_000;
-
- createAccount() {
- const web3 = this.helper.getWeb3();
- const account = web3.eth.accounts.create();
- web3.eth.accounts.wallet.add(account.privateKey);
- return account.address;
- }
-
- async createAccountWithBalance(donor: IKeyringPair, amount = 600n) {
- const account = this.createAccount();
- await this.transferBalanceFromSubstrate(donor, account, amount);
-
- return account;
- }
-
- async transferBalanceFromSubstrate(donor: IKeyringPair, recepient: string, amount = 100n, inTokens = true) {
- return await this.helper.balance.transferToSubstrate(donor, evmToAddress(recepient), amount * (inTokens ? this.helper.balance.getOneTokenNominal() : 1n));
- }
-
- async getCollectionCreationFee(signer: string) {
- const collectionHelper = await this.helper.ethNativeContract.collectionHelpers(signer);
- return await collectionHelper.methods.collectionCreationFee().call();
- }
-
- async sendEVM(signer: IKeyringPair, contractAddress: string, abi: string, value: string, gasLimit?: number) {
- if(!gasLimit) gasLimit = this.DEFAULT_GAS;
- const web3 = this.helper.getWeb3();
- // FIXME: can't send legacy transaction using tx.evm.call
- const gasPrice = await web3.eth.getGasPrice();
- // TODO: check execution status
- await this.helper.executeExtrinsic(
- signer,
- 'api.tx.evm.call', [this.helper.address.substrateToEth(signer.address), contractAddress, abi, value, gasLimit, gasPrice, null, null, []],
- true,
- );
- }
-
- async callEVM(signer: TEthereumAccount, contractAddress: string, abi: string) {
- return await this.helper.callRpc('api.rpc.eth.call', [{from: signer, to: contractAddress, data: abi}]);
- }
-
- createCollectionMethodName(mode: TCollectionMode) {
- switch (mode) {
- case 'ft':
- return 'createFTCollection';
- case 'nft':
- return 'createNFTCollection';
- case 'rft':
- return 'createRFTCollection';
- }
- }
-
- createCollection(signer: string, data: CreateCollectionData, mergeDeprecated = false): CreateCollectionTransaction {
- return new CreateCollectionTransaction(this.helper, signer, data, mergeDeprecated);
- }
-
- createNFTCollection(signer: string, name: string, description: string, tokenPrefix: string): Promise<{ collectionId: number, collectionAddress: string, events: NormalizedEvent[] }> {
- return this.createCollection(signer, new CreateCollectionData(name, description, tokenPrefix, 'nft')).send();
- }
-
- async createERC721MetadataCompatibleCollection(signer: string, data: CreateCollectionData, baseUri: string): Promise<{ collectionId: number, collectionAddress: string, events: NormalizedEvent[] }> {
- const collectionHelper = await this.helper.ethNativeContract.collectionHelpers(signer);
-
- const {collectionId, collectionAddress, events} = await this.createCollection(signer, data).send();
-
- await collectionHelper.methods.makeCollectionERC721MetadataCompatible(collectionAddress, baseUri).send();
-
- return {collectionId, collectionAddress, events};
- }
-
- async createERC721MetadataCompatibleNFTCollection(signer: string, name: string, description: string, tokenPrefix: string, baseUri: string): Promise<{ collectionId: number, collectionAddress: string, events: NormalizedEvent[] }> {
- const collectionHelper = await this.helper.ethNativeContract.collectionHelpers(signer);
-
- const {collectionId, collectionAddress, events} = await this.createCollection(signer, new CreateCollectionData(name, description, tokenPrefix, 'nft')).send();
-
- await collectionHelper.methods.makeCollectionERC721MetadataCompatible(collectionAddress, baseUri).send();
-
- return {collectionId, collectionAddress, events};
- }
-
- createRFTCollection(signer: string, name: string, description: string, tokenPrefix: string): Promise<{ collectionId: number, collectionAddress: string, events: NormalizedEvent[] }> {
- return this.createCollection(signer, new CreateCollectionData(name, description, tokenPrefix, 'rft')).send();
- }
-
- createFungibleCollection(signer: string, name: string, _decimals: number, description: string, tokenPrefix: string): Promise<{ collectionId: number, collectionAddress: string, events: NormalizedEvent[] }> {
- return this.createCollection(signer, new CreateCollectionData(name, description, tokenPrefix, 'ft')).send();
- }
-
- async createERC721MetadataCompatibleRFTCollection(signer: string, name: string, description: string, tokenPrefix: string, baseUri: string): Promise<{ collectionId: number, collectionAddress: string, events: NormalizedEvent[] }> {
- const collectionHelper = await this.helper.ethNativeContract.collectionHelpers(signer);
-
- const {collectionId, collectionAddress, events} = await this.createCollection(signer, new CreateCollectionData(name, description, tokenPrefix, 'rft')).send();
-
- await collectionHelper.methods.makeCollectionERC721MetadataCompatible(collectionAddress, baseUri).send();
-
- return {collectionId, collectionAddress, events};
- }
-
- async deployCollectorContract(signer: string): Promise<Contract> {
- return await this.helper.ethContract.deployByCode(signer, 'Collector', `
- // SPDX-License-Identifier: UNLICENSED
- pragma solidity ^0.8.6;
-
- contract Collector {
- uint256 collected;
- fallback() external payable {
- giveMoney();
- }
- function giveMoney() public payable {
- collected += msg.value;
- }
- function getCollected() public view returns (uint256) {
- return collected;
- }
- function getUnaccounted() public view returns (uint256) {
- return address(this).balance - collected;
- }
-
- function withdraw(address payable target) public {
- target.transfer(collected);
- collected = 0;
- }
- }
- `);
- }
-
- async deployFlipper(signer: string): Promise<Contract> {
- return await this.helper.ethContract.deployByCode(signer, 'Flipper', `
- // SPDX-License-Identifier: UNLICENSED
- pragma solidity ^0.8.6;
-
- contract Flipper {
- bool value = false;
- function flip() public {
- value = !value;
- }
- function getValue() public view returns (bool) {
- return value;
- }
- }
- `);
- }
-
- async recordCallFee(user: string, call: () => Promise<any>): Promise<bigint> {
- const before = await this.helper.balance.getEthereum(user);
- await call();
- // In dev mode, the transaction might not finish processing in time
- await this.helper.wait.newBlocks(1);
- const after = await this.helper.balance.getEthereum(user);
-
- return before - after;
- }
-
- normalizeEvents(events: any): NormalizedEvent[] {
- const output = [];
- for(const key of Object.keys(events)) {
- if(key.match(/^[0-9]+$/)) {
- output.push(events[key]);
- } else if(Array.isArray(events[key])) {
- output.push(...events[key]);
- } else {
- output.push(events[key]);
- }
- }
- output.sort((a, b) => a.logIndex - b.logIndex);
- return output.map(({address, event, returnValues}) => {
- const args: { [key: string]: string } = {};
- for(const key of Object.keys(returnValues)) {
- if(!key.match(/^[0-9]+$/)) {
- args[key] = returnValues[key];
- }
- }
- return {
- address,
- event,
- args,
- };
- });
- }
-
- async calculateFee(address: ICrossAccountId, code: () => Promise<any>): Promise<bigint> {
- const wrappedCode = async () => {
- await code();
- // In dev mode, the transaction might not finish processing in time
- await this.helper.wait.newBlocks(1);
- };
- return await this.helper.arrange.calculcateFee(address, wrappedCode);
- }
-}
-
-class EthAddressGroup extends EthGroupBase {
- extractCollectionId(address: string): number {
- if(!(address.length === 42 || address.length === 40)) throw new Error('address wrong format');
- return parseInt(address.slice(address.length - 8), 16);
- }
-
- fromCollectionId(collectionId: number): string {
- if(collectionId >= 0xffffffff || collectionId < 0) throw new Error('collectionId overflow');
- return web3.default.utils.toChecksumAddress(`0x17c4e6453cc49aaaaeaca894e6d9683e${collectionId.toString(16).padStart(8, '0')}`);
- }
-
- extractTokenId(address: string): { collectionId: number, tokenId: number } {
- if(!address.startsWith('0x'))
- throw 'address not starts with "0x"';
- if(address.length > 42)
- throw 'address length is more than 20 bytes';
- return {
- collectionId: Number('0x' + address.substring(address.length - 16, address.length - 8)),
- tokenId: Number('0x' + address.substring(address.length - 8)),
- };
- }
-
- fromTokenId(collectionId: number, tokenId: number): string {
- return this.helper.util.getTokenAddress({collectionId, tokenId});
- }
-
- normalizeAddress(address: string): string {
- return '0x' + address.substring(address.length - 40);
- }
-}
-export class EthPropertyGroup extends EthGroupBase {
- property(key: string, value: string): EthProperty {
- return [
- key,
- '0x' + Buffer.from(value).toString('hex'),
- ];
- }
-}
-export type EthUniqueHelperConstructor = new (...args: any[]) => EthUniqueHelper;
-
-export class EthCrossAccountGroup extends EthGroupBase {
- createAccount(): CrossAddress {
- return this.fromAddress(this.helper.eth.createAccount());
- }
-
- async createAccountWithBalance(donor: IKeyringPair, amount = 100n) {
- return this.fromAddress(await this.helper.eth.createAccountWithBalance(donor, amount));
- }
-
- fromAddress(address: TEthereumAccount): CrossAddress {
- return {
- eth: address,
- sub: '0',
- };
- }
-
- fromAddr(address: TEthereumAccount): [string, string] {
- return [
- address,
- '0',
- ];
- }
-
- fromKeyringPair(keyring: IKeyringPair): CrossAddress {
- return {
- eth: '0x0000000000000000000000000000000000000000',
- sub: keyring.addressRaw,
- };
- }
-}
-
-export class FeeGas {
- fee: number | bigint = 0n;
-
- gas: number | bigint = 0n;
-
- public static async build(helper: EthUniqueHelper, fee: bigint): Promise<FeeGas> {
- const instance = new FeeGas();
- instance.fee = instance.convertToTokens(fee);
- instance.gas = await instance.convertToGas(fee, helper);
- return instance;
- }
-
- private async convertToGas(fee: bigint, helper: EthUniqueHelper): Promise<bigint> {
- const gasPrice = BigInt(await helper.getWeb3().eth.getGasPrice());
- return fee / gasPrice;
- }
-
- private convertToTokens(value: bigint, nominal = 1_000_000_000_000_000_000n): number {
- return Number((value * 1000n) / nominal) / 1000;
- }
-}
-
-class EthArrangeGroup extends ArrangeGroup {
- declare helper: EthUniqueHelper;
-
- constructor(helper: EthUniqueHelper) {
- super(helper);
- this.helper = helper;
- }
-
- async calculcateFeeGas(payer: ICrossAccountId, promise: () => Promise<any>): Promise<FeeGas> {
- const fee = await this.calculcateFee(payer, promise);
- return await FeeGas.build(this.helper, fee);
- }
-}
-export class EthUniqueHelper extends DevUniqueHelper {
- web3: web3.default | null = null;
- web3Provider: WebsocketProvider | null = null;
-
- eth: EthGroup;
- ethAddress: EthAddressGroup;
- ethCrossAccount: EthCrossAccountGroup;
- ethNativeContract: NativeContractGroup;
- ethContract: ContractGroup;
- ethProperty: EthPropertyGroup;
- declare arrange: EthArrangeGroup;
- constructor(logger: { log: (msg: any, level: any) => void, level: any }, options: { [key: string]: any } = {}) {
- options.helperBase = options.helperBase ?? EthUniqueHelper;
-
- super(logger, options);
- this.eth = new EthGroup(this);
- this.ethAddress = new EthAddressGroup(this);
- this.ethCrossAccount = new EthCrossAccountGroup(this);
- this.ethNativeContract = new NativeContractGroup(this);
- this.ethContract = new ContractGroup(this);
- this.ethProperty = new EthPropertyGroup(this);
- this.arrange = new EthArrangeGroup(this);
- super.arrange = this.arrange;
- }
-
- getWeb3(): web3.default {
- if(this.web3 === null) throw Error('Web3 not connected');
- return this.web3;
- }
-
- connectWeb3(wsEndpoint: string) {
- if(this.web3 !== null) return;
- this.web3Provider = new web3.default.providers.WebsocketProvider(wsEndpoint);
- this.web3 = new web3.default(this.web3Provider);
- }
-
- override async disconnect() {
- if(this.web3 === null) return;
- this.web3Provider?.connection.close();
-
- await super.disconnect();
- }
-
- override clearApi() {
- super.clearApi();
- this.web3 = null;
- }
-
- override clone(helperCls: EthUniqueHelperConstructor, options?: { [key: string]: any; }): EthUniqueHelper {
- const newHelper = super.clone(helperCls, options) as EthUniqueHelper;
- newHelper.web3 = this.web3;
- newHelper.web3Provider = this.web3Provider;
-
- return newHelper;
- }
-}
js-packages/tests/maintenance.seqtest.tsdiffbeforeafterboth--- a/js-packages/tests/maintenance.seqtest.ts
+++ b/js-packages/tests/maintenance.seqtest.ts
@@ -17,8 +17,8 @@
import type {IKeyringPair} from '@polkadot/types/types';
import {ApiPromise} from '@polkadot/api';
import {expect, itSched, itSub, Pallets, requirePalletsOrSkip, usingPlaygrounds} from '@unique/test-utils/util.js';
-import {itEth} from './eth/util/index.js';
-import {main as correctState} from './migrations/correctStateAfterMaintenance.js';
+import {itEth} from '@unique/test-utils/eth/util.js';
+import {main as correctState} from '@unique/scripts/correctStateAfterMaintenance.js';
import type {PalletBalancesIdAmount} from '@polkadot/types/lookup';
import type {Vec} from '@polkadot/types-codec';
js-packages/tests/migrations/942057-appPromotion/README.mddiffbeforeafterboth--- a/js-packages/tests/migrations/942057-appPromotion/README.md
+++ /dev/null
@@ -1,42 +0,0 @@
-# Update Procedure
-
-- Enable maintenance mode
-- [Collect migration data using ChainQL](#stakers-data-loading)
-- ❗️❗️❗️ Initiate the runtime upgrade only at this point ❗️❗️❗️
-- Wait for the upgrade to complete
-- [Execute offchain migration](#execute-offchain-migration)
-- Disable maintenance mode
-
-## Stakers Data Loading
-
-Set the environment variable (WS_RPC). For example, ws://localhost:9944. Execute the following command:
-
-```sh
-chainql --tla-str=chainUrl=<WS_RPC> stakersParser.jsonnet > output.json
-```
-
-where `<WS_RPC>` - is the network address.
-
-Example for Opal:
-
-```sh
-chainql --tla-str=chainUrl=wss://eu-ws-opal.unique.network:443 stakersParser.jsonnet > output.json
-```
-
-To install chainql, execute the following command:
-
-```sh
-cargo install chainql
-```
-
-## Execute offchain migration
-
-To run, you need to set an environment variables:
-- `SUPERUSER_SEED` – the sudo key seed.
-- `WS_RPC` – the network address
-
-Run the migration by executing the following command:
-
-```sh
-npx ts-node --esm executeMigration.ts
-```
js-packages/tests/migrations/942057-appPromotion/collectData.tsdiffbeforeafterboth--- a/js-packages/tests/migrations/942057-appPromotion/collectData.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import {exec} from 'child_process';
-import path from 'path';
-import {dirname} from 'path';
-import {fileURLToPath} from 'url';
-
-export const collectData = () => {
- const dirName = dirname(fileURLToPath(import.meta.url));
-
- const pathToScript = path.resolve(dirName, './stakersParser.jsonnet');
- const outputPath = path.resolve(dirName, './output.json');
- exec(`chainql --tla-str=chainUrl=ws://127.0.0.1:9944 ${pathToScript} > ${outputPath}`);
-};
js-packages/tests/migrations/942057-appPromotion/executeMigration.tsdiffbeforeafterboth--- a/js-packages/tests/migrations/942057-appPromotion/executeMigration.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import {migrateLockedToFreeze} from './lockedToFreeze.js';
-
-
-const WS_RPC = process.env.WS_RPC || 'wss://ws-opal.unique.network:443';
-const SUPERUSER_SEED = process.env.SUPERUSER_SEED || '';
-
-migrateLockedToFreeze({
- wsEndpoint: WS_RPC,
- donorSeed: SUPERUSER_SEED,
-})
- .catch(console.error);
\ No newline at end of file
js-packages/tests/migrations/942057-appPromotion/index.tsdiffbeforeafterboth--- a/js-packages/tests/migrations/942057-appPromotion/index.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import type {Migration} from '../index.js';
-import {collectData} from './collectData.js';
-import {migrateLockedToFreeze} from './lockedToFreeze.js';
-
-export const migration: Migration = {
- async before() {
- await collectData();
- },
- async after() {
- await migrateLockedToFreeze();
- },
-};
\ No newline at end of file
js-packages/tests/migrations/942057-appPromotion/lockedToFreeze.tsdiffbeforeafterboth--- a/js-packages/tests/migrations/942057-appPromotion/lockedToFreeze.ts
+++ /dev/null
@@ -1,259 +0,0 @@
-// import { usingApi, privateKey, onlySign } from "./../../load/lib";
-import * as fs from 'fs';
-import {usingPlaygrounds} from '@unique/test-utils/util.js';
-import path, {dirname} from 'path';
-import {isInteger, parse} from 'lossless-json';
-import {fileURLToPath} from 'url';
-import config from '../../config.js';
-
-
-const WS_ENDPOINT = config.substrateUrl;
-const DONOR_SEED = '//Alice';
-const UPDATE_IF_VERSION = 942057;
-
-export function customNumberParser(value: any) {
- return isInteger(value) ? BigInt(value) : parseFloat(value);
-}
-
-export const migrateLockedToFreeze = async(options: { wsEndpoint: string; donorSeed: string } = {
- wsEndpoint: WS_ENDPOINT,
- donorSeed: DONOR_SEED,
-}) => {
- await usingPlaygrounds(async (helper, privateKey) => {
- const api = helper.getApi();
- // 1. Check version equal 942057 or skip
- console.log((api.consts.system.version as any).specVersion.toNumber());
- if((api.consts.system.version as any).specVersion.toNumber() != UPDATE_IF_VERSION) {
- console.log("Version isn't 942057.");
- return;
- }
-
- // 2. Get sudo signer
- const signer = await privateKey(options.donorSeed);
- console.log('2. Getting sudo:', signer.address);
-
- // 3. Parse data to migrate
- console.log('3. Parsing chainql results...');
- const dirName = dirname(fileURLToPath(import.meta.url));
- const parsingResult = parse(fs.readFileSync(path.resolve(dirName, 'output.json'), 'utf-8'), undefined, customNumberParser);
-
- const chainqlImportData = parsingResult as {
- address: string;
- balance: string;
- account: {
- fee_frozen: string,
- free: string,
- misc_frozen: string,
- reserved: string,
- },
- locks: {
- amount: string,
- id: string,
- }[],
- stakes: object,
- unstakes: object,
- }[];
- testChainqlData(chainqlImportData);
-
- const stakers = chainqlImportData.map((i) => i.address);
-
- // 3.1 Split into chunks by 100
- console.log('3.1 Splitting into chunks...');
- const stakersChunks = chunk(stakers, 100);
- console.log('3.1 Done, total chunks:', stakersChunks.length);
-
- // 4. Get signer/sudo nonce
- console.log('4. Getting sudo nonce...');
- const signerAccount = (
- await api.query.system.account(signer.address)
- ).toJSON() as any;
-
- let nonce: number = signerAccount.nonce;
- console.log('4. Sudo nonce is:', nonce);
-
- // 5. Only sign upgradeAccounts-transactions for each chunk
- console.log('5. Signing transactions...');
- const signedTxs = [];
- for(const chunk of stakersChunks) {
- const tx = api.tx.sudo.sudo(api.tx.appPromotion.upgradeAccounts(chunk));
- const signed = tx.sign(signer, {
- blockHash: api.genesisHash,
- genesisHash: api.genesisHash,
- runtimeVersion: api.runtimeVersion,
- nonce: nonce++,
- });
- signedTxs.push(signed);
- }
-
- // 6. Send all signed transactions
- console.log('6. Sending transactions...');
- const promises = signedTxs.map((tx) => api.rpc.author.submitAndWatchExtrinsic(tx));
- // 6.1 Wait all transactions settled
- console.log('6.1 Waiting all transactions settled...');
- const res = await Promise.allSettled(promises);
-
- console.log('Wait 5 blocks for transactions to be included in a block...');
- await helper.wait.newBlocks(5);
- // 6.2 Filter failed transactions
- console.log('6.2 Getting failed transactions...');
- const failedTx = res.filter((r) => r.status == 'rejected') as PromiseRejectedResult[];
- console.log('6.2. total failedTxs:', failedTx.length);
-
- // 6.3 Log the reasons of failed tx
- for(const tx of failedTx) {
- console.log(tx.reason);
- }
-
- // 7. Check balances for 10 blocks:
- console.log('7. Check balances...');
- let blocksLeft = 10;
- let notMigrated = stakers;
- const suspiciousAccounts = [];
- do {
- console.log('blocks left:', blocksLeft);
- const _notMigrated: string[] = [];
- console.log('accounts to migrate...', notMigrated.length);
- for(const accountToMigrate of notMigrated) {
- let accountMigrated = true;
- // 7.0 get data from chainql:
- const oldAccount = chainqlImportData.find(acc => acc.address === accountToMigrate);
- if(!oldAccount) {
- console.log('Cannot find old account data for', accountMigrated);
- accountMigrated = false;
- _notMigrated.push(accountToMigrate);
- continue;
- }
-
- // 7.1 system.account
- const balance = await api.query.system.account(accountToMigrate) as any;
- // new balances
- const free = balance.data.free;
- const reserved = balance.data.reserved;
- const frozen = balance.data.frozen;
- // old balances
- const oldFree = oldAccount.account.free;
- const oldReserved = oldAccount.account.reserved;
- const oldFrozen = oldAccount.account.fee_frozen;
- // asserts new = old
- if(oldFree.toString() !== free.toString()) {
- console.log('Old free !== New free, which is probably not a problem', oldFree.toString(), free.toString());
- suspiciousAccounts.push(accountToMigrate);
- }
- if(oldFrozen.toString() !== frozen.toString()) {
- console.log('Old frozen !== New frozen, which is probably not a problem', oldFrozen.toString(), frozen.toString());
- suspiciousAccounts.push(accountToMigrate);
- }
- if(oldReserved.toString() !== reserved.toString()) {
- console.log('Old reserved !== New reserved, which is probably not a problem', oldReserved.toString(), reserved.toString());
- suspiciousAccounts.push(accountToMigrate);
- }
-
- // 7.2 balances.locks: no id appstake
- const locks = await helper.balance.getLocked(accountToMigrate);
- const appPromoLocks = locks.filter(lock => lock.id === 'appstake');
- if(appPromoLocks.length !== 0) {
- console.log('Account still has app-promo lock');
- accountMigrated = false;
- }
-
- // 7.3 balances.freezes set...
- let freezes = await api.query.balances.freezes(accountToMigrate) as any;
- freezes = freezes.map((freez: any) => ({id: freez.id.toString(), amount: freez.amount.toString()}));
- if(!freezes) {
- console.log('Account does not have freezes');
- accountMigrated = false;
- } else {
- const oldAppPromoLocks = oldAccount.locks.filter(l => l.id === '0x6170707374616b65'); // get app promo locks
- // should be only one freez for each account
- if(freezes.length !== 1) {
- console.log('freezes.length !== 1 and old appPromoLocks.length', freezes.length, oldAppPromoLocks.length);
- accountMigrated = false;
- } else {
- const appPromoFreez = freezes[0];
- // freez-amount should be equal to migrated lock amount
- if(appPromoFreez.amount.toString() !== oldAppPromoLocks[0].amount.toString()) {
- console.log('freezes amount !== old appPromoLocks amount', appPromoFreez.amount.toString(), oldAppPromoLocks[0].amount.toString());
- accountMigrated = false;
- }
- // freez id should be correct
- if(appPromoFreez.id !== '0x6170707374616b656170707374616b65') {
- console.log('Got freez with incorrect id:', appPromoFreez.id);
- accountMigrated = false;
- }
- }
- }
-
- // 7.4 Stakes number the same
- const stakesNumber = await helper.staking.getStakesNumber({Substrate: accountToMigrate});
- const oldStakesNumber = oldAccount.stakes ? Object.keys(oldAccount.stakes).length : 0;
- if(stakesNumber.toString() !== oldStakesNumber.toString()) {
- console.log('Old stakes number !== New stakes number', oldStakesNumber, stakesNumber);
- accountMigrated = false;
- }
-
- // 7.5 Total pendingUnstake + total staked = old locked
- const pendingUnstakes = await helper.staking.getPendingUnstake({Substrate: accountToMigrate});
- const totalStaked = await helper.staking.getTotalStaked({Substrate: accountToMigrate});
- const totalBalanceInAppPromo = pendingUnstakes + totalStaked;
- if(totalBalanceInAppPromo.toString() !== oldAccount.balance.toString()) {
- console.log('totalBalanceInAppPromo !== old locked in app promo', totalBalanceInAppPromo.toString(), oldAccount.balance.toString());
- accountMigrated = false;
- }
-
- // 8 Add to not-migrated
- if(!accountMigrated) {
- console.log('Add to not migrated:', accountToMigrate);
- _notMigrated.push(accountToMigrate);
- }
- }
-
- blocksLeft--;
- notMigrated = _notMigrated;
- await helper.wait.newBlocks(1);
- } while(blocksLeft > 0 && notMigrated.length !== 0);
-
- console.log('Not migrated accounts...', notMigrated.length);
- if(suspiciousAccounts.length > 0) {
- console.log('Saving suspicious accounts to suspicious.json:');
- fs.writeFileSync('./suspicious.json', JSON.stringify(suspiciousAccounts));
- }
- if(notMigrated.length > 0) {
- console.log('Saving not migrated list to failed.json:');
- notMigrated.forEach(console.log);
- fs.writeFileSync('./failed.json', JSON.stringify(notMigrated));
- process.exit(1);
- } else {
- console.log('Migration success');
- }
- }, options.wsEndpoint);
-};
-
-const chunk = <T>(arr: T[], size: number) =>
- Array.from({length: Math.ceil(arr.length / size)}, (_: any, i: number) =>
- arr.slice(i * size, i * size + size));
-
-const testChainqlData = (data: any) => {
- const wrongData = [];
- for(const account of data) {
- try {
- if(account.address == null) throw Error('no address in data');
- if(account.balance == null) throw Error('no balance in data');
- if(account.account == null) throw Error('no account in data');
- if(account.account.fee_frozen == null) throw Error('no account.fee_frozen in data');
- if(account.account.misc_frozen == null) throw Error('no account.misc_frozen in data');
- if(account.account.free == null) throw Error('no account.free in data');
- if(account.account.reserved == null) throw Error('no account.reserved in data');
- if(account.locks == null) throw Error('no locks in data');
- if(account.locks[0].amount == null) throw Error('no locks.amount in data');
- if(account.locks[0].id == null) throw Error('no locks.id in data');
- } catch (error) {
- wrongData.push(account.address);
- console.log((error as Error).message, account.address);
- }
- if(wrongData.length > 0) {
- console.log(data);
- throw Error('Chainql data not correct');
- }
- }
- console.log('Chainql data correct');
-};
js-packages/tests/migrations/942057-appPromotion/stakersParser.jsonnetdiffbeforeafterboth--- a/js-packages/tests/migrations/942057-appPromotion/stakersParser.jsonnet
+++ /dev/null
@@ -1,29 +0,0 @@
-function(chainUrl)
-
- local
- state = cql.chain(chainUrl).latest,
- locked_balances = state.Balances.Locks._preloadKeys,
- accountsRaw = state.System.Account._preloadKeys,
- stakers = state.AppPromotion.Staked._preloadKeys,
- unstakes = state.AppPromotion.PendingUnstake._preloadKeys,
- locks = [
- { [k]: std.filter(function(l) l.id == '0x6170707374616b65', locked_balances[k]) }
- for k in std.objectFields(locked_balances)
- ],
- unstakersData = [
- { [pair[0]]: { block: block, value: pair[1] } }
-
- for block in std.objectFields(unstakes)
- for pair in unstakes[block]
- ],
- non_empty_locks = std.prune(locks)
- ;
-
- std.map(function(a) {
- address: std.objectFields(a)[0],
- balance: a[std.objectFields(a)[0]][0].amount,
- account: accountsRaw[std.objectFields(a)[0]].data,
- locks: locked_balances[std.objectFields(a)[0]],
- stakes: if std.objectHas(stakers, std.objectFields(a)[0]) then stakers[std.objectFields(a)[0]] else null,
- unstakes: std.filterMap(function(b) std.objectHas(b, std.objectFields(a)[0]), function(c) std.objectValues(c)[0], unstakersData),
- }, non_empty_locks)
js-packages/tests/migrations/correctStateAfterMaintenance.tsdiffbeforeafterboth--- a/js-packages/tests/migrations/correctStateAfterMaintenance.ts
+++ /dev/null
@@ -1,69 +0,0 @@
-import config from '../config.js';
-import {usingPlaygrounds} from '@unique/test-utils/util.js';
-import type {u32} from '@polkadot/types-codec';
-
-const WS_ENDPOINT = config.substrateUrl;
-const DONOR_SEED = '//Alice';
-
-export const main = async(options: { wsEndpoint: string; donorSeed: string } = {
- wsEndpoint: WS_ENDPOINT,
- donorSeed: DONOR_SEED,
-}) => {
- await usingPlaygrounds(async (helper, privateKey) => {
- const api = helper.getApi();
-
- if((await api.query.maintenance.enabled()).valueOf()) {
- throw Error('The network is still in maintenance mode');
- }
-
- const pendingBlocks = (
- await api.query.appPromotion.pendingUnstake.entries()
- ).map(([k, _v]) =>
- (k.args[0] as u32).toNumber());
-
- const currentBlock = (await api.query.system.number() as u32).toNumber();
-
- const filteredBlocks = pendingBlocks.filter(b => currentBlock > b);
-
- if(filteredBlocks.length != 0) {
- console.log(`During maintenance mode, ${filteredBlocks.length} block(s) were not processed. Number(s): ${filteredBlocks}`);
- } else {
- console.log('Nothing to change');
- return;
- }
-
- const skippedBlocks = chunk(filteredBlocks, 10);
-
- const signer = await privateKey(options.donorSeed);
-
- const txs = skippedBlocks.map((b) =>
- api.tx.sudo.sudo(api.tx.appPromotion.forceUnstake(b)));
-
-
- const promises = txs.map((tx) => () => helper.signTransaction(signer, tx));
-
- await Promise.allSettled(promises.map((p) => p()));
-
- const failedBlocks: number[] = [];
- let isSuccess = true;
-
- for(const b of filteredBlocks) {
- if(((await api.query.appPromotion.pendingUnstake(b)).toJSON() as any[]).length != 0) {
- failedBlocks.push(b);
- isSuccess = false;
- }
- }
-
- if(isSuccess) {
- console.log('Done. %d block(s) were processed.', filteredBlocks.length);
- } else {
- throw new Error(`Something went wrong. Block(s) have not been processed: ${failedBlocks}`);
- }
-
-
- }, options.wsEndpoint);
-};
-
-const chunk = <T>(arr: T[], size: number) =>
- Array.from({length: Math.ceil(arr.length / size)}, (_: any, i: number) =>
- arr.slice(i * size, i * size + size));
js-packages/tests/migrations/index.tsdiffbeforeafterboth--- a/js-packages/tests/migrations/index.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import {migration as locksToFreezesMigration} from './942057-appPromotion/index.js';
-export interface Migration {
- before: () => Promise<void>,
- after: () => Promise<void>,
-}
-
-export const migrations: {[key: string]: Migration} = {
- 'v942057': locksToFreezesMigration,
-};
\ No newline at end of file
js-packages/tests/migrations/runCheckState.tsdiffbeforeafterboth--- a/js-packages/tests/migrations/runCheckState.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import {main} from './correctStateAfterMaintenance.js';
-
-main({
- wsEndpoint: process.env.WS_RPC!,
- donorSeed: process.env.SUPERUSER_SEED!,
-}).then(() => process.exit(0))
- .catch((e) => {
- console.error(e);
- process.exit(1);
- });
js-packages/tests/sub/appPromotion/appPromotion.seqtest.tsdiffbeforeafterboth--- a/js-packages/tests/sub/appPromotion/appPromotion.seqtest.ts
+++ b/js-packages/tests/sub/appPromotion/appPromotion.seqtest.ts
@@ -16,7 +16,7 @@
import type {IKeyringPair} from '@polkadot/types/types';
import {itSub, usingPlaygrounds, Pallets, requirePalletsOrSkip} from '@unique/test-utils/util.js';
-import {expect} from '../../eth/util/index.js';
+import {expect} from '@unique/test-utils/eth/util.js';
let superuser: IKeyringPair;
let donor: IKeyringPair;
js-packages/tests/sub/appPromotion/appPromotion.test.tsdiffbeforeafterboth--- a/js-packages/tests/sub/appPromotion/appPromotion.test.ts
+++ b/js-packages/tests/sub/appPromotion/appPromotion.test.ts
@@ -19,7 +19,7 @@
itSub, usingPlaygrounds, Pallets, requirePalletsOrSkip, LOCKING_PERIOD, UNLOCKING_PERIOD,
} from '@unique/test-utils/util.js';
import {DevUniqueHelper} from '@unique/test-utils';
-import {itEth, expect, SponsoringMode} from '../../eth/util/index.js';
+import {itEth, expect, SponsoringMode} from '@unique/test-utils/eth/util.js';
let donor: IKeyringPair;
let palletAdmin: IKeyringPair;
js-packages/tests/sub/nesting/nesting.negative.test.tsdiffbeforeafterboth--- a/js-packages/tests/sub/nesting/nesting.negative.test.ts
+++ b/js-packages/tests/sub/nesting/nesting.negative.test.ts
@@ -17,7 +17,7 @@
import type {IKeyringPair} from '@polkadot/types/types';
import {expect, itSub, Pallets, usingPlaygrounds} from '@unique/test-utils/util.js';
import {UniqueFTCollection, UniqueNFTCollection, UniqueNFToken, UniqueRFTCollection, UniqueRFToken} from '@unique-nft/playgrounds/unique.js';
-import {itEth} from '../../eth/util/index.js';
+import {itEth} from '@unique/test-utils/eth/util.js';
let alice: IKeyringPair;
let bob: IKeyringPair;
js-packages/tests/transfer.test.tsdiffbeforeafterboth--- a/js-packages/tests/transfer.test.ts
+++ b/js-packages/tests/transfer.test.ts
@@ -15,7 +15,7 @@
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
import type {IKeyringPair} from '@polkadot/types/types';
-import {itEth, usingEthPlaygrounds} from './eth/util/index.js';
+import {itEth, usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
import {itSub, Pallets, usingPlaygrounds, expect} from '@unique/test-utils/util.js';
import {NON_EXISTENT_COLLECTION_ID} from '@unique-nft/playgrounds/types.js';
js-packages/yarn.lockdiffbeforeafterboth1# This file is generated by running "yarn install" inside your project.2# Manual changes might be lost - proceed with caution!34__metadata:5 version: 66 cacheKey: 878"@aashutoshrathi/word-wrap@npm:^1.2.3":9 version: 1.2.610 resolution: "@aashutoshrathi/word-wrap@npm:1.2.6"11 checksum: ada901b9e7c680d190f1d012c84217ce0063d8f5c5a7725bb91ec3c5ed99bb7572680eb2d2938a531ccbaec39a95422fcd8a6b4a13110c7d98dd75402f66a0cd12 languageName: node13 linkType: hard1415"@cspotcode/source-map-support@npm:^0.8.0":16 version: 0.8.117 resolution: "@cspotcode/source-map-support@npm:0.8.1"18 dependencies:19 "@jridgewell/trace-mapping": 0.3.920 checksum: 5718f267085ed8edb3e7ef210137241775e607ee18b77d95aa5bd7514f47f5019aa2d82d96b3bf342ef7aa890a346fa1044532ff7cc3009e7d24fce3ce6200fa21 languageName: node22 linkType: hard2324"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0":25 version: 4.4.026 resolution: "@eslint-community/eslint-utils@npm:4.4.0"27 dependencies:28 eslint-visitor-keys: ^3.3.029 peerDependencies:30 eslint: ^6.0.0 || ^7.0.0 || >=8.0.031 checksum: cdfe3ae42b4f572cbfb46d20edafe6f36fc5fb52bf2d90875c58aefe226892b9677fef60820e2832caf864a326fe4fc225714c46e8389ccca04d5f9288aabd2232 languageName: node33 linkType: hard3435"@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1":36 version: 4.10.037 resolution: "@eslint-community/regexpp@npm:4.10.0"38 checksum: 2a6e345429ea8382aaaf3a61f865cae16ed44d31ca917910033c02dc00d505d939f10b81e079fa14d43b51499c640138e153b7e40743c4c094d9df97d4e56f7b39 languageName: node40 linkType: hard4142"@eslint/eslintrc@npm:^2.1.3":43 version: 2.1.344 resolution: "@eslint/eslintrc@npm:2.1.3"45 dependencies:46 ajv: ^6.12.447 debug: ^4.3.248 espree: ^9.6.049 globals: ^13.19.050 ignore: ^5.2.051 import-fresh: ^3.2.152 js-yaml: ^4.1.053 minimatch: ^3.1.254 strip-json-comments: ^3.1.155 checksum: 5c6c3878192fe0ddffa9aff08b4e2f3bcc8f1c10d6449b7295a5f58b662019896deabfc19890455ffd7e60a5bd28d25d0eaefb2f78b2d230aae3879af92b89e556 languageName: node57 linkType: hard5859"@eslint/js@npm:8.53.0":60 version: 8.53.061 resolution: "@eslint/js@npm:8.53.0"62 checksum: e0d5cfb0000aaee237c8e6d6d6e366faa60b1ef7f928ce17778373aa44d3b886368f6d5e1f97f913f0f16801aad016db8b8df78418c9d18825c15590328028af63 languageName: node64 linkType: hard6566"@ethereumjs/common@npm:2.5.0":67 version: 2.5.068 resolution: "@ethereumjs/common@npm:2.5.0"69 dependencies:70 crc-32: ^1.2.071 ethereumjs-util: ^7.1.172 checksum: f08830c5b86f215e5bd9b80c7202beeeacfcd6094e493efb1cad75dd9d4605bae6c3d4a991447fc14e494c6c4ce99ea41f77e2032f3a9e1976f44308d3757ea773 languageName: node74 linkType: hard7576"@ethereumjs/common@npm:^2.5.0":77 version: 2.6.578 resolution: "@ethereumjs/common@npm:2.6.5"79 dependencies:80 crc-32: ^1.2.081 ethereumjs-util: ^7.1.582 checksum: 0143386f267ef01b7a8bb1847596f964ad58643c084e5fd8e3a0271a7bf8428605dbf38cbb92c84f6622080ad095abeb765f178c02d86ec52abf9e8a4c0e4ecf83 languageName: node84 linkType: hard8586"@ethereumjs/tx@npm:3.3.2":87 version: 3.3.288 resolution: "@ethereumjs/tx@npm:3.3.2"89 dependencies:90 "@ethereumjs/common": ^2.5.091 ethereumjs-util: ^7.1.292 checksum: e18c871fa223fcb23af1c3dde0ff9c82c91e962556fd531e1c75df63afb3941dd71e3def733d8c442a80224c6dcefb256f169cc286176e6ffb33c19349189c5393 languageName: node94 linkType: hard9596"@ethersproject/abi@npm:^5.6.3":97 version: 5.7.098 resolution: "@ethersproject/abi@npm:5.7.0"99 dependencies:100 "@ethersproject/address": ^5.7.0101 "@ethersproject/bignumber": ^5.7.0102 "@ethersproject/bytes": ^5.7.0103 "@ethersproject/constants": ^5.7.0104 "@ethersproject/hash": ^5.7.0105 "@ethersproject/keccak256": ^5.7.0106 "@ethersproject/logger": ^5.7.0107 "@ethersproject/properties": ^5.7.0108 "@ethersproject/strings": ^5.7.0109 checksum: bc6962bb6cb854e4d2a4d65b2c49c716477675b131b1363312234bdbb7e19badb7d9ce66f4ca2a70ae2ea84f7123dbc4e300a1bfe5d58864a7eafabc1466627e110 languageName: node111 linkType: hard112113"@ethersproject/abstract-provider@npm:^5.7.0":114 version: 5.7.0115 resolution: "@ethersproject/abstract-provider@npm:5.7.0"116 dependencies:117 "@ethersproject/bignumber": ^5.7.0118 "@ethersproject/bytes": ^5.7.0119 "@ethersproject/logger": ^5.7.0120 "@ethersproject/networks": ^5.7.0121 "@ethersproject/properties": ^5.7.0122 "@ethersproject/transactions": ^5.7.0123 "@ethersproject/web": ^5.7.0124 checksum: 74cf4696245cf03bb7cc5b6cbf7b4b89dd9a79a1c4688126d214153a938126d4972d42c93182198653ce1de35f2a2cad68be40337d4774b3698a39b28f0228a8125 languageName: node126 linkType: hard127128"@ethersproject/abstract-signer@npm:^5.7.0":129 version: 5.7.0130 resolution: "@ethersproject/abstract-signer@npm:5.7.0"131 dependencies:132 "@ethersproject/abstract-provider": ^5.7.0133 "@ethersproject/bignumber": ^5.7.0134 "@ethersproject/bytes": ^5.7.0135 "@ethersproject/logger": ^5.7.0136 "@ethersproject/properties": ^5.7.0137 checksum: a823dac9cfb761e009851050ebebd5b229d1b1cc4a75b125c2da130ff37e8218208f7f9d1386f77407705b889b23d4a230ad67185f8872f083143e0073cbfbe3138 languageName: node139 linkType: hard140141"@ethersproject/address@npm:^5.7.0":142 version: 5.7.0143 resolution: "@ethersproject/address@npm:5.7.0"144 dependencies:145 "@ethersproject/bignumber": ^5.7.0146 "@ethersproject/bytes": ^5.7.0147 "@ethersproject/keccak256": ^5.7.0148 "@ethersproject/logger": ^5.7.0149 "@ethersproject/rlp": ^5.7.0150 checksum: 64ea5ebea9cc0e845c413e6cb1e54e157dd9fc0dffb98e239d3a3efc8177f2ff798cd4e3206cf3660ee8faeb7bef1a47dc0ebef0d7b132c32e61e550c7d4c843151 languageName: node152 linkType: hard153154"@ethersproject/base64@npm:^5.7.0":155 version: 5.7.0156 resolution: "@ethersproject/base64@npm:5.7.0"157 dependencies:158 "@ethersproject/bytes": ^5.7.0159 checksum: 7dd5d734d623582f08f665434f53685041a3d3b334a0e96c0c8afa8bbcaab934d50e5b6b980e826a8fde8d353e0b18f11e61faf17468177274b8e7c69cd9742b160 languageName: node161 linkType: hard162163"@ethersproject/bignumber@npm:^5.7.0":164 version: 5.7.0165 resolution: "@ethersproject/bignumber@npm:5.7.0"166 dependencies:167 "@ethersproject/bytes": ^5.7.0168 "@ethersproject/logger": ^5.7.0169 bn.js: ^5.2.1170 checksum: 8c9a134b76f3feb4ec26a5a27379efb4e156b8fb2de0678a67788a91c7f4e30abe9d948638458e4b20f2e42380da0adacc7c9389d05fce070692edc6ae9b4904171 languageName: node172 linkType: hard173174"@ethersproject/bytes@npm:^5.7.0":175 version: 5.7.0176 resolution: "@ethersproject/bytes@npm:5.7.0"177 dependencies:178 "@ethersproject/logger": ^5.7.0179 checksum: 66ad365ceaab5da1b23b72225c71dce472cf37737af5118181fa8ab7447d696bea15ca22e3a0e8836fdd8cfac161afe321a7c67d0dde96f9f645ddd759676621180 languageName: node181 linkType: hard182183"@ethersproject/constants@npm:^5.7.0":184 version: 5.7.0185 resolution: "@ethersproject/constants@npm:5.7.0"186 dependencies:187 "@ethersproject/bignumber": ^5.7.0188 checksum: 6d4b1355747cce837b3e76ec3bde70e4732736f23b04f196f706ebfa5d4d9c2be50904a390d4d40ce77803b98d03d16a9b6898418e04ba63491933ce08c4ba8a189 languageName: node190 linkType: hard191192"@ethersproject/hash@npm:^5.7.0":193 version: 5.7.0194 resolution: "@ethersproject/hash@npm:5.7.0"195 dependencies:196 "@ethersproject/abstract-signer": ^5.7.0197 "@ethersproject/address": ^5.7.0198 "@ethersproject/base64": ^5.7.0199 "@ethersproject/bignumber": ^5.7.0200 "@ethersproject/bytes": ^5.7.0201 "@ethersproject/keccak256": ^5.7.0202 "@ethersproject/logger": ^5.7.0203 "@ethersproject/properties": ^5.7.0204 "@ethersproject/strings": ^5.7.0205 checksum: 6e9fa8d14eb08171cd32f17f98cc108ec2aeca74a427655f0d689c550fee0b22a83b3b400fad7fb3f41cf14d4111f87f170aa7905bcbcd1173a55f21b06262ef206 languageName: node207 linkType: hard208209"@ethersproject/keccak256@npm:^5.7.0":210 version: 5.7.0211 resolution: "@ethersproject/keccak256@npm:5.7.0"212 dependencies:213 "@ethersproject/bytes": ^5.7.0214 js-sha3: 0.8.0215 checksum: ff70950d82203aab29ccda2553422cbac2e7a0c15c986bd20a69b13606ed8bb6e4fdd7b67b8d3b27d4f841e8222cbaccd33ed34be29f866fec7308f96ed244c6216 languageName: node217 linkType: hard218219"@ethersproject/logger@npm:^5.7.0":220 version: 5.7.0221 resolution: "@ethersproject/logger@npm:5.7.0"222 checksum: 075ab2f605f1fd0813f2e39c3308f77b44a67732b36e712d9bc085f22a84aac4da4f71b39bee50fe78da3e1c812673fadc41180c9970fe5e486e91ea17befe0d223 languageName: node224 linkType: hard225226"@ethersproject/networks@npm:^5.7.0":227 version: 5.7.1228 resolution: "@ethersproject/networks@npm:5.7.1"229 dependencies:230 "@ethersproject/logger": ^5.7.0231 checksum: 0339f312304c17d9a0adce550edb825d4d2c8c9468c1634c44172c67a9ed256f594da62c4cda5c3837a0f28b7fabc03aca9b492f68ff1fdad337ee861b27bd5d232 languageName: node233 linkType: hard234235"@ethersproject/properties@npm:^5.7.0":236 version: 5.7.0237 resolution: "@ethersproject/properties@npm:5.7.0"238 dependencies:239 "@ethersproject/logger": ^5.7.0240 checksum: 6ab0ccf0c3aadc9221e0cdc5306ce6cd0df7f89f77d77bccdd1277182c9ead0202cd7521329ba3acde130820bf8af299e17cf567d0d497c736ee918207bbf59f241 languageName: node242 linkType: hard243244"@ethersproject/rlp@npm:^5.7.0":245 version: 5.7.0246 resolution: "@ethersproject/rlp@npm:5.7.0"247 dependencies:248 "@ethersproject/bytes": ^5.7.0249 "@ethersproject/logger": ^5.7.0250 checksum: bce165b0f7e68e4d091c9d3cf47b247cac33252df77a095ca4281d32d5eeaaa3695d9bc06b2b057c5015353a68df89f13a4a54a72e888e4beeabbe56b15dda6e251 languageName: node252 linkType: hard253254"@ethersproject/signing-key@npm:^5.7.0":255 version: 5.7.0256 resolution: "@ethersproject/signing-key@npm:5.7.0"257 dependencies:258 "@ethersproject/bytes": ^5.7.0259 "@ethersproject/logger": ^5.7.0260 "@ethersproject/properties": ^5.7.0261 bn.js: ^5.2.1262 elliptic: 6.5.4263 hash.js: 1.1.7264 checksum: 8f8de09b0aac709683bbb49339bc0a4cd2f95598f3546436c65d6f3c3a847ffa98e06d35e9ed2b17d8030bd2f02db9b7bd2e11c5cf8a71aad4537487ab4cf03a265 languageName: node266 linkType: hard267268"@ethersproject/strings@npm:^5.7.0":269 version: 5.7.0270 resolution: "@ethersproject/strings@npm:5.7.0"271 dependencies:272 "@ethersproject/bytes": ^5.7.0273 "@ethersproject/constants": ^5.7.0274 "@ethersproject/logger": ^5.7.0275 checksum: 5ff78693ae3fdf3cf23e1f6dc047a61e44c8197d2408c42719fef8cb7b7b3613a4eec88ac0ed1f9f5558c74fe0de7ae3195a29ca91a239c74b9f444d8e8b50df276 languageName: node277 linkType: hard278279"@ethersproject/transactions@npm:^5.6.2, @ethersproject/transactions@npm:^5.7.0":280 version: 5.7.0281 resolution: "@ethersproject/transactions@npm:5.7.0"282 dependencies:283 "@ethersproject/address": ^5.7.0284 "@ethersproject/bignumber": ^5.7.0285 "@ethersproject/bytes": ^5.7.0286 "@ethersproject/constants": ^5.7.0287 "@ethersproject/keccak256": ^5.7.0288 "@ethersproject/logger": ^5.7.0289 "@ethersproject/properties": ^5.7.0290 "@ethersproject/rlp": ^5.7.0291 "@ethersproject/signing-key": ^5.7.0292 checksum: a31b71996d2b283f68486241bff0d3ea3f1ba0e8f1322a8fffc239ccc4f4a7eb2ea9994b8fd2f093283fd75f87bae68171e01b6265261f821369aca319884a79293 languageName: node294 linkType: hard295296"@ethersproject/web@npm:^5.7.0":297 version: 5.7.1298 resolution: "@ethersproject/web@npm:5.7.1"299 dependencies:300 "@ethersproject/base64": ^5.7.0301 "@ethersproject/bytes": ^5.7.0302 "@ethersproject/logger": ^5.7.0303 "@ethersproject/properties": ^5.7.0304 "@ethersproject/strings": ^5.7.0305 checksum: 7028c47103f82fd2e2c197ce0eecfacaa9180ffeec7de7845b1f4f9b19d84081b7a48227aaddde05a4aaa526af574a9a0ce01cc0fc75e3e371f84b38b5b16b2b306 languageName: node307 linkType: hard308309"@humanwhocodes/config-array@npm:^0.11.13":310 version: 0.11.13311 resolution: "@humanwhocodes/config-array@npm:0.11.13"312 dependencies:313 "@humanwhocodes/object-schema": ^2.0.1314 debug: ^4.1.1315 minimatch: ^3.0.5316 checksum: f8ea57b0d7ed7f2d64cd3944654976829d9da91c04d9c860e18804729a33f7681f78166ef4c761850b8c324d362f7d53f14c5c44907a6b38b32c703ff85e4805317 languageName: node318 linkType: hard319320"@humanwhocodes/module-importer@npm:^1.0.1":321 version: 1.0.1322 resolution: "@humanwhocodes/module-importer@npm:1.0.1"323 checksum: 0fd22007db8034a2cdf2c764b140d37d9020bbfce8a49d3ec5c05290e77d4b0263b1b972b752df8c89e5eaa94073408f2b7d977aed131faf6cf396ebb5d7fb61324 languageName: node325 linkType: hard326327"@humanwhocodes/object-schema@npm:^2.0.1":328 version: 2.0.1329 resolution: "@humanwhocodes/object-schema@npm:2.0.1"330 checksum: 24929487b1ed48795d2f08346a0116cc5ee4634848bce64161fb947109352c562310fd159fc64dda0e8b853307f5794605191a9547f7341158559ca3c8262a45331 languageName: node332 linkType: hard333334"@isaacs/cliui@npm:^8.0.2":335 version: 8.0.2336 resolution: "@isaacs/cliui@npm:8.0.2"337 dependencies:338 string-width: ^5.1.2339 string-width-cjs: "npm:string-width@^4.2.0"340 strip-ansi: ^7.0.1341 strip-ansi-cjs: "npm:strip-ansi@^6.0.1"342 wrap-ansi: ^8.1.0343 wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0"344 checksum: 4a473b9b32a7d4d3cfb7a614226e555091ff0c5a29a1734c28c72a182c2f6699b26fc6b5c2131dfd841e86b185aea714c72201d7c98c2fba5f17709333a67aeb345 languageName: node346 linkType: hard347348"@jridgewell/resolve-uri@npm:^3.0.3":349 version: 3.1.1350 resolution: "@jridgewell/resolve-uri@npm:3.1.1"351 checksum: f5b441fe7900eab4f9155b3b93f9800a916257f4e8563afbcd3b5a5337b55e52bd8ae6735453b1b745457d9f6cdb16d74cd6220bbdd98cf153239e13f6cbb653352 languageName: node353 linkType: hard354355"@jridgewell/sourcemap-codec@npm:^1.4.10":356 version: 1.4.15357 resolution: "@jridgewell/sourcemap-codec@npm:1.4.15"358 checksum: b881c7e503db3fc7f3c1f35a1dd2655a188cc51a3612d76efc8a6eb74728bef5606e6758ee77423e564092b4a518aba569bbb21c9bac5ab7a35b0c6ae7e344c8359 languageName: node360 linkType: hard361362"@jridgewell/trace-mapping@npm:0.3.9":363 version: 0.3.9364 resolution: "@jridgewell/trace-mapping@npm:0.3.9"365 dependencies:366 "@jridgewell/resolve-uri": ^3.0.3367 "@jridgewell/sourcemap-codec": ^1.4.10368 checksum: d89597752fd88d3f3480845691a05a44bd21faac18e2185b6f436c3b0fd0c5a859fbbd9aaa92050c4052caf325ad3e10e2e1d1b64327517471b7d51babc0ddef369 languageName: node370 linkType: hard371372"@noble/curves@npm:^1.2.0":373 version: 1.2.0374 resolution: "@noble/curves@npm:1.2.0"375 dependencies:376 "@noble/hashes": 1.3.2377 checksum: bb798d7a66d8e43789e93bc3c2ddff91a1e19fdb79a99b86cd98f1e5eff0ee2024a2672902c2576ef3577b6f282f3b5c778bebd55761ddbb30e36bf275e83dd0378 languageName: node379 linkType: hard380381"@noble/hashes@npm:1.3.2, @noble/hashes@npm:^1.3.2":382 version: 1.3.2383 resolution: "@noble/hashes@npm:1.3.2"384 checksum: fe23536b436539d13f90e4b9be843cc63b1b17666a07634a2b1259dded6f490be3d050249e6af98076ea8f2ea0d56f578773c2197f2aa0eeaa5fba5bc18ba474385 languageName: node386 linkType: hard387388"@nodelib/fs.scandir@npm:2.1.5":389 version: 2.1.5390 resolution: "@nodelib/fs.scandir@npm:2.1.5"391 dependencies:392 "@nodelib/fs.stat": 2.0.5393 run-parallel: ^1.1.9394 checksum: a970d595bd23c66c880e0ef1817791432dbb7acbb8d44b7e7d0e7a22f4521260d4a83f7f9fd61d44fda4610105577f8f58a60718105fb38352baed612fd79e59395 languageName: node396 linkType: hard397398"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2":399 version: 2.0.5400 resolution: "@nodelib/fs.stat@npm:2.0.5"401 checksum: 012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0402 languageName: node403 linkType: hard404405"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8":406 version: 1.2.8407 resolution: "@nodelib/fs.walk@npm:1.2.8"408 dependencies:409 "@nodelib/fs.scandir": 2.1.5410 fastq: ^1.6.0411 checksum: 190c643f156d8f8f277bf2a6078af1ffde1fd43f498f187c2db24d35b4b4b5785c02c7dc52e356497b9a1b65b13edc996de08de0b961c32844364da02986dc53412 languageName: node413 linkType: hard414415"@npmcli/agent@npm:^2.0.0":416 version: 2.2.0417 resolution: "@npmcli/agent@npm:2.2.0"418 dependencies:419 agent-base: ^7.1.0420 http-proxy-agent: ^7.0.0421 https-proxy-agent: ^7.0.1422 lru-cache: ^10.0.1423 socks-proxy-agent: ^8.0.1424 checksum: 3b25312edbdfaa4089af28e2d423b6f19838b945e47765b0c8174c1395c79d43c3ad6d23cb364b43f59fd3acb02c93e3b493f72ddbe3dfea04c86843a7311fc4425 languageName: node426 linkType: hard427428"@npmcli/fs@npm:^3.1.0":429 version: 3.1.0430 resolution: "@npmcli/fs@npm:3.1.0"431 dependencies:432 semver: ^7.3.5433 checksum: a50a6818de5fc557d0b0e6f50ec780a7a02ab8ad07e5ac8b16bf519e0ad60a144ac64f97d05c443c3367235d337182e1d012bbac0eb8dbae8dc7b40b193efd0e434 languageName: node435 linkType: hard436437"@openzeppelin/contracts@npm:^4.9.2":438 version: 4.9.3439 resolution: "@openzeppelin/contracts@npm:4.9.3"440 checksum: 4932063e733b35fa7669b9fe2053f69b062366c5c208b0c6cfa1ac451712100c78acff98120c3a4b88d94154c802be05d160d71f37e7d74cadbe150964458838441 languageName: node442 linkType: hard443444"@pkgjs/parseargs@npm:^0.11.0":445 version: 0.11.0446 resolution: "@pkgjs/parseargs@npm:0.11.0"447 checksum: 6ad6a00fc4f2f2cfc6bff76fb1d88b8ee20bc0601e18ebb01b6d4be583733a860239a521a7fbca73b612e66705078809483549d2b18f370eb346c5155c8e4a0f448 languageName: node449 linkType: hard450451"@polkadot/api-augment@npm:10.10.1":452 version: 10.10.1453 resolution: "@polkadot/api-augment@npm:10.10.1"454 dependencies:455 "@polkadot/api-base": 10.10.1456 "@polkadot/rpc-augment": 10.10.1457 "@polkadot/types": 10.10.1458 "@polkadot/types-augment": 10.10.1459 "@polkadot/types-codec": 10.10.1460 "@polkadot/util": ^12.5.1461 tslib: ^2.6.2462 checksum: 16ca2d71215019faba506b6dc455ef15ea1eec8b97bd146aef49a04ae15dc9246405540219bfbea36027ee50c5dbb15885296c30ee98908afdd7a56626efd06c463 languageName: node464 linkType: hard465466"@polkadot/api-base@npm:10.10.1":467 version: 10.10.1468 resolution: "@polkadot/api-base@npm:10.10.1"469 dependencies:470 "@polkadot/rpc-core": 10.10.1471 "@polkadot/types": 10.10.1472 "@polkadot/util": ^12.5.1473 rxjs: ^7.8.1474 tslib: ^2.6.2475 checksum: 374a4378484817b29c52908a9dac649b4d4f231db21a0b0b3d3ec3331c7b9b9c374c103b5e64d028c212b8ab3eb98244cd760d20e2fe5f46a8fdc1d923555047476 languageName: node477 linkType: hard478479"@polkadot/api-derive@npm:10.10.1":480 version: 10.10.1481 resolution: "@polkadot/api-derive@npm:10.10.1"482 dependencies:483 "@polkadot/api": 10.10.1484 "@polkadot/api-augment": 10.10.1485 "@polkadot/api-base": 10.10.1486 "@polkadot/rpc-core": 10.10.1487 "@polkadot/types": 10.10.1488 "@polkadot/types-codec": 10.10.1489 "@polkadot/util": ^12.5.1490 "@polkadot/util-crypto": ^12.5.1491 rxjs: ^7.8.1492 tslib: ^2.6.2493 checksum: ff0f016d39aa73f55a881927e6ae3dd75c2a81fe4095cdda5e558f420d815a12c204e6a2082acbef2c74867b810d41ef349de2b7924d46957be7260b71fb1512494 languageName: node495 linkType: hard496497"@polkadot/api@npm:10.10.1":498 version: 10.10.1499 resolution: "@polkadot/api@npm:10.10.1"500 dependencies:501 "@polkadot/api-augment": 10.10.1502 "@polkadot/api-base": 10.10.1503 "@polkadot/api-derive": 10.10.1504 "@polkadot/keyring": ^12.5.1505 "@polkadot/rpc-augment": 10.10.1506 "@polkadot/rpc-core": 10.10.1507 "@polkadot/rpc-provider": 10.10.1508 "@polkadot/types": 10.10.1509 "@polkadot/types-augment": 10.10.1510 "@polkadot/types-codec": 10.10.1511 "@polkadot/types-create": 10.10.1512 "@polkadot/types-known": 10.10.1513 "@polkadot/util": ^12.5.1514 "@polkadot/util-crypto": ^12.5.1515 eventemitter3: ^5.0.1516 rxjs: ^7.8.1517 tslib: ^2.6.2518 checksum: de1aa727b63fb921854840fe2d18b55b99f512f4d3e08d3b895fceea7891f6dd0febe6aa5fb7b1778494c78d6a6a7ebd17d426ba2e3df459aa974b7bb8fee19c519 languageName: node520 linkType: hard521522"@polkadot/keyring@npm:^12.5.1":523 version: 12.5.1524 resolution: "@polkadot/keyring@npm:12.5.1"525 dependencies:526 "@polkadot/util": 12.5.1527 "@polkadot/util-crypto": 12.5.1528 tslib: ^2.6.2529 peerDependencies:530 "@polkadot/util": 12.5.1531 "@polkadot/util-crypto": 12.5.1532 checksum: d659e5980e4cd6b68f91448a817306666530c033410c713854547dbbbecacb7362346c3ada6c5ab9dc71437c3cf002f064d7db40d1588637b96e84ff8f35dcf4533 languageName: node534 linkType: hard535536"@polkadot/networks@npm:12.5.1, @polkadot/networks@npm:^12.5.1":537 version: 12.5.1538 resolution: "@polkadot/networks@npm:12.5.1"539 dependencies:540 "@polkadot/util": 12.5.1541 "@substrate/ss58-registry": ^1.43.0542 tslib: ^2.6.2543 checksum: f8c64684f6806365c1aded6ebca52432050cc8caacd067faf339b2f37497b63b13cebb689f7b0f9c62a890566383cf1931552da82815cc52baa2166fb1772a43544 languageName: node545 linkType: hard546547"@polkadot/rpc-augment@npm:10.10.1":548 version: 10.10.1549 resolution: "@polkadot/rpc-augment@npm:10.10.1"550 dependencies:551 "@polkadot/rpc-core": 10.10.1552 "@polkadot/types": 10.10.1553 "@polkadot/types-codec": 10.10.1554 "@polkadot/util": ^12.5.1555 tslib: ^2.6.2556 checksum: d19ff447fea298387e8af9b7ac44c8eb8438b0e939608414c0ddc642fbd5c2d657d199a66741d9e330f28aa587486a163238cdf058cc69994178b121a0d26738557 languageName: node558 linkType: hard559560"@polkadot/rpc-core@npm:10.10.1":561 version: 10.10.1562 resolution: "@polkadot/rpc-core@npm:10.10.1"563 dependencies:564 "@polkadot/rpc-augment": 10.10.1565 "@polkadot/rpc-provider": 10.10.1566 "@polkadot/types": 10.10.1567 "@polkadot/util": ^12.5.1568 rxjs: ^7.8.1569 tslib: ^2.6.2570 checksum: 5ab21029fbafa13e50bb48161a82c023f7015b633e258b76c2cff25bf648d7f69baf18efc291ebec8dd635b38da8223e853e15b53478268b1f6b40d2ab0b3e09571 languageName: node572 linkType: hard573574"@polkadot/rpc-provider@npm:10.10.1":575 version: 10.10.1576 resolution: "@polkadot/rpc-provider@npm:10.10.1"577 dependencies:578 "@polkadot/keyring": ^12.5.1579 "@polkadot/types": 10.10.1580 "@polkadot/types-support": 10.10.1581 "@polkadot/util": ^12.5.1582 "@polkadot/util-crypto": ^12.5.1583 "@polkadot/x-fetch": ^12.5.1584 "@polkadot/x-global": ^12.5.1585 "@polkadot/x-ws": ^12.5.1586 "@substrate/connect": 0.7.33587 eventemitter3: ^5.0.1588 mock-socket: ^9.3.1589 nock: ^13.3.4590 tslib: ^2.6.2591 dependenciesMeta:592 "@substrate/connect":593 optional: true594 checksum: 44147ad7ce4bb0fccf5272bbe56b3b65c1e907f02109c8e18a5b5da8c658f84c1d7741c5e6878adacd06514254b0a7fb8254d5a222f55f25f7a573b2ba970449595 languageName: node596 linkType: hard597598"@polkadot/typegen@npm:^10.10.1":599 version: 10.10.1600 resolution: "@polkadot/typegen@npm:10.10.1"601 dependencies:602 "@polkadot/api": 10.10.1603 "@polkadot/api-augment": 10.10.1604 "@polkadot/rpc-augment": 10.10.1605 "@polkadot/rpc-provider": 10.10.1606 "@polkadot/types": 10.10.1607 "@polkadot/types-augment": 10.10.1608 "@polkadot/types-codec": 10.10.1609 "@polkadot/types-create": 10.10.1610 "@polkadot/types-support": 10.10.1611 "@polkadot/util": ^12.5.1612 "@polkadot/util-crypto": ^12.5.1613 "@polkadot/x-ws": ^12.5.1614 handlebars: ^4.7.8615 tslib: ^2.6.2616 yargs: ^17.7.2617 bin:618 polkadot-types-chain-info: scripts/polkadot-types-chain-info.mjs619 polkadot-types-from-chain: scripts/polkadot-types-from-chain.mjs620 polkadot-types-from-defs: scripts/polkadot-types-from-defs.mjs621 polkadot-types-internal-interfaces: scripts/polkadot-types-internal-interfaces.mjs622 polkadot-types-internal-metadata: scripts/polkadot-types-internal-metadata.mjs623 checksum: 9c167fffc476b59524ef864472b688884739c8f2deccc24b09713d7ce4247e43e352be05261ff21072dc1afbbbd2da750a11f42ae657de481d9b402ef858904b624 languageName: node625 linkType: hard626627"@polkadot/types-augment@npm:10.10.1":628 version: 10.10.1629 resolution: "@polkadot/types-augment@npm:10.10.1"630 dependencies:631 "@polkadot/types": 10.10.1632 "@polkadot/types-codec": 10.10.1633 "@polkadot/util": ^12.5.1634 tslib: ^2.6.2635 checksum: 40440fc2a9568c9e636f478c4f191cbb38f07256f4db7f1bb9bdbcf0b928280315afee2843090a006a3dfd16e000f22dd6a9bd5687dd6400a1fc3dcd6ee59a25636 languageName: node637 linkType: hard638639"@polkadot/types-codec@npm:10.10.1":640 version: 10.10.1641 resolution: "@polkadot/types-codec@npm:10.10.1"642 dependencies:643 "@polkadot/util": ^12.5.1644 "@polkadot/x-bigint": ^12.5.1645 tslib: ^2.6.2646 checksum: 17ceb561e6a82784febd5c8b0219050a9b8aeeb766ffbae8255ab586120063ca9fea1c89df776047e861aba87e43048a8060d5c469bcd42c169830a69416d62f647 languageName: node648 linkType: hard649650"@polkadot/types-create@npm:10.10.1":651 version: 10.10.1652 resolution: "@polkadot/types-create@npm:10.10.1"653 dependencies:654 "@polkadot/types-codec": 10.10.1655 "@polkadot/util": ^12.5.1656 tslib: ^2.6.2657 checksum: 1dedef441218a0786774033c2d587b8ccdf184a72da671c7da70ced9f765073bfec4a15d8937b00d5d50cb0eb1b4bd25886ace3f7e024c95b46f58a1c318efd1658 languageName: node659 linkType: hard660661"@polkadot/types-known@npm:10.10.1":662 version: 10.10.1663 resolution: "@polkadot/types-known@npm:10.10.1"664 dependencies:665 "@polkadot/networks": ^12.5.1666 "@polkadot/types": 10.10.1667 "@polkadot/types-codec": 10.10.1668 "@polkadot/types-create": 10.10.1669 "@polkadot/util": ^12.5.1670 tslib: ^2.6.2671 checksum: 25489967fcd6022f11a64c20884dd1ef49494f3b3e514034a08cc07f61267121adf8b96b307edc3381c445de58842d515aa8440ee888bc37120775deffae671a672 languageName: node673 linkType: hard674675"@polkadot/types-support@npm:10.10.1":676 version: 10.10.1677 resolution: "@polkadot/types-support@npm:10.10.1"678 dependencies:679 "@polkadot/util": ^12.5.1680 tslib: ^2.6.2681 checksum: 391857f39463fcc9bbc34a6bafd191e12eb3fd28f386d4094cc3cdcbcd0fcc8799c6e99a49b0e634c6a1b78d07188eb6e1e01299f55df2593c3f30fcb241631c682 languageName: node683 linkType: hard684685"@polkadot/types@npm:10.10.1":686 version: 10.10.1687 resolution: "@polkadot/types@npm:10.10.1"688 dependencies:689 "@polkadot/keyring": ^12.5.1690 "@polkadot/types-augment": 10.10.1691 "@polkadot/types-codec": 10.10.1692 "@polkadot/types-create": 10.10.1693 "@polkadot/util": ^12.5.1694 "@polkadot/util-crypto": ^12.5.1695 rxjs: ^7.8.1696 tslib: ^2.6.2697 checksum: 58b8b026e25f8156f270bdd240a2e384b64db93a6abe7c15abe9acdc2ce06a724328a8bf4d5b3047f5e398eef3d4961447d8511c52105c082dddd1b9d8fb0cb4698 languageName: node699 linkType: hard700701"@polkadot/util-crypto@npm:12.5.1, @polkadot/util-crypto@npm:^12.5.1":702 version: 12.5.1703 resolution: "@polkadot/util-crypto@npm:12.5.1"704 dependencies:705 "@noble/curves": ^1.2.0706 "@noble/hashes": ^1.3.2707 "@polkadot/networks": 12.5.1708 "@polkadot/util": 12.5.1709 "@polkadot/wasm-crypto": ^7.2.2710 "@polkadot/wasm-util": ^7.2.2711 "@polkadot/x-bigint": 12.5.1712 "@polkadot/x-randomvalues": 12.5.1713 "@scure/base": ^1.1.3714 tslib: ^2.6.2715 peerDependencies:716 "@polkadot/util": 12.5.1717 checksum: 4efb5ca6e48f7457d8dcfa02ac9f581ce23a90ba9e72c8f6fd7649296e92dcb3dfa3d2bdd0b5ed68b81bf15e32aabef34f60d47851249d8859dba7ebeb63501f718 languageName: node719 linkType: hard720721"@polkadot/util@npm:12.5.1, @polkadot/util@npm:^12.5.1":722 version: 12.5.1723 resolution: "@polkadot/util@npm:12.5.1"724 dependencies:725 "@polkadot/x-bigint": 12.5.1726 "@polkadot/x-global": 12.5.1727 "@polkadot/x-textdecoder": 12.5.1728 "@polkadot/x-textencoder": 12.5.1729 "@types/bn.js": ^5.1.1730 bn.js: ^5.2.1731 tslib: ^2.6.2732 checksum: 955d41c01cb3c7da72c4f5f8faed13e1af1fa9603a3a1dd9f282eb69b5ebbffb889e76c595d1252ff5f9665cb3c55f1a96f908b020dc79356f92b2d5ce1aa81e733 languageName: node734 linkType: hard735736"@polkadot/wasm-bridge@npm:7.2.2":737 version: 7.2.2738 resolution: "@polkadot/wasm-bridge@npm:7.2.2"739 dependencies:740 "@polkadot/wasm-util": 7.2.2741 tslib: ^2.6.1742 peerDependencies:743 "@polkadot/util": "*"744 "@polkadot/x-randomvalues": "*"745 checksum: b998b21bca963699c2958de0558bad83d19ca72922b7ca74beb99b8c418bdc4be7af86f7ea231b3224de55eb8ec59e0626642d393fc90192659cccaf346d5d2b746 languageName: node747 linkType: hard748749"@polkadot/wasm-crypto-asmjs@npm:7.2.2":750 version: 7.2.2751 resolution: "@polkadot/wasm-crypto-asmjs@npm:7.2.2"752 dependencies:753 tslib: ^2.6.1754 peerDependencies:755 "@polkadot/util": "*"756 checksum: 2eba52949b51adfa1e8183d406f40b935cdea1a3189994529febd9db4f1abf5f853782e2c15dad7ab0f2dd8641b3dbf40b221c0462b6a29ac11c38e8a70a8a5b757 languageName: node758 linkType: hard759760"@polkadot/wasm-crypto-init@npm:7.2.2":761 version: 7.2.2762 resolution: "@polkadot/wasm-crypto-init@npm:7.2.2"763 dependencies:764 "@polkadot/wasm-bridge": 7.2.2765 "@polkadot/wasm-crypto-asmjs": 7.2.2766 "@polkadot/wasm-crypto-wasm": 7.2.2767 "@polkadot/wasm-util": 7.2.2768 tslib: ^2.6.1769 peerDependencies:770 "@polkadot/util": "*"771 "@polkadot/x-randomvalues": "*"772 checksum: 75e4cc6cfecef13942397c0b0cbcd2ebf8534589b0a22104df6352908efbdc78e6fa42df3ce1660c1b267c8b7c40667a42c0d986a7a3bc4a2b9ea17ba97608af773 languageName: node774 linkType: hard775776"@polkadot/wasm-crypto-wasm@npm:7.2.2":777 version: 7.2.2778 resolution: "@polkadot/wasm-crypto-wasm@npm:7.2.2"779 dependencies:780 "@polkadot/wasm-util": 7.2.2781 tslib: ^2.6.1782 peerDependencies:783 "@polkadot/util": "*"784 checksum: e3d0aeb59fb7e5d3d25a256ed57c4e05895e9d7e29cb22214d9b59ff6e400f25b0c5758f77a0513befd99ef33051b43bbff3d1def978e87668aa74f3f8799c0b785 languageName: node786 linkType: hard787788"@polkadot/wasm-crypto@npm:^7.2.2":789 version: 7.2.2790 resolution: "@polkadot/wasm-crypto@npm:7.2.2"791 dependencies:792 "@polkadot/wasm-bridge": 7.2.2793 "@polkadot/wasm-crypto-asmjs": 7.2.2794 "@polkadot/wasm-crypto-init": 7.2.2795 "@polkadot/wasm-crypto-wasm": 7.2.2796 "@polkadot/wasm-util": 7.2.2797 tslib: ^2.6.1798 peerDependencies:799 "@polkadot/util": "*"800 "@polkadot/x-randomvalues": "*"801 checksum: 25710154c1a25aea59a8cdba4cfe051249e83b86cbc0869be7b0680c86f2841131f7df76881d422fb4d179b9037320957e725bc50546e63273bc11b85751b5a6802 languageName: node803 linkType: hard804805"@polkadot/wasm-util@npm:7.2.2, @polkadot/wasm-util@npm:^7.2.2":806 version: 7.2.2807 resolution: "@polkadot/wasm-util@npm:7.2.2"808 dependencies:809 tslib: ^2.6.1810 peerDependencies:811 "@polkadot/util": "*"812 checksum: b1ad387e5b2726183e1c141ac59f9e6e722d9c1e896dbe0069fb5ce46d30c3517f07b36c840c1d82d23256e111a3697ba3015e53073858e8e05ab3d0cbdbf05e813 languageName: node814 linkType: hard815816"@polkadot/x-bigint@npm:12.5.1, @polkadot/x-bigint@npm:^12.5.1":817 version: 12.5.1818 resolution: "@polkadot/x-bigint@npm:12.5.1"819 dependencies:820 "@polkadot/x-global": 12.5.1821 tslib: ^2.6.2822 checksum: 295d00b17860196c43ac4957ffb052ca68bb4319990876238e3f0925ca6ca9106810204136315491116a11a277d8a1e1fae65cc43a168505ee5a69a27404d2e0823 languageName: node824 linkType: hard825826"@polkadot/x-fetch@npm:^12.5.1":827 version: 12.5.1828 resolution: "@polkadot/x-fetch@npm:12.5.1"829 dependencies:830 "@polkadot/x-global": 12.5.1831 node-fetch: ^3.3.2832 tslib: ^2.6.2833 checksum: 26b24b09f9074c181f53f13ea17a1389e823b262a956a28fddf609ba7d177a1cde3cd4db28e8e38320b207adcc675ac868dadfaeafe9cf3998a3861f02ee43d7834 languageName: node835 linkType: hard836837"@polkadot/x-global@npm:12.5.1, @polkadot/x-global@npm:^12.5.1":838 version: 12.5.1839 resolution: "@polkadot/x-global@npm:12.5.1"840 dependencies:841 tslib: ^2.6.2842 checksum: d45e3d6096674b7495992c6e45cf1a284db545c16107ba9adae241d6aefe13c27adfaf93d58a3079e6a6b63acb221eb3181c7f55dc34124b24b542154724c506843 languageName: node844 linkType: hard845846"@polkadot/x-randomvalues@npm:12.5.1":847 version: 12.5.1848 resolution: "@polkadot/x-randomvalues@npm:12.5.1"849 dependencies:850 "@polkadot/x-global": 12.5.1851 tslib: ^2.6.2852 peerDependencies:853 "@polkadot/util": 12.5.1854 "@polkadot/wasm-util": "*"855 checksum: 52ee4b4206a98cac9e97e3d194db01fb4a540046672784442926478eaa2b2a74cebae59d10432671f544d72df5d623aedf57c301bcf447a4c72688ec3cb82fd5856 languageName: node857 linkType: hard858859"@polkadot/x-textdecoder@npm:12.5.1":860 version: 12.5.1861 resolution: "@polkadot/x-textdecoder@npm:12.5.1"862 dependencies:863 "@polkadot/x-global": 12.5.1864 tslib: ^2.6.2865 checksum: 202a9e216e9b89cc74012fa3f6c96eeb368dc3e6fa3c943f28c37c20941a6c678506cbc136946e9ff100123aa43846eab7765af074de94dfdd23f4ce2242c794866 languageName: node867 linkType: hard868869"@polkadot/x-textencoder@npm:12.5.1":870 version: 12.5.1871 resolution: "@polkadot/x-textencoder@npm:12.5.1"872 dependencies:873 "@polkadot/x-global": 12.5.1874 tslib: ^2.6.2875 checksum: 7a8d99d203cbd9537e55405d737667ae8cd9ad40a9e3de52f2ef7580a23d27ebf7f7c52da4e0eca6ca34dc97aae33a97bab36afb54aaa7714f54a31931f94113876 languageName: node877 linkType: hard878879"@polkadot/x-ws@npm:^12.5.1":880 version: 12.5.1881 resolution: "@polkadot/x-ws@npm:12.5.1"882 dependencies:883 "@polkadot/x-global": 12.5.1884 tslib: ^2.6.2885 ws: ^8.14.1886 checksum: 839e82ab4bf013d17a356e2f10a42ba2ecf88f4e432985241e785416aeb6434c0e7c897b09aeeab23f5d27b27ef0dfe65eda85293c7a08f52d0774bb1b23704b887 languageName: node888 linkType: hard889890"@scure/base@npm:^1.1.3":891 version: 1.1.3892 resolution: "@scure/base@npm:1.1.3"893 checksum: 1606ab8a4db898cb3a1ada16c15437c3bce4e25854fadc8eb03ae93cbbbac1ed90655af4b0be3da37e12056fef11c0374499f69b9e658c9e5b7b3e06353c630c894 languageName: node895 linkType: hard896897"@sindresorhus/is@npm:^4.0.0, @sindresorhus/is@npm:^4.6.0":898 version: 4.6.0899 resolution: "@sindresorhus/is@npm:4.6.0"900 checksum: 83839f13da2c29d55c97abc3bc2c55b250d33a0447554997a85c539e058e57b8da092da396e252b11ec24a0279a0bed1f537fa26302209327060643e327f81d2901 languageName: node902 linkType: hard903904"@substrate/connect-extension-protocol@npm:^1.0.1":905 version: 1.0.1906 resolution: "@substrate/connect-extension-protocol@npm:1.0.1"907 checksum: 116dee587e81e832e14c25038bd849438c9493c6089aa6c1bf1760780d463880d44d362ed983d57ac3695368ac46f3c9df3dbaed92f36de89626c9735cecd1e4908 languageName: node909 linkType: hard910911"@substrate/connect@npm:0.7.33":912 version: 0.7.33913 resolution: "@substrate/connect@npm:0.7.33"914 dependencies:915 "@substrate/connect-extension-protocol": ^1.0.1916 smoldot: 2.0.1917 checksum: b4cfb86bef46450b6635e7dbf1eb133603c6ad8c955046e72fc67aaf36b1fe5f2aeeb521f4b1ea0a1eea9ac4c49b0f6417c24eb1320e8da13cc0d3efd7ee4cd7918 languageName: node919 linkType: hard920921"@substrate/ss58-registry@npm:^1.43.0":922 version: 1.43.0923 resolution: "@substrate/ss58-registry@npm:1.43.0"924 checksum: b2ecfd7365b946be2db7e2c5fa1f9136ff840bb2b8e6ffac0f48cd83f01a95c8a0fee1bb744255591bfc1f76766cd834182cde8cbd96e7849549d189c5812b3c925 languageName: node926 linkType: hard927928"@szmarczak/http-timer@npm:^4.0.5":929 version: 4.0.6930 resolution: "@szmarczak/http-timer@npm:4.0.6"931 dependencies:932 defer-to-connect: ^2.0.0933 checksum: c29df3bcec6fc3bdec2b17981d89d9c9fc9bd7d0c9bcfe92821dc533f4440bc890ccde79971838b4ceed1921d456973c4180d7175ee1d0023ad0562240a58d95934 languageName: node935 linkType: hard936937"@szmarczak/http-timer@npm:^5.0.1":938 version: 5.0.1939 resolution: "@szmarczak/http-timer@npm:5.0.1"940 dependencies:941 defer-to-connect: ^2.0.1942 checksum: fc9cb993e808806692e4a3337c90ece0ec00c89f4b67e3652a356b89730da98bc824273a6d67ca84d5f33cd85f317dcd5ce39d8cc0a2f060145a608a7cb8ce92943 languageName: node944 linkType: hard945946"@tsconfig/node10@npm:^1.0.7":947 version: 1.0.9948 resolution: "@tsconfig/node10@npm:1.0.9"949 checksum: a33ae4dc2a621c0678ac8ac4bceb8e512ae75dac65417a2ad9b022d9b5411e863c4c198b6ba9ef659e14b9fb609bbec680841a2e84c1172df7a5ffcf076539df950 languageName: node951 linkType: hard952953"@tsconfig/node12@npm:^1.0.7":954 version: 1.0.11955 resolution: "@tsconfig/node12@npm:1.0.11"956 checksum: 5ce29a41b13e7897a58b8e2df11269c5395999e588b9a467386f99d1d26f6c77d1af2719e407621412520ea30517d718d5192a32403b8dfcc163bf33e40a338a957 languageName: node958 linkType: hard959960"@tsconfig/node14@npm:^1.0.0":961 version: 1.0.3962 resolution: "@tsconfig/node14@npm:1.0.3"963 checksum: 19275fe80c4c8d0ad0abed6a96dbf00642e88b220b090418609c4376e1cef81bf16237bf170ad1b341452feddb8115d8dd2e5acdfdea1b27422071163dc9ba9d964 languageName: node965 linkType: hard966967"@tsconfig/node16@npm:^1.0.2":968 version: 1.0.4969 resolution: "@tsconfig/node16@npm:1.0.4"970 checksum: 202319785901f942a6e1e476b872d421baec20cf09f4b266a1854060efbf78cde16a4d256e8bc949d31e6cd9a90f1e8ef8fb06af96a65e98338a2b6b0de0a0ff971 languageName: node972 linkType: hard973974"@types/bn.js@npm:^5.1.0, @types/bn.js@npm:^5.1.1":975 version: 5.1.4976 resolution: "@types/bn.js@npm:5.1.4"977 dependencies:978 "@types/node": "*"979 checksum: 56f69334a38f41bb5f677100d55ea973de2e1b221b1bc4737a6216e52cc1350e9b447ca819c8619ee29656a7055b33a14562c18c7a6d5319e5b8134ee0216b32980 languageName: node981 linkType: hard982983"@types/cacheable-request@npm:^6.0.1, @types/cacheable-request@npm:^6.0.2":984 version: 6.0.3985 resolution: "@types/cacheable-request@npm:6.0.3"986 dependencies:987 "@types/http-cache-semantics": "*"988 "@types/keyv": ^3.1.4989 "@types/node": "*"990 "@types/responselike": ^1.0.0991 checksum: d9b26403fe65ce6b0cb3720b7030104c352bcb37e4fac2a7089a25a97de59c355fa08940658751f2f347a8512aa9d18fdb66ab3ade835975b2f454f2d5befbd9992 languageName: node993 linkType: hard994995"@types/chai-as-promised@npm:^7.1.7":996 version: 7.1.7997 resolution: "@types/chai-as-promised@npm:7.1.7"998 dependencies:999 "@types/chai": "*"1000 checksum: 59199afbd91289588648e263d7f32f7d72fa9c0075f3c17b1e760e10fdc1a310c2170a392b0d17d96cfff2c51daca72839eed6d80142f9230c9784b8e08ba6761001 languageName: node1002 linkType: hard10031004"@types/chai-like@npm:^1.1.2":1005 version: 1.1.21006 resolution: "@types/chai-like@npm:1.1.2"1007 dependencies:1008 "@types/chai": "*"1009 checksum: b8a333d273922d2036322df51720b82b136b0cca45404a0d6a9c3c60917c449154df5b0f22f5a6c14c3e14d2e946a5db5df8753fca96f830f812dfff028c764f1010 languageName: node1011 linkType: hard10121013"@types/chai-subset@npm:^1.3.4":1014 version: 1.3.41015 resolution: "@types/chai-subset@npm:1.3.4"1016 dependencies:1017 "@types/chai": "*"1018 checksum: c40035d29599bc72994dc52a6c1807b9240135811ad2b615c29d1378abf38990ec4d1189044c42de5b714106531401e8220fa35e4afe69b8cc26a5d7379bee6e1019 languageName: node1020 linkType: hard10211022"@types/chai@npm:*, @types/chai@npm:^4.3.9":1023 version: 4.3.91024 resolution: "@types/chai@npm:4.3.9"1025 checksum: 2300a2c7abd4cb590349927a759b3d0172211a69f363db06e585faf7874a47f125ef3b364cce4f6190e3668147587fc11164c791c9560cf9bce8478fb70196101026 languageName: node1027 linkType: hard10281029"@types/http-cache-semantics@npm:*":1030 version: 4.0.31031 resolution: "@types/http-cache-semantics@npm:4.0.3"1032 checksum: 8a672e545fd01ba3a9f16000639ac687bdbbc6bc37e534fbcf55ac9036a168c96f953c79e063d67e937d9fc0be41734d8af378f75bf1ecb7a24e4990014860531033 languageName: node1034 linkType: hard10351036"@types/json-schema@npm:^7.0.12":1037 version: 7.0.141038 resolution: "@types/json-schema@npm:7.0.14"1039 checksum: 4b3dd99616c7c808201c56f6c7f6552eb67b5c0c753ab3fa03a6cb549aae950da537e9558e53fa65fba23d1be624a1e4e8d20c15027efbe41e03ca56f2b04fb01040 languageName: node1041 linkType: hard10421043"@types/keyv@npm:^3.1.4":1044 version: 3.1.41045 resolution: "@types/keyv@npm:3.1.4"1046 dependencies:1047 "@types/node": "*"1048 checksum: e009a2bfb50e90ca9b7c6e8f648f8464067271fd99116f881073fa6fa76dc8d0133181dd65e6614d5fb1220d671d67b0124aef7d97dc02d7e342ab143a47779d1049 languageName: node1050 linkType: hard10511052"@types/mocha@npm:^10.0.3":1053 version: 10.0.31054 resolution: "@types/mocha@npm:10.0.3"1055 checksum: 52481d72c0f2eb6afcf9a43f851f81d78211880f765b5922a1aa322ed6d557bddc60786a3ae7b6c5e388e2f0cddc09d9ead3c9b80e66102eb41b58acae1e48941056 languageName: node1057 linkType: hard10581059"@types/node@npm:*, @types/node@npm:^20.8.10":1060 version: 20.8.101061 resolution: "@types/node@npm:20.8.10"1062 dependencies:1063 undici-types: ~5.26.41064 checksum: 7c61190e43e8074a1b571e52ff14c880bc67a0447f2fe5ed0e1a023eb8a23d5f815658edb98890f7578afe0f090433c4a635c7c87311762544e20dd78723e5151065 languageName: node1066 linkType: hard10671068"@types/node@npm:^12.12.6":1069 version: 12.20.551070 resolution: "@types/node@npm:12.20.55"1071 checksum: e4f86785f4092706e0d3b0edff8dca5a13b45627e4b36700acd8dfe6ad53db71928c8dee914d4276c7fd3b6ccd829aa919811c9eb708a2c8e4c6eb3701178c371072 languageName: node1073 linkType: hard10741075"@types/pbkdf2@npm:^3.0.0":1076 version: 3.1.11077 resolution: "@types/pbkdf2@npm:3.1.1"1078 dependencies:1079 "@types/node": "*"1080 checksum: 08387b815f87b16313f81b67ce3d353517ddc5baa1d4021e27ba2128f395c29025d814d17e39e6c610daebcd9c8769da9d02cf4387168580f1e9662296aa5a0e1081 languageName: node1082 linkType: hard10831084"@types/prettier@npm:^2.1.1":1085 version: 2.7.31086 resolution: "@types/prettier@npm:2.7.3"1087 checksum: 705384209cea6d1433ff6c187c80dcc0b95d99d5c5ce21a46a9a58060c527973506822e428789d842761e0280d25e3359300f017fbe77b9755bc772ab3dc2f831088 languageName: node1089 linkType: hard10901091"@types/responselike@npm:^1.0.0":1092 version: 1.0.21093 resolution: "@types/responselike@npm:1.0.2"1094 dependencies:1095 "@types/node": "*"1096 checksum: ff1767e947eb7d49849e4566040453efcd894888e85b398f7f8cb731552f303f26aceda573b680a142b77ec5fb6c79535d9c6d047d9f936c386dbf3863d2ae171097 languageName: node1098 linkType: hard10991100"@types/secp256k1@npm:^4.0.1":1101 version: 4.0.51102 resolution: "@types/secp256k1@npm:4.0.5"1103 dependencies:1104 "@types/node": "*"1105 checksum: c0c61da2545e9ebdc822b87f19fbafac83b5801c75d1cd1a437e717d5f04c6542bed5ec15afe1166bea65a425872ce8c90c822ab3580d28bf7406726a0d6ab3c1106 languageName: node1107 linkType: hard11081109"@types/semver@npm:^7.5.0":1110 version: 7.5.41111 resolution: "@types/semver@npm:7.5.4"1112 checksum: 120c0189f6fec5f2d12d0d71ac8a4cfa952dc17fa3d842e8afddb82bba8828a4052f8799c1653e2b47ae1977435f38e8985658fde971905ce5afb8e23ee97ecf1113 languageName: node1114 linkType: hard11151116"@typescript-eslint/eslint-plugin@npm:^6.10.0":1117 version: 6.10.01118 resolution: "@typescript-eslint/eslint-plugin@npm:6.10.0"1119 dependencies:1120 "@eslint-community/regexpp": ^4.5.11121 "@typescript-eslint/scope-manager": 6.10.01122 "@typescript-eslint/type-utils": 6.10.01123 "@typescript-eslint/utils": 6.10.01124 "@typescript-eslint/visitor-keys": 6.10.01125 debug: ^4.3.41126 graphemer: ^1.4.01127 ignore: ^5.2.41128 natural-compare: ^1.4.01129 semver: ^7.5.41130 ts-api-utils: ^1.0.11131 peerDependencies:1132 "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha1133 eslint: ^7.0.0 || ^8.0.01134 peerDependenciesMeta:1135 typescript:1136 optional: true1137 checksum: eaf1f66ae1915426dad8d229c8cb80d2b320572a30c3fbc57d560d40edc2d17d004101a2fcbe331bc458df19a00f8b705f2442ee02e028bb595f4e9f9152e99d1138 languageName: node1139 linkType: hard11401141"@typescript-eslint/parser@npm:^6.10.0":1142 version: 6.10.01143 resolution: "@typescript-eslint/parser@npm:6.10.0"1144 dependencies:1145 "@typescript-eslint/scope-manager": 6.10.01146 "@typescript-eslint/types": 6.10.01147 "@typescript-eslint/typescript-estree": 6.10.01148 "@typescript-eslint/visitor-keys": 6.10.01149 debug: ^4.3.41150 peerDependencies:1151 eslint: ^7.0.0 || ^8.0.01152 peerDependenciesMeta:1153 typescript:1154 optional: true1155 checksum: c4b140932d639b3f3eac892497aa700bcc9101ef268285020757dc9bee670d122de107e936320af99a5c06569e4eb93bccf87f14a9970ceab708c432e748423a1156 languageName: node1157 linkType: hard11581159"@typescript-eslint/scope-manager@npm:6.10.0":1160 version: 6.10.01161 resolution: "@typescript-eslint/scope-manager@npm:6.10.0"1162 dependencies:1163 "@typescript-eslint/types": 6.10.01164 "@typescript-eslint/visitor-keys": 6.10.01165 checksum: c9b9483082ae853f10b888cf04d4a14f666ac55e749bfdb7b7f726fc51127a6340b5e2f50d93f134a8854ddcc41f7b116b214753251a8b033d0d84c600439c541166 languageName: node1167 linkType: hard11681169"@typescript-eslint/type-utils@npm:6.10.0":1170 version: 6.10.01171 resolution: "@typescript-eslint/type-utils@npm:6.10.0"1172 dependencies:1173 "@typescript-eslint/typescript-estree": 6.10.01174 "@typescript-eslint/utils": 6.10.01175 debug: ^4.3.41176 ts-api-utils: ^1.0.11177 peerDependencies:1178 eslint: ^7.0.0 || ^8.0.01179 peerDependenciesMeta:1180 typescript:1181 optional: true1182 checksum: cfe9520cf0c0f50b115d2591acb2abf99ffe5789b3536268ca65b624c8498812d91f187e80c41bea7cf2cebad9c38f69ef27440f872a20fb53c59856d8f5df381183 languageName: node1184 linkType: hard11851186"@typescript-eslint/types@npm:6.10.0":1187 version: 6.10.01188 resolution: "@typescript-eslint/types@npm:6.10.0"1189 checksum: e63a9e05eb3d736d02a09131627d5cb89394bf0d9d6b46fb4b620be902d89d73554720be65acbc194787bff9ffcd518c9a6cf88fd63e418232b4181e8d8438df1190 languageName: node1191 linkType: hard11921193"@typescript-eslint/typescript-estree@npm:6.10.0":1194 version: 6.10.01195 resolution: "@typescript-eslint/typescript-estree@npm:6.10.0"1196 dependencies:1197 "@typescript-eslint/types": 6.10.01198 "@typescript-eslint/visitor-keys": 6.10.01199 debug: ^4.3.41200 globby: ^11.1.01201 is-glob: ^4.0.31202 semver: ^7.5.41203 ts-api-utils: ^1.0.11204 peerDependenciesMeta:1205 typescript:1206 optional: true1207 checksum: 15bd8d9239a557071d6b03e7aa854b769fcc2dbdff587ed94be7ee8060dabdb05bcae4251df22432f625f82087e7f6986e9aab04f7eea35af694d4edd76a21af1208 languageName: node1209 linkType: hard12101211"@typescript-eslint/utils@npm:6.10.0":1212 version: 6.10.01213 resolution: "@typescript-eslint/utils@npm:6.10.0"1214 dependencies:1215 "@eslint-community/eslint-utils": ^4.4.01216 "@types/json-schema": ^7.0.121217 "@types/semver": ^7.5.01218 "@typescript-eslint/scope-manager": 6.10.01219 "@typescript-eslint/types": 6.10.01220 "@typescript-eslint/typescript-estree": 6.10.01221 semver: ^7.5.41222 peerDependencies:1223 eslint: ^7.0.0 || ^8.0.01224 checksum: b6bd4d68623fb8d616ae63a88f2954258411a0cc113029fba801d1e74b4c0319fdfbcac0070527afe5cc38c012c8718e4faecd1603000924d7b89e8fefc3f24d1225 languageName: node1226 linkType: hard12271228"@typescript-eslint/visitor-keys@npm:6.10.0":1229 version: 6.10.01230 resolution: "@typescript-eslint/visitor-keys@npm:6.10.0"1231 dependencies:1232 "@typescript-eslint/types": 6.10.01233 eslint-visitor-keys: ^3.4.11234 checksum: 9640bfae41e6109ffba31e68b1720382de0538d021261e2fc9e514c83c703084393c0818ca77ed26b950273e45e593371120281e8d4bbd09cb8c2d46c9fe4f031235 languageName: node1236 linkType: hard12371238"@ungap/structured-clone@npm:^1.2.0":1239 version: 1.2.01240 resolution: "@ungap/structured-clone@npm:1.2.0"1241 checksum: 4f656b7b4672f2ce6e272f2427d8b0824ed11546a601d8d5412b9d7704e83db38a8d9f402ecdf2b9063fc164af842ad0ec4a55819f621ed7e7ea4d1efcc745241242 languageName: node1243 linkType: hard12441245"@unique-nft/evm-abi@workspace:*, @unique-nft/evm-abi@workspace:evm-abi":1246 version: 0.0.0-use.local1247 resolution: "@unique-nft/evm-abi@workspace:evm-abi"1248 languageName: unknown1249 linkType: soft12501251"@unique-nft/opal-testnet-types@workspace:*, @unique-nft/opal-testnet-types@workspace:types":1252 version: 0.0.0-use.local1253 resolution: "@unique-nft/opal-testnet-types@workspace:types"1254 dependencies:1255 "@polkadot/typegen": ^10.10.11256 languageName: unknown1257 linkType: soft12581259"@unique-nft/playgrounds@workspace:*, @unique-nft/playgrounds@workspace:playgrounds":1260 version: 0.0.0-use.local1261 resolution: "@unique-nft/playgrounds@workspace:playgrounds"1262 dependencies:1263 "@polkadot/api": 10.10.11264 "@polkadot/util": ^12.5.11265 "@polkadot/util-crypto": ^12.5.11266 languageName: unknown1267 linkType: soft12681269"@unique/scripts@workspace:scripts":1270 version: 0.0.0-use.local1271 resolution: "@unique/scripts@workspace:scripts"1272 languageName: unknown1273 linkType: soft12741275"@unique/test-utils@workspace:*, @unique/test-utils@workspace:test-utils":1276 version: 0.0.0-use.local1277 resolution: "@unique/test-utils@workspace:test-utils"1278 dependencies:1279 "@polkadot/api": 10.10.11280 "@polkadot/util": ^12.5.11281 "@polkadot/util-crypto": ^12.5.11282 "@unique-nft/opal-testnet-types": "workspace:*"1283 languageName: unknown1284 linkType: soft12851286"@unique/tests@workspace:tests":1287 version: 0.0.0-use.local1288 resolution: "@unique/tests@workspace:tests"1289 dependencies:1290 mocha: ^10.1.01291 languageName: unknown1292 linkType: soft12931294"abbrev@npm:^2.0.0":1295 version: 2.0.01296 resolution: "abbrev@npm:2.0.0"1297 checksum: 0e994ad2aa6575f94670d8a2149afe94465de9cedaaaac364e7fb43a40c3691c980ff74899f682f4ca58fa96b4cbd7421a015d3a6defe43a442117d7821a2f361298 languageName: node1299 linkType: hard13001301"abortcontroller-polyfill@npm:^1.7.3":1302 version: 1.7.51303 resolution: "abortcontroller-polyfill@npm:1.7.5"1304 checksum: daf4169f4228ae0e4f4dbcfa782e501b923667f2666b7c55bd3b7664e5d6b100e333a93371173985fdf21f65d7dfba15bdb2e6031bdc9e57e4ce0297147da3aa1305 languageName: node1306 linkType: hard13071308"accepts@npm:~1.3.8":1309 version: 1.3.81310 resolution: "accepts@npm:1.3.8"1311 dependencies:1312 mime-types: ~2.1.341313 negotiator: 0.6.31314 checksum: 50c43d32e7b50285ebe84b613ee4a3aa426715a7d131b65b786e2ead0fd76b6b60091b9916d3478a75f11f162628a2139991b6c03ab3f1d9ab7c86075dc8eab41315 languageName: node1316 linkType: hard13171318"acorn-jsx@npm:^5.3.2":1319 version: 5.3.21320 resolution: "acorn-jsx@npm:5.3.2"1321 peerDependencies:1322 acorn: ^6.0.0 || ^7.0.0 || ^8.0.01323 checksum: c3d3b2a89c9a056b205b69530a37b972b404ee46ec8e5b341666f9513d3163e2a4f214a71f4dfc7370f5a9c07472d2fd1c11c91c3f03d093e37637d95da989501324 languageName: node1325 linkType: hard13261327"acorn-walk@npm:^8.1.1":1328 version: 8.3.01329 resolution: "acorn-walk@npm:8.3.0"1330 checksum: 15ea56ab6529135be05e7d018f935ca80a572355dd3f6d3cd717e36df3346e0f635a93ae781b1c7942607693e2e5f3ef81af5c6fc697bbadcc377ebda7b7f5f61331 languageName: node1332 linkType: hard13331334"acorn@npm:^8.4.1, acorn@npm:^8.9.0":1335 version: 8.11.21336 resolution: "acorn@npm:8.11.2"1337 bin:1338 acorn: bin/acorn1339 checksum: 818450408684da89423e3daae24e4dc9b68692db8ab49ea4569c7c5abb7a3f23669438bf129cc81dfdada95e1c9b944ee1bfca2c57a05a4dc73834a612fbf6a71340 languageName: node1341 linkType: hard13421343"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0":1344 version: 7.1.01345 resolution: "agent-base@npm:7.1.0"1346 dependencies:1347 debug: ^4.3.41348 checksum: f7828f991470a0cc22cb579c86a18cbae83d8a3cbed39992ab34fc7217c4d126017f1c74d0ab66be87f71455318a8ea3e757d6a37881b8d0f2a2c6aa55e5418f1349 languageName: node1350 linkType: hard13511352"aggregate-error@npm:^3.0.0":1353 version: 3.1.01354 resolution: "aggregate-error@npm:3.1.0"1355 dependencies:1356 clean-stack: ^2.0.01357 indent-string: ^4.0.01358 checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b791359 languageName: node1360 linkType: hard13611362"ajv@npm:^6.12.3, ajv@npm:^6.12.4":1363 version: 6.12.61364 resolution: "ajv@npm:6.12.6"1365 dependencies:1366 fast-deep-equal: ^3.1.11367 fast-json-stable-stringify: ^2.0.01368 json-schema-traverse: ^0.4.11369 uri-js: ^4.2.21370 checksum: 874972efe5c4202ab0a68379481fbd3d1b5d0a7bd6d3cc21d40d3536ebff3352a2a1fabb632d4fd2cc7fe4cbdcd5ed6782084c9bbf7f32a1536d18f9da5007d41371 languageName: node1372 linkType: hard13731374"ansi-colors@npm:4.1.1":1375 version: 4.1.11376 resolution: "ansi-colors@npm:4.1.1"1377 checksum: 138d04a51076cb085da0a7e2d000c5c0bb09f6e772ed5c65c53cb118d37f6c5f1637506d7155fb5f330f0abcf6f12fa2e489ac3f8cdab9da393bf1bb4f9a32b01378 languageName: node1379 linkType: hard13801381"ansi-regex@npm:^5.0.1":1382 version: 5.0.11383 resolution: "ansi-regex@npm:5.0.1"1384 checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b1385 languageName: node1386 linkType: hard13871388"ansi-regex@npm:^6.0.1":1389 version: 6.0.11390 resolution: "ansi-regex@npm:6.0.1"1391 checksum: 1ff8b7667cded1de4fa2c9ae283e979fc87036864317da86a2e546725f96406746411d0d85e87a2d12fa5abd715d90006de7fa4fa0477c92321ad3b4c7d4e1691392 languageName: node1393 linkType: hard13941395"ansi-styles@npm:^3.2.1":1396 version: 3.2.11397 resolution: "ansi-styles@npm:3.2.1"1398 dependencies:1399 color-convert: ^1.9.01400 checksum: d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e03773956651401 languageName: node1402 linkType: hard14031404"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0":1405 version: 4.3.01406 resolution: "ansi-styles@npm:4.3.0"1407 dependencies:1408 color-convert: ^2.0.11409 checksum: 513b44c3b2105dd14cc42a19271e80f386466c4be574bccf60b627432f9198571ebf4ab1e4c3ba17347658f4ee1711c163d574248c0c1cdc2d5917a0ad582ec41410 languageName: node1411 linkType: hard14121413"ansi-styles@npm:^6.1.0":1414 version: 6.2.11415 resolution: "ansi-styles@npm:6.2.1"1416 checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d91417 languageName: node1418 linkType: hard14191420"anymatch@npm:~3.1.2":1421 version: 3.1.31422 resolution: "anymatch@npm:3.1.3"1423 dependencies:1424 normalize-path: ^3.0.01425 picomatch: ^2.0.41426 checksum: 3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc21427 languageName: node1428 linkType: hard14291430"arg@npm:^4.1.0":1431 version: 4.1.31432 resolution: "arg@npm:4.1.3"1433 checksum: 544af8dd3f60546d3e4aff084d451b96961d2267d668670199692f8d054f0415d86fc5497d0e641e91546f0aa920e7c29e5250e99fc89f5552a34b5d93b77f431434 languageName: node1435 linkType: hard14361437"argparse@npm:^2.0.1":1438 version: 2.0.11439 resolution: "argparse@npm:2.0.1"1440 checksum: 83644b56493e89a254bae05702abf3a1101b4fa4d0ca31df1c9985275a5a5bd47b3c27b7fa0b71098d41114d8ca000e6ed90cad764b306f8a503665e4d517ced1441 languageName: node1442 linkType: hard14431444"array-back@npm:^3.0.1, array-back@npm:^3.1.0":1445 version: 3.1.01446 resolution: "array-back@npm:3.1.0"1447 checksum: 7205004fcd0f9edd926db921af901b083094608d5b265738d0290092f9822f73accb468e677db74c7c94ef432d39e5ed75a7b1786701e182efb25bbba97342091448 languageName: node1449 linkType: hard14501451"array-back@npm:^4.0.1, array-back@npm:^4.0.2":1452 version: 4.0.21453 resolution: "array-back@npm:4.0.2"1454 checksum: f30603270771eeb54e5aad5f54604c62b3577a18b6db212a7272b2b6c32049121b49431f656654790ed1469411e45f387e7627c0de8fd0515995cc40df9b92941455 languageName: node1456 linkType: hard14571458"array-flatten@npm:1.1.1":1459 version: 1.1.11460 resolution: "array-flatten@npm:1.1.1"1461 checksum: a9925bf3512d9dce202112965de90c222cd59a4fbfce68a0951d25d965cf44642931f40aac72309c41f12df19afa010ecadceb07cfff9ccc1621e99d89ab5f3b1462 languageName: node1463 linkType: hard14641465"array-union@npm:^2.1.0":1466 version: 2.1.01467 resolution: "array-union@npm:2.1.0"1468 checksum: 5bee12395cba82da674931df6d0fea23c4aa4660cb3b338ced9f828782a65caa232573e6bf3968f23e0c5eb301764a382cef2f128b170a9dc59de0e36c39f98d1469 languageName: node1470 linkType: hard14711472"asn1@npm:~0.2.3":1473 version: 0.2.61474 resolution: "asn1@npm:0.2.6"1475 dependencies:1476 safer-buffer: ~2.1.01477 checksum: 39f2ae343b03c15ad4f238ba561e626602a3de8d94ae536c46a4a93e69578826305366dc09fbb9b56aec39b4982a463682f259c38e59f6fa380cd72cd61e493d1478 languageName: node1479 linkType: hard14801481"assert-plus@npm:1.0.0, assert-plus@npm:^1.0.0":1482 version: 1.0.01483 resolution: "assert-plus@npm:1.0.0"1484 checksum: 19b4340cb8f0e6a981c07225eacac0e9d52c2644c080198765d63398f0075f83bbc0c8e95474d54224e297555ad0d631c1dcd058adb1ddc2437b41a6b424ac641485 languageName: node1486 linkType: hard14871488"assertion-error@npm:^1.1.0":1489 version: 1.1.01490 resolution: "assertion-error@npm:1.1.0"1491 checksum: fd9429d3a3d4fd61782eb3962ae76b6d08aa7383123fca0596020013b3ebd6647891a85b05ce821c47d1471ed1271f00b0545cf6a4326cf2fc91efcc3b0fbecf1492 languageName: node1493 linkType: hard14941495"async-limiter@npm:~1.0.0":1496 version: 1.0.11497 resolution: "async-limiter@npm:1.0.1"1498 checksum: 2b849695b465d93ad44c116220dee29a5aeb63adac16c1088983c339b0de57d76e82533e8e364a93a9f997f28bbfc6a92948cefc120652bd07f3b59f8d75cf2b1499 languageName: node1500 linkType: hard15011502"asynckit@npm:^0.4.0":1503 version: 0.4.01504 resolution: "asynckit@npm:0.4.0"1505 checksum: 7b78c451df768adba04e2d02e63e2d0bf3b07adcd6e42b4cf665cb7ce899bedd344c69a1dcbce355b5f972d597b25aaa1c1742b52cffd9caccb22f348114f6be1506 languageName: node1507 linkType: hard15081509"available-typed-arrays@npm:^1.0.5":1510 version: 1.0.51511 resolution: "available-typed-arrays@npm:1.0.5"1512 checksum: 20eb47b3cefd7db027b9bbb993c658abd36d4edd3fe1060e83699a03ee275b0c9b216cc076ff3f2db29073225fb70e7613987af14269ac1fe2a19803ccc97f1a1513 languageName: node1514 linkType: hard15151516"aws-sign2@npm:~0.7.0":1517 version: 0.7.01518 resolution: "aws-sign2@npm:0.7.0"1519 checksum: b148b0bb0778098ad8cf7e5fc619768bcb51236707ca1d3e5b49e41b171166d8be9fdc2ea2ae43d7decf02989d0aaa3a9c4caa6f320af95d684de9b548a715251520 languageName: node1521 linkType: hard15221523"aws4@npm:^1.8.0":1524 version: 1.12.01525 resolution: "aws4@npm:1.12.0"1526 checksum: 68f79708ac7c335992730bf638286a3ee0a645cf12575d557860100767c500c08b30e24726b9f03265d74116417f628af78509e1333575e9f8d52a80edfe8cbc1527 languageName: node1528 linkType: hard15291530"balanced-match@npm:^1.0.0":1531 version: 1.0.21532 resolution: "balanced-match@npm:1.0.2"1533 checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d651534 languageName: node1535 linkType: hard15361537"base-x@npm:^3.0.2, base-x@npm:^3.0.8":1538 version: 3.0.91539 resolution: "base-x@npm:3.0.9"1540 dependencies:1541 safe-buffer: ^5.0.11542 checksum: 957101d6fd09e1903e846fd8f69fd7e5e3e50254383e61ab667c725866bec54e5ece5ba49ce385128ae48f9ec93a26567d1d5ebb91f4d56ef4a9cc0d5a5481e81543 languageName: node1544 linkType: hard15451546"base64-js@npm:^1.3.1":1547 version: 1.5.11548 resolution: "base64-js@npm:1.5.1"1549 checksum: 669632eb3745404c2f822a18fc3a0122d2f9a7a13f7fb8b5823ee19d1d2ff9ee5b52c53367176ea4ad093c332fd5ab4bd0ebae5a8e27917a4105a4cfc86b10051550 languageName: node1551 linkType: hard15521553"bcrypt-pbkdf@npm:^1.0.0":1554 version: 1.0.21555 resolution: "bcrypt-pbkdf@npm:1.0.2"1556 dependencies:1557 tweetnacl: ^0.14.31558 checksum: 4edfc9fe7d07019609ccf797a2af28351736e9d012c8402a07120c4453a3b789a15f2ee1530dc49eee8f7eb9379331a8dd4b3766042b9e502f74a68e7f6622911559 languageName: node1560 linkType: hard15611562"bignumber.js@npm:^9.0.0":1563 version: 9.1.21564 resolution: "bignumber.js@npm:9.1.2"1565 checksum: 582c03af77ec9cb0ebd682a373ee6c66475db94a4325f92299621d544aa4bd45cb45fd60001610e94aef8ae98a0905fa538241d9638d4422d57abbeeac6fadaf1566 languageName: node1567 linkType: hard15681569"binary-extensions@npm:^2.0.0":1570 version: 2.2.01571 resolution: "binary-extensions@npm:2.2.0"1572 checksum: ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f81573 languageName: node1574 linkType: hard15751576"blakejs@npm:^1.1.0":1577 version: 1.2.11578 resolution: "blakejs@npm:1.2.1"1579 checksum: d699ba116cfa21d0b01d12014a03e484dd76d483133e6dc9eb415aa70a119f08beb3bcefb8c71840106a00b542cba77383f8be60cd1f0d4589cb8afb922eefbe1580 languageName: node1581 linkType: hard15821583"bluebird@npm:^3.5.0":1584 version: 3.7.21585 resolution: "bluebird@npm:3.7.2"1586 checksum: 869417503c722e7dc54ca46715f70e15f4d9c602a423a02c825570862d12935be59ed9c7ba34a9b31f186c017c23cac6b54e35446f8353059c101da73eac22ef1587 languageName: node1588 linkType: hard15891590"bn.js@npm:4.11.6":1591 version: 4.11.61592 resolution: "bn.js@npm:4.11.6"1593 checksum: db23047bf06fdf9cf74401c8e76bca9f55313c81df382247d2c753868b368562e69171716b81b7038ada8860af18346fd4bcd1cf9d4963f923fe8e54e61cb58a1594 languageName: node1595 linkType: hard15961597"bn.js@npm:^4.11.6, bn.js@npm:^4.11.9":1598 version: 4.12.01599 resolution: "bn.js@npm:4.12.0"1600 checksum: 39afb4f15f4ea537b55eaf1446c896af28ac948fdcf47171961475724d1bb65118cca49fa6e3d67706e4790955ec0e74de584e45c8f1ef89f46c812bee5b5a121601 languageName: node1602 linkType: hard16031604"bn.js@npm:^5.1.2, bn.js@npm:^5.2.0, bn.js@npm:^5.2.1":1605 version: 5.2.11606 resolution: "bn.js@npm:5.2.1"1607 checksum: 3dd8c8d38055fedfa95c1d5fc3c99f8dd547b36287b37768db0abab3c239711f88ff58d18d155dd8ad902b0b0cee973747b7ae20ea12a09473272b0201c9edd31608 languageName: node1609 linkType: hard16101611"body-parser@npm:1.20.1":1612 version: 1.20.11613 resolution: "body-parser@npm:1.20.1"1614 dependencies:1615 bytes: 3.1.21616 content-type: ~1.0.41617 debug: 2.6.91618 depd: 2.0.01619 destroy: 1.2.01620 http-errors: 2.0.01621 iconv-lite: 0.4.241622 on-finished: 2.4.11623 qs: 6.11.01624 raw-body: 2.5.11625 type-is: ~1.6.181626 unpipe: 1.0.01627 checksum: f1050dbac3bede6a78f0b87947a8d548ce43f91ccc718a50dd774f3c81f2d8b04693e52acf62659fad23101827dd318da1fb1363444ff9a8482b886a3e4a52661628 languageName: node1629 linkType: hard16301631"body-parser@npm:^1.16.0":1632 version: 1.20.21633 resolution: "body-parser@npm:1.20.2"1634 dependencies:1635 bytes: 3.1.21636 content-type: ~1.0.51637 debug: 2.6.91638 depd: 2.0.01639 destroy: 1.2.01640 http-errors: 2.0.01641 iconv-lite: 0.4.241642 on-finished: 2.4.11643 qs: 6.11.01644 raw-body: 2.5.21645 type-is: ~1.6.181646 unpipe: 1.0.01647 checksum: 14d37ec638ab5c93f6099ecaed7f28f890d222c650c69306872e00b9efa081ff6c596cd9afb9930656aae4d6c4e1c17537bea12bb73c87a217cb3cfea88967371648 languageName: node1649 linkType: hard16501651"brace-expansion@npm:^1.1.7":1652 version: 1.1.111653 resolution: "brace-expansion@npm:1.1.11"1654 dependencies:1655 balanced-match: ^1.0.01656 concat-map: 0.0.11657 checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc071658 languageName: node1659 linkType: hard16601661"brace-expansion@npm:^2.0.1":1662 version: 2.0.11663 resolution: "brace-expansion@npm:2.0.1"1664 dependencies:1665 balanced-match: ^1.0.01666 checksum: a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d11667 languageName: node1668 linkType: hard16691670"braces@npm:^3.0.2, braces@npm:~3.0.2":1671 version: 3.0.21672 resolution: "braces@npm:3.0.2"1673 dependencies:1674 fill-range: ^7.0.11675 checksum: e2a8e769a863f3d4ee887b5fe21f63193a891c68b612ddb4b68d82d1b5f3ff9073af066c343e9867a393fe4c2555dcb33e89b937195feb9c1613d259edfcd4591676 languageName: node1677 linkType: hard16781679"brorand@npm:^1.1.0":1680 version: 1.1.01681 resolution: "brorand@npm:1.1.0"1682 checksum: 8a05c9f3c4b46572dec6ef71012b1946db6cae8c7bb60ccd4b7dd5a84655db49fe043ecc6272e7ef1f69dc53d6730b9e2a3a03a8310509a3d797a618cbee52be1683 languageName: node1684 linkType: hard16851686"browser-stdout@npm:1.3.1":1687 version: 1.3.11688 resolution: "browser-stdout@npm:1.3.1"1689 checksum: b717b19b25952dd6af483e368f9bcd6b14b87740c3d226c2977a65e84666ffd67000bddea7d911f111a9b6ddc822b234de42d52ab6507bce4119a4cc003ef7b31690 languageName: node1691 linkType: hard16921693"browserify-aes@npm:^1.2.0":1694 version: 1.2.01695 resolution: "browserify-aes@npm:1.2.0"1696 dependencies:1697 buffer-xor: ^1.0.31698 cipher-base: ^1.0.01699 create-hash: ^1.1.01700 evp_bytestokey: ^1.0.31701 inherits: ^2.0.11702 safe-buffer: ^5.0.11703 checksum: 4a17c3eb55a2aa61c934c286f34921933086bf6d67f02d4adb09fcc6f2fc93977b47d9d884c25619144fccd47b3b3a399e1ad8b3ff5a346be47270114bcf71041704 languageName: node1705 linkType: hard17061707"bs58@npm:^4.0.0":1708 version: 4.0.11709 resolution: "bs58@npm:4.0.1"1710 dependencies:1711 base-x: ^3.0.21712 checksum: b3c5365bb9e0c561e1a82f1a2d809a1a692059fae016be233a6127ad2f50a6b986467c3a50669ce4c18929dcccb297c5909314dd347a25a68c21b68eb3e95ac21713 languageName: node1714 linkType: hard17151716"bs58check@npm:^2.1.2":1717 version: 2.1.21718 resolution: "bs58check@npm:2.1.2"1719 dependencies:1720 bs58: ^4.0.01721 create-hash: ^1.1.01722 safe-buffer: ^5.1.21723 checksum: 43bdf08a5dd04581b78f040bc4169480e17008da482ffe2a6507327bbc4fc5c28de0501f7faf22901cfe57fbca79cbb202ca529003fedb4cb8dccd265b38e54d1724 languageName: node1725 linkType: hard17261727"buffer-to-arraybuffer@npm:^0.0.5":1728 version: 0.0.51729 resolution: "buffer-to-arraybuffer@npm:0.0.5"1730 checksum: b2e6493a6679e03d0e0e146b4258b9a6d92649d528d8fc4a74423b77f0d4f9398c9f965f3378d1683a91738054bae2761196cfe233f41ab3695126cb58cb25f91731 languageName: node1732 linkType: hard17331734"buffer-xor@npm:^1.0.3":1735 version: 1.0.31736 resolution: "buffer-xor@npm:1.0.3"1737 checksum: 10c520df29d62fa6e785e2800e586a20fc4f6dfad84bcdbd12e1e8a83856de1cb75c7ebd7abe6d036bbfab738a6cf18a3ae9c8e5a2e2eb3167ca7399ce65373a1738 languageName: node1739 linkType: hard17401741"buffer@npm:^5.0.5, buffer@npm:^5.5.0, buffer@npm:^5.6.0":1742 version: 5.7.11743 resolution: "buffer@npm:5.7.1"1744 dependencies:1745 base64-js: ^1.3.11746 ieee754: ^1.1.131747 checksum: e2cf8429e1c4c7b8cbd30834ac09bd61da46ce35f5c22a78e6c2f04497d6d25541b16881e30a019c6fd3154150650ccee27a308eff3e26229d788bbdeb08ab841748 languageName: node1749 linkType: hard17501751"bufferutil@npm:^4.0.1":1752 version: 4.0.81753 resolution: "bufferutil@npm:4.0.8"1754 dependencies:1755 node-gyp: latest1756 node-gyp-build: ^4.3.01757 checksum: 7e9a46f1867dca72fda350966eb468eca77f4d623407b0650913fadf73d5750d883147d6e5e21c56f9d3b0bdc35d5474e80a600b9f31ec781315b4d2469ef0871758 languageName: node1759 linkType: hard17601761"bytes@npm:3.1.2":1762 version: 3.1.21763 resolution: "bytes@npm:3.1.2"1764 checksum: e4bcd3948d289c5127591fbedf10c0b639ccbf00243504e4e127374a15c3bc8eed0d28d4aaab08ff6f1cf2abc0cce6ba3085ed32f4f90e82a5683ce0014e1b6e1765 languageName: node1766 linkType: hard17671768"cacache@npm:^18.0.0":1769 version: 18.0.01770 resolution: "cacache@npm:18.0.0"1771 dependencies:1772 "@npmcli/fs": ^3.1.01773 fs-minipass: ^3.0.01774 glob: ^10.2.21775 lru-cache: ^10.0.11776 minipass: ^7.0.31777 minipass-collect: ^1.0.21778 minipass-flush: ^1.0.51779 minipass-pipeline: ^1.2.41780 p-map: ^4.0.01781 ssri: ^10.0.01782 tar: ^6.1.111783 unique-filename: ^3.0.01784 checksum: 2cd6bf15551abd4165acb3a4d1ef0593b3aa2fd6853ae16b5bb62199c2faecf27d36555a9545c0e07dd03347ec052e782923bdcece724a24611986aafb53e1521785 languageName: node1786 linkType: hard17871788"cacheable-lookup@npm:^5.0.3":1789 version: 5.0.41790 resolution: "cacheable-lookup@npm:5.0.4"1791 checksum: 763e02cf9196bc9afccacd8c418d942fc2677f22261969a4c2c2e760fa44a2351a81557bd908291c3921fe9beb10b976ba8fa50c5ca837c5a0dd945f16468f2d1792 languageName: node1793 linkType: hard17941795"cacheable-lookup@npm:^6.0.4":1796 version: 6.1.01797 resolution: "cacheable-lookup@npm:6.1.0"1798 checksum: 4e37afe897219b1035335b0765106a2c970ffa930497b43cac5000b860f3b17f48d004187279fae97e2e4cbf6a3693709b6d64af65279c7d6c8453321d36d1181799 languageName: node1800 linkType: hard18011802"cacheable-request@npm:^7.0.2":1803 version: 7.0.41804 resolution: "cacheable-request@npm:7.0.4"1805 dependencies:1806 clone-response: ^1.0.21807 get-stream: ^5.1.01808 http-cache-semantics: ^4.0.01809 keyv: ^4.0.01810 lowercase-keys: ^2.0.01811 normalize-url: ^6.0.11812 responselike: ^2.0.01813 checksum: 0de9df773fd4e7dd9bd118959878f8f2163867e2e1ab3575ffbecbe6e75e80513dd0c68ba30005e5e5a7b377cc6162bbc00ab1db019bb4e9cb3c2f3f7a6f1ee41814 languageName: node1815 linkType: hard18161817"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.4":1818 version: 1.0.51819 resolution: "call-bind@npm:1.0.5"1820 dependencies:1821 function-bind: ^1.1.21822 get-intrinsic: ^1.2.11823 set-function-length: ^1.1.11824 checksum: 449e83ecbd4ba48e7eaac5af26fea3b50f8f6072202c2dd7c5a6e7a6308f2421abe5e13a3bbd55221087f76320c5e09f25a8fdad1bab2b77c68ae74d92234ea51825 languageName: node1826 linkType: hard18271828"callsites@npm:^3.0.0":1829 version: 3.1.01830 resolution: "callsites@npm:3.1.0"1831 checksum: 072d17b6abb459c2ba96598918b55868af677154bec7e73d222ef95a8fdb9bbf7dae96a8421085cdad8cd190d86653b5b6dc55a4484f2e5b2e27d5e0c3fc15b31832 languageName: node1833 linkType: hard18341835"camelcase@npm:^6.0.0":1836 version: 6.3.01837 resolution: "camelcase@npm:6.3.0"1838 checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d1839 languageName: node1840 linkType: hard18411842"caseless@npm:~0.12.0":1843 version: 0.12.01844 resolution: "caseless@npm:0.12.0"1845 checksum: b43bd4c440aa1e8ee6baefee8063b4850fd0d7b378f6aabc796c9ec8cb26d27fb30b46885350777d9bd079c5256c0e1329ad0dc7c2817e0bb466810ebb3537511846 languageName: node1847 linkType: hard18481849"chai-as-promised@npm:^7.1.1":1850 version: 7.1.11851 resolution: "chai-as-promised@npm:7.1.1"1852 dependencies:1853 check-error: ^1.0.21854 peerDependencies:1855 chai: ">= 2.1.2 < 5"1856 checksum: 7262868a5b51a12af4e432838ddf97a893109266a505808e1868ba63a12de7ee1166e9d43b5c501a190c377c1b11ecb9ff8e093c89f097ad96c397e8ec0f8d6a1857 languageName: node1858 linkType: hard18591860"chai-like@npm:^1.1.1":1861 version: 1.1.11862 resolution: "chai-like@npm:1.1.1"1863 peerDependencies:1864 chai: 2 - 41865 checksum: c0b1162568b7a0188a099309a501c37b883ca29ea85a44ec01a1f5225665d811e15ef986f6641b001356aa30d8d051604a483a2fc1a17c4f9cc9a55d5b01e1c91866 languageName: node1867 linkType: hard18681869"chai-subset@npm:^1.6.0":1870 version: 1.6.01871 resolution: "chai-subset@npm:1.6.0"1872 checksum: c85a64b42dcb031a987c0a0fa85f21a7873a01d1e519f29b72311aade30a2626be9b48effad765fda560904c491e89b4cb4a60565e63057963207a6bcb60d2851873 languageName: node1874 linkType: hard18751876"chai@npm:^4.3.10":1877 version: 4.3.101878 resolution: "chai@npm:4.3.10"1879 dependencies:1880 assertion-error: ^1.1.01881 check-error: ^1.0.31882 deep-eql: ^4.1.31883 get-func-name: ^2.0.21884 loupe: ^2.3.61885 pathval: ^1.1.11886 type-detect: ^4.0.81887 checksum: 536668c60a0d985a0fbd94418028e388d243a925d7c5e858c7443e334753511614a3b6a124bac9ca077dfc4c37acc367d62f8c294960f440749536dc181dfc6d1888 languageName: node1889 linkType: hard18901891"chalk@npm:^2.4.2":1892 version: 2.4.21893 resolution: "chalk@npm:2.4.2"1894 dependencies:1895 ansi-styles: ^3.2.11896 escape-string-regexp: ^1.0.51897 supports-color: ^5.3.01898 checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c21899 languageName: node1900 linkType: hard19011902"chalk@npm:^4.0.0, chalk@npm:^4.1.0":1903 version: 4.1.21904 resolution: "chalk@npm:4.1.2"1905 dependencies:1906 ansi-styles: ^4.1.01907 supports-color: ^7.1.01908 checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc1909 languageName: node1910 linkType: hard19111912"check-error@npm:^1.0.2, check-error@npm:^1.0.3":1913 version: 1.0.31914 resolution: "check-error@npm:1.0.3"1915 dependencies:1916 get-func-name: ^2.0.21917 checksum: e2131025cf059b21080f4813e55b3c480419256914601750b0fee3bd9b2b8315b531e551ef12560419b8b6d92a3636511322752b1ce905703239e7cc451b63991918 languageName: node1919 linkType: hard19201921"chokidar@npm:3.5.3":1922 version: 3.5.31923 resolution: "chokidar@npm:3.5.3"1924 dependencies:1925 anymatch: ~3.1.21926 braces: ~3.0.21927 fsevents: ~2.3.21928 glob-parent: ~5.1.21929 is-binary-path: ~2.1.01930 is-glob: ~4.0.11931 normalize-path: ~3.0.01932 readdirp: ~3.6.01933 dependenciesMeta:1934 fsevents:1935 optional: true1936 checksum: b49fcde40176ba007ff361b198a2d35df60d9bb2a5aab228279eb810feae9294a6b4649ab15981304447afe1e6ffbf4788ad5db77235dc770ab777c6e771980c1937 languageName: node1938 linkType: hard19391940"chownr@npm:^1.1.4":1941 version: 1.1.41942 resolution: "chownr@npm:1.1.4"1943 checksum: 115648f8eb38bac5e41c3857f3e663f9c39ed6480d1349977c4d96c95a47266fcacc5a5aabf3cb6c481e22d72f41992827db47301851766c4fd77ac21a4f081d1944 languageName: node1945 linkType: hard19461947"chownr@npm:^2.0.0":1948 version: 2.0.01949 resolution: "chownr@npm:2.0.0"1950 checksum: c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f1951 languageName: node1952 linkType: hard19531954"cids@npm:^0.7.1":1955 version: 0.7.51956 resolution: "cids@npm:0.7.5"1957 dependencies:1958 buffer: ^5.5.01959 class-is: ^1.1.01960 multibase: ~0.6.01961 multicodec: ^1.0.01962 multihashes: ~0.4.151963 checksum: 54aa031bef76b08a2c934237696a4af2cfc8afb5d2727cb39ab69f6ac142ef312b9a0c6070dc2b4be0a43076d8961339d8bf85287773c647b3d1d25ce203f3251964 languageName: node1965 linkType: hard19661967"cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3":1968 version: 1.0.41969 resolution: "cipher-base@npm:1.0.4"1970 dependencies:1971 inherits: ^2.0.11972 safe-buffer: ^5.0.11973 checksum: 47d3568dbc17431a339bad1fe7dff83ac0891be8206911ace3d3b818fc695f376df809bea406e759cdea07fff4b454fa25f1013e648851bec790c1d75763032e1974 languageName: node1975 linkType: hard19761977"class-is@npm:^1.1.0":1978 version: 1.1.01979 resolution: "class-is@npm:1.1.0"1980 checksum: 49024de3b264fc501a38dd59d8668f1a2b4973fa6fcef6b83d80fe6fe99a2000a8fbea5b50d4607169c65014843c9f6b41a4f8473df806c1b4787b4d475218801981 languageName: node1982 linkType: hard19831984"clean-stack@npm:^2.0.0":1985 version: 2.2.01986 resolution: "clean-stack@npm:2.2.0"1987 checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb681988 languageName: node1989 linkType: hard19901991"cliui@npm:^7.0.2":1992 version: 7.0.41993 resolution: "cliui@npm:7.0.4"1994 dependencies:1995 string-width: ^4.2.01996 strip-ansi: ^6.0.01997 wrap-ansi: ^7.0.01998 checksum: ce2e8f578a4813806788ac399b9e866297740eecd4ad1823c27fd344d78b22c5f8597d548adbcc46f0573e43e21e751f39446c5a5e804a12aace402b7a315d7f1999 languageName: node2000 linkType: hard20012002"cliui@npm:^8.0.1":2003 version: 8.0.12004 resolution: "cliui@npm:8.0.1"2005 dependencies:2006 string-width: ^4.2.02007 strip-ansi: ^6.0.12008 wrap-ansi: ^7.0.02009 checksum: 79648b3b0045f2e285b76fb2e24e207c6db44323581e421c3acbd0e86454cba1b37aea976ab50195a49e7384b871e6dfb2247ad7dec53c02454ac6497394cb562010 languageName: node2011 linkType: hard20122013"clone-response@npm:^1.0.2":2014 version: 1.0.32015 resolution: "clone-response@npm:1.0.3"2016 dependencies:2017 mimic-response: ^1.0.02018 checksum: 4e671cac39b11c60aa8ba0a450657194a5d6504df51bca3fac5b3bd0145c4f8e8464898f87c8406b83232e3bc5cca555f51c1f9c8ac023969ebfbf7f6bdabb2e2019 languageName: node2020 linkType: hard20212022"color-convert@npm:^1.9.0":2023 version: 1.9.32024 resolution: "color-convert@npm:1.9.3"2025 dependencies:2026 color-name: 1.1.32027 checksum: fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a2032028 languageName: node2029 linkType: hard20302031"color-convert@npm:^2.0.1":2032 version: 2.0.12033 resolution: "color-convert@npm:2.0.1"2034 dependencies:2035 color-name: ~1.1.42036 checksum: 79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db3362037 languageName: node2038 linkType: hard20392040"color-name@npm:1.1.3":2041 version: 1.1.32042 resolution: "color-name@npm:1.1.3"2043 checksum: 09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d2044 languageName: node2045 linkType: hard20462047"color-name@npm:~1.1.4":2048 version: 1.1.42049 resolution: "color-name@npm:1.1.4"2050 checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f6102051 languageName: node2052 linkType: hard20532054"combined-stream@npm:^1.0.6, combined-stream@npm:~1.0.6":2055 version: 1.0.82056 resolution: "combined-stream@npm:1.0.8"2057 dependencies:2058 delayed-stream: ~1.0.02059 checksum: 49fa4aeb4916567e33ea81d088f6584749fc90c7abec76fd516bf1c5aa5c79f3584b5ba3de6b86d26ddd64bae5329c4c7479343250cfe71c75bb366eae53bb7c2060 languageName: node2061 linkType: hard20622063"command-exists@npm:^1.2.8":2064 version: 1.2.92065 resolution: "command-exists@npm:1.2.9"2066 checksum: 729ae3d88a2058c93c58840f30341b7f82688a573019535d198b57a4d8cb0135ced0ad7f52b591e5b28a90feb2c675080ce916e56254a0f7c15cb2395277cac32067 languageName: node2068 linkType: hard20692070"command-line-args@npm:^5.1.1":2071 version: 5.2.12072 resolution: "command-line-args@npm:5.2.1"2073 dependencies:2074 array-back: ^3.1.02075 find-replace: ^3.0.02076 lodash.camelcase: ^4.3.02077 typical: ^4.0.02078 checksum: e759519087be3cf2e86af8b9a97d3058b4910cd11ee852495be881a067b72891f6a32718fb685ee6d41531ab76b2b7bfb6602f79f882cd4b7587ff1e827982c72079 languageName: node2080 linkType: hard20812082"command-line-usage@npm:^6.1.0":2083 version: 6.1.32084 resolution: "command-line-usage@npm:6.1.3"2085 dependencies:2086 array-back: ^4.0.22087 chalk: ^2.4.22088 table-layout: ^1.0.22089 typical: ^5.2.02090 checksum: 8261d4e5536eb0bcddee0ec5e89c05bb2abd18e5760785c8078ede5020bc1c612cbe28eb6586f5ed4a3660689748e5aaad4a72f21566f4ef39393694e2fa1a0b2091 languageName: node2092 linkType: hard20932094"commander@npm:^8.1.0":2095 version: 8.3.02096 resolution: "commander@npm:8.3.0"2097 checksum: 0f82321821fc27b83bd409510bb9deeebcfa799ff0bf5d102128b500b7af22872c0c92cb6a0ebc5a4cf19c6b550fba9cedfa7329d18c6442a625f851377bacf02098 languageName: node2099 linkType: hard21002101"concat-map@npm:0.0.1":2102 version: 0.0.12103 resolution: "concat-map@npm:0.0.1"2104 checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af2105 languageName: node2106 linkType: hard21072108"content-disposition@npm:0.5.4":2109 version: 0.5.42110 resolution: "content-disposition@npm:0.5.4"2111 dependencies:2112 safe-buffer: 5.2.12113 checksum: afb9d545e296a5171d7574fcad634b2fdf698875f4006a9dd04a3e1333880c5c0c98d47b560d01216fb6505a54a2ba6a843ee3a02ec86d7e911e8315255f56c32114 languageName: node2115 linkType: hard21162117"content-hash@npm:^2.5.2":2118 version: 2.5.22119 resolution: "content-hash@npm:2.5.2"2120 dependencies:2121 cids: ^0.7.12122 multicodec: ^0.5.52123 multihashes: ^0.4.152124 checksum: 31869e4d137b59d02003df0c0f0ad080744d878ed12a57f7d20b2cfd526d59d6317e9f52fa6e49cba59df7f9ab49ceb96d6a832685b85bae442e0c906f7193be2125 languageName: node2126 linkType: hard21272128"content-type@npm:~1.0.4, content-type@npm:~1.0.5":2129 version: 1.0.52130 resolution: "content-type@npm:1.0.5"2131 checksum: 566271e0a251642254cde0f845f9dd4f9856e52d988f4eb0d0dcffbb7a1f8ec98de7a5215fc628f3bce30fe2fb6fd2bc064b562d721658c59b544e2d34ea27662132 languageName: node2133 linkType: hard21342135"cookie-signature@npm:1.0.6":2136 version: 1.0.62137 resolution: "cookie-signature@npm:1.0.6"2138 checksum: f4e1b0a98a27a0e6e66fd7ea4e4e9d8e038f624058371bf4499cfcd8f3980be9a121486995202ba3fca74fbed93a407d6d54d43a43f96fd28d0bd7a06761591a2139 languageName: node2140 linkType: hard21412142"cookie@npm:0.5.0":2143 version: 0.5.02144 resolution: "cookie@npm:0.5.0"2145 checksum: 1f4bd2ca5765f8c9689a7e8954183f5332139eb72b6ff783d8947032ec1fdf43109852c178e21a953a30c0dd42257828185be01b49d1eb1a67fd054ca588a1802146 languageName: node2147 linkType: hard21482149"core-util-is@npm:1.0.2":2150 version: 1.0.22151 resolution: "core-util-is@npm:1.0.2"2152 checksum: 7a4c925b497a2c91421e25bf76d6d8190f0b2359a9200dbeed136e63b2931d6294d3b1893eda378883ed363cd950f44a12a401384c609839ea616befb7927dab2153 languageName: node2154 linkType: hard21552156"cors@npm:^2.8.1":2157 version: 2.8.52158 resolution: "cors@npm:2.8.5"2159 dependencies:2160 object-assign: ^42161 vary: ^12162 checksum: ced838404ccd184f61ab4fdc5847035b681c90db7ac17e428f3d81d69e2989d2b680cc254da0e2554f5ed4f8a341820a1ce3d1c16b499f6e2f47a1b9b07b50062163 languageName: node2164 linkType: hard21652166"crc-32@npm:^1.2.0":2167 version: 1.2.22168 resolution: "crc-32@npm:1.2.2"2169 bin:2170 crc32: bin/crc32.njs2171 checksum: ad2d0ad0cbd465b75dcaeeff0600f8195b686816ab5f3ba4c6e052a07f728c3e70df2e3ca9fd3d4484dc4ba70586e161ca5a2334ec8bf5a41bf022a6103ff2432172 languageName: node2173 linkType: hard21742175"create-hash@npm:^1.1.0, create-hash@npm:^1.1.2, create-hash@npm:^1.2.0":2176 version: 1.2.02177 resolution: "create-hash@npm:1.2.0"2178 dependencies:2179 cipher-base: ^1.0.12180 inherits: ^2.0.12181 md5.js: ^1.3.42182 ripemd160: ^2.0.12183 sha.js: ^2.4.02184 checksum: 02a6ae3bb9cd4afee3fabd846c1d8426a0e6b495560a977ba46120c473cb283be6aa1cace76b5f927cf4e499c6146fb798253e48e83d522feba807d6b722eaa92185 languageName: node2186 linkType: hard21872188"create-hmac@npm:^1.1.4, create-hmac@npm:^1.1.7":2189 version: 1.1.72190 resolution: "create-hmac@npm:1.1.7"2191 dependencies:2192 cipher-base: ^1.0.32193 create-hash: ^1.1.02194 inherits: ^2.0.12195 ripemd160: ^2.0.02196 safe-buffer: ^5.0.12197 sha.js: ^2.4.82198 checksum: ba12bb2257b585a0396108c72830e85f882ab659c3320c83584b1037f8ab72415095167ced80dc4ce8e446a8ecc4b2acf36d87befe0707d73b26cf9dc77440ed2199 languageName: node2200 linkType: hard22012202"create-require@npm:^1.1.0":2203 version: 1.1.12204 resolution: "create-require@npm:1.1.1"2205 checksum: a9a1503d4390d8b59ad86f4607de7870b39cad43d929813599a23714831e81c520bddf61bcdd1f8e30f05fd3a2b71ae8538e946eb2786dc65c2bbc520f692eff2206 languageName: node2207 linkType: hard22082209"cross-fetch@npm:^3.1.4":2210 version: 3.1.82211 resolution: "cross-fetch@npm:3.1.8"2212 dependencies:2213 node-fetch: ^2.6.122214 checksum: 78f993fa099eaaa041122ab037fe9503ecbbcb9daef234d1d2e0b9230a983f64d645d088c464e21a247b825a08dc444a6e7064adfa93536d3a9454b4745b36322215 languageName: node2216 linkType: hard22172218"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2":2219 version: 7.0.32220 resolution: "cross-spawn@npm:7.0.3"2221 dependencies:2222 path-key: ^3.1.02223 shebang-command: ^2.0.02224 which: ^2.0.12225 checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f522226 languageName: node2227 linkType: hard22282229"csv-writer@npm:^1.6.0":2230 version: 1.6.02231 resolution: "csv-writer@npm:1.6.0"2232 checksum: 2e62cb46f00b674f0710eb90586000601f3a467aabe529464dcb402d453a1322a716d7522ef3282dd6551f1059305c7dd3db49def1201caaf340597dcf7b4c7e2233 languageName: node2234 linkType: hard22352236"d@npm:1, d@npm:^1.0.1":2237 version: 1.0.12238 resolution: "d@npm:1.0.1"2239 dependencies:2240 es5-ext: ^0.10.502241 type: ^1.0.12242 checksum: 49ca0639c7b822db670de93d4fbce44b4aa072cd848c76292c9978a8cd0fff1028763020ff4b0f147bd77bfe29b4c7f82e0f71ade76b2a06100543cdfd948d192243 languageName: node2244 linkType: hard22452246"dashdash@npm:^1.12.0":2247 version: 1.14.12248 resolution: "dashdash@npm:1.14.1"2249 dependencies:2250 assert-plus: ^1.0.02251 checksum: 3634c249570f7f34e3d34f866c93f866c5b417f0dd616275decae08147dcdf8fccfaa5947380ccfb0473998ea3a8057c0b4cd90c875740ee685d0624b29835982252 languageName: node2253 linkType: hard22542255"data-uri-to-buffer@npm:^4.0.0":2256 version: 4.0.12257 resolution: "data-uri-to-buffer@npm:4.0.1"2258 checksum: 0d0790b67ffec5302f204c2ccca4494f70b4e2d940fea3d36b09f0bb2b8539c2e86690429eb1f1dc4bcc9e4df0644193073e63d9ee48ac9fce79ec1506e4aa4c2259 languageName: node2260 linkType: hard22612262"debug@npm:2.6.9, debug@npm:^2.2.0":2263 version: 2.6.92264 resolution: "debug@npm:2.6.9"2265 dependencies:2266 ms: 2.0.02267 checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe62268 languageName: node2269 linkType: hard22702271"debug@npm:4, debug@npm:4.3.4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4":2272 version: 4.3.42273 resolution: "debug@npm:4.3.4"2274 dependencies:2275 ms: 2.1.22276 peerDependenciesMeta:2277 supports-color:2278 optional: true2279 checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a7082280 languageName: node2281 linkType: hard22822283"decamelize@npm:^4.0.0":2284 version: 4.0.02285 resolution: "decamelize@npm:4.0.0"2286 checksum: b7d09b82652c39eead4d6678bb578e3bebd848add894b76d0f6b395bc45b2d692fb88d977e7cfb93c4ed6c119b05a1347cef261174916c2e75c0a8ca57da18092287 languageName: node2288 linkType: hard22892290"decode-uri-component@npm:^0.2.1":2291 version: 0.2.22292 resolution: "decode-uri-component@npm:0.2.2"2293 checksum: 95476a7d28f267292ce745eac3524a9079058bbb35767b76e3ee87d42e34cd0275d2eb19d9d08c3e167f97556e8a2872747f5e65cbebcac8b0c98d83e285f1392294 languageName: node2295 linkType: hard22962297"decompress-response@npm:^3.3.0":2298 version: 3.3.02299 resolution: "decompress-response@npm:3.3.0"2300 dependencies:2301 mimic-response: ^1.0.02302 checksum: 952552ac3bd7de2fc18015086b09468645c9638d98a551305e485230ada278c039c91116e946d07894b39ee53c0f0d5b6473f25a224029344354513b412d73802303 languageName: node2304 linkType: hard23052306"decompress-response@npm:^6.0.0":2307 version: 6.0.02308 resolution: "decompress-response@npm:6.0.0"2309 dependencies:2310 mimic-response: ^3.1.02311 checksum: d377cf47e02d805e283866c3f50d3d21578b779731e8c5072d6ce8c13cc31493db1c2f6784da9d1d5250822120cefa44f1deab112d5981015f2e17444b7638122312 languageName: node2313 linkType: hard23142315"deep-eql@npm:^4.1.3":2316 version: 4.1.32317 resolution: "deep-eql@npm:4.1.3"2318 dependencies:2319 type-detect: ^4.0.02320 checksum: 7f6d30cb41c713973dc07eaadded848b2ab0b835e518a88b91bea72f34e08c4c71d167a722a6f302d3a6108f05afd8e6d7650689a84d5d29ec7fe6220420397f2321 languageName: node2322 linkType: hard23232324"deep-extend@npm:~0.6.0":2325 version: 0.6.02326 resolution: "deep-extend@npm:0.6.0"2327 checksum: 7be7e5a8d468d6b10e6a67c3de828f55001b6eb515d014f7aeb9066ce36bd5717161eb47d6a0f7bed8a9083935b465bc163ee2581c8b128d29bf61092fdf57a72328 languageName: node2329 linkType: hard23302331"deep-is@npm:^0.1.3":2332 version: 0.1.42333 resolution: "deep-is@npm:0.1.4"2334 checksum: edb65dd0d7d1b9c40b2f50219aef30e116cedd6fc79290e740972c132c09106d2e80aa0bc8826673dd5a00222d4179c84b36a790eef63a4c4bca75a37ef908042335 languageName: node2336 linkType: hard23372338"defer-to-connect@npm:^2.0.0, defer-to-connect@npm:^2.0.1":2339 version: 2.0.12340 resolution: "defer-to-connect@npm:2.0.1"2341 checksum: 8a9b50d2f25446c0bfefb55a48e90afd58f85b21bcf78e9207cd7b804354f6409032a1705c2491686e202e64fc05f147aa5aa45f9aa82627563f045937f5791b2342 languageName: node2343 linkType: hard23442345"define-data-property@npm:^1.1.1":2346 version: 1.1.12347 resolution: "define-data-property@npm:1.1.1"2348 dependencies:2349 get-intrinsic: ^1.2.12350 gopd: ^1.0.12351 has-property-descriptors: ^1.0.02352 checksum: a29855ad3f0630ea82e3c5012c812efa6ca3078d5c2aa8df06b5f597c1cde6f7254692df41945851d903e05a1668607b6d34e778f402b9ff9ffb38111f1a3f0d2353 languageName: node2354 linkType: hard23552356"delayed-stream@npm:~1.0.0":2357 version: 1.0.02358 resolution: "delayed-stream@npm:1.0.0"2359 checksum: 46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a00202360 languageName: node2361 linkType: hard23622363"depd@npm:2.0.0":2364 version: 2.0.02365 resolution: "depd@npm:2.0.0"2366 checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a2367 languageName: node2368 linkType: hard23692370"destroy@npm:1.2.0":2371 version: 1.2.02372 resolution: "destroy@npm:1.2.0"2373 checksum: 0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e382374 languageName: node2375 linkType: hard23762377"diff@npm:5.0.0":2378 version: 5.0.02379 resolution: "diff@npm:5.0.0"2380 checksum: f19fe29284b633afdb2725c2a8bb7d25761ea54d321d8e67987ac851c5294be4afeab532bd84531e02583a3fe7f4014aa314a3eda84f5590e7a9e6b371ef3b462381 languageName: node2382 linkType: hard23832384"diff@npm:^4.0.1":2385 version: 4.0.22386 resolution: "diff@npm:4.0.2"2387 checksum: f2c09b0ce4e6b301c221addd83bf3f454c0bc00caa3dd837cf6c127d6edf7223aa2bbe3b688feea110b7f262adbfc845b757c44c8a9f8c0c5b15d8fa9ce9d20d2388 languageName: node2389 linkType: hard23902391"dir-glob@npm:^3.0.1":2392 version: 3.0.12393 resolution: "dir-glob@npm:3.0.1"2394 dependencies:2395 path-type: ^4.0.02396 checksum: fa05e18324510d7283f55862f3161c6759a3f2f8dbce491a2fc14c8324c498286c54282c1f0e933cb930da8419b30679389499b919122952a4f8592362ef46152397 languageName: node2398 linkType: hard23992400"doctrine@npm:^3.0.0":2401 version: 3.0.02402 resolution: "doctrine@npm:3.0.0"2403 dependencies:2404 esutils: ^2.0.22405 checksum: fd7673ca77fe26cd5cba38d816bc72d641f500f1f9b25b83e8ce28827fe2da7ad583a8da26ab6af85f834138cf8dae9f69b0cd6ab925f52ddab1754db44d99ce2406 languageName: node2407 linkType: hard24082409"dom-walk@npm:^0.1.0":2410 version: 0.1.22411 resolution: "dom-walk@npm:0.1.2"2412 checksum: 19eb0ce9c6de39d5e231530685248545d9cd2bd97b2cb3486e0bfc0f2a393a9addddfd5557463a932b52fdfcf68ad2a619020cd2c74a5fe46fbecaa8e80872f32413 languageName: node2414 linkType: hard24152416"eastasianwidth@npm:^0.2.0":2417 version: 0.2.02418 resolution: "eastasianwidth@npm:0.2.0"2419 checksum: 7d00d7cd8e49b9afa762a813faac332dee781932d6f2c848dc348939c4253f1d4564341b7af1d041853bc3f32c2ef141b58e0a4d9862c17a7f08f68df1e0f1ed2420 languageName: node2421 linkType: hard24222423"ecc-jsbn@npm:~0.1.1":2424 version: 0.1.22425 resolution: "ecc-jsbn@npm:0.1.2"2426 dependencies:2427 jsbn: ~0.1.02428 safer-buffer: ^2.1.02429 checksum: 22fef4b6203e5f31d425f5b711eb389e4c6c2723402e389af394f8411b76a488fa414d309d866e2b577ce3e8462d344205545c88a8143cc21752a5172818888a2430 languageName: node2431 linkType: hard24322433"ee-first@npm:1.1.1":2434 version: 1.1.12435 resolution: "ee-first@npm:1.1.1"2436 checksum: 1b4cac778d64ce3b582a7e26b218afe07e207a0f9bfe13cc7395a6d307849cfe361e65033c3251e00c27dd060cab43014c2d6b2647676135e18b77d2d05b3f4f2437 languageName: node2438 linkType: hard24392440"elliptic@npm:6.5.4, elliptic@npm:^6.4.0, elliptic@npm:^6.5.4":2441 version: 6.5.42442 resolution: "elliptic@npm:6.5.4"2443 dependencies:2444 bn.js: ^4.11.92445 brorand: ^1.1.02446 hash.js: ^1.0.02447 hmac-drbg: ^1.0.12448 inherits: ^2.0.42449 minimalistic-assert: ^1.0.12450 minimalistic-crypto-utils: ^1.0.12451 checksum: d56d21fd04e97869f7ffcc92e18903b9f67f2d4637a23c860492fbbff5a3155fd9ca0184ce0c865dd6eb2487d234ce9551335c021c376cd2d3b7cb749c7d10f42452 languageName: node2453 linkType: hard24542455"emoji-regex@npm:^8.0.0":2456 version: 8.0.02457 resolution: "emoji-regex@npm:8.0.0"2458 checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f1922459 languageName: node2460 linkType: hard24612462"emoji-regex@npm:^9.2.2":2463 version: 9.2.22464 resolution: "emoji-regex@npm:9.2.2"2465 checksum: 8487182da74aabd810ac6d6f1994111dfc0e331b01271ae01ec1eb0ad7b5ecc2bbbbd2f053c05cb55a1ac30449527d819bbfbf0e3de1023db308cbcb47f866012466 languageName: node2467 linkType: hard24682469"encodeurl@npm:~1.0.2":2470 version: 1.0.22471 resolution: "encodeurl@npm:1.0.2"2472 checksum: e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c2473 languageName: node2474 linkType: hard24752476"encoding@npm:^0.1.13":2477 version: 0.1.132478 resolution: "encoding@npm:0.1.13"2479 dependencies:2480 iconv-lite: ^0.6.22481 checksum: bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f2482 languageName: node2483 linkType: hard24842485"end-of-stream@npm:^1.1.0":2486 version: 1.4.42487 resolution: "end-of-stream@npm:1.4.4"2488 dependencies:2489 once: ^1.4.02490 checksum: 530a5a5a1e517e962854a31693dbb5c0b2fc40b46dad2a56a2deec656ca040631124f4795823acc68238147805f8b021abbe221f4afed5ef3c8e8efc2024908b2491 languageName: node2492 linkType: hard24932494"env-paths@npm:^2.2.0":2495 version: 2.2.12496 resolution: "env-paths@npm:2.2.1"2497 checksum: 65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e2498 languageName: node2499 linkType: hard25002501"err-code@npm:^2.0.2":2502 version: 2.0.32503 resolution: "err-code@npm:2.0.3"2504 checksum: 8b7b1be20d2de12d2255c0bc2ca638b7af5171142693299416e6a9339bd7d88fc8d7707d913d78e0993176005405a236b066b45666b27b797252c771156ace542505 languageName: node2506 linkType: hard25072508"es5-ext@npm:^0.10.35, es5-ext@npm:^0.10.50":2509 version: 0.10.622510 resolution: "es5-ext@npm:0.10.62"2511 dependencies:2512 es6-iterator: ^2.0.32513 es6-symbol: ^3.1.32514 next-tick: ^1.1.02515 checksum: 25f42f6068cfc6e393cf670bc5bba249132c5f5ec2dd0ed6e200e6274aca2fed8e9aec8a31c76031744c78ca283c57f0b41c7e737804c6328c7b8d3fbcba79832516 languageName: node2517 linkType: hard25182519"es6-iterator@npm:^2.0.3":2520 version: 2.0.32521 resolution: "es6-iterator@npm:2.0.3"2522 dependencies:2523 d: 12524 es5-ext: ^0.10.352525 es6-symbol: ^3.1.12526 checksum: 6e48b1c2d962c21dee604b3d9f0bc3889f11ed5a8b33689155a2065d20e3107e2a69cc63a71bd125aeee3a589182f8bbcb5c8a05b6a8f38fa4205671b6d096972527 languageName: node2528 linkType: hard25292530"es6-promise@npm:^4.2.8":2531 version: 4.2.82532 resolution: "es6-promise@npm:4.2.8"2533 checksum: 95614a88873611cb9165a85d36afa7268af5c03a378b35ca7bda9508e1d4f1f6f19a788d4bc755b3fd37c8ebba40782018e02034564ff24c9d6fa37e959ad57d2534 languageName: node2535 linkType: hard25362537"es6-symbol@npm:^3.1.1, es6-symbol@npm:^3.1.3":2538 version: 3.1.32539 resolution: "es6-symbol@npm:3.1.3"2540 dependencies:2541 d: ^1.0.12542 ext: ^1.1.22543 checksum: cd49722c2a70f011eb02143ef1c8c70658d2660dead6641e160b94619f408b9cf66425515787ffe338affdf0285ad54f4eae30ea5bd510e33f8659ec53bcaa702544 languageName: node2545 linkType: hard25462547"escalade@npm:^3.1.1":2548 version: 3.1.12549 resolution: "escalade@npm:3.1.1"2550 checksum: a3e2a99f07acb74b3ad4989c48ca0c3140f69f923e56d0cba0526240ee470b91010f9d39001f2a4a313841d237ede70a729e92125191ba5d21e74b106800b1332551 languageName: node2552 linkType: hard25532554"escape-html@npm:~1.0.3":2555 version: 1.0.32556 resolution: "escape-html@npm:1.0.3"2557 checksum: 6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb242558 languageName: node2559 linkType: hard25602561"escape-string-regexp@npm:4.0.0, escape-string-regexp@npm:^4.0.0":2562 version: 4.0.02563 resolution: "escape-string-regexp@npm:4.0.0"2564 checksum: 98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc52565 languageName: node2566 linkType: hard25672568"escape-string-regexp@npm:^1.0.5":2569 version: 1.0.52570 resolution: "escape-string-regexp@npm:1.0.5"2571 checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b4102572 languageName: node2573 linkType: hard25742575"eslint-plugin-mocha@npm:^10.2.0":2576 version: 10.2.02577 resolution: "eslint-plugin-mocha@npm:10.2.0"2578 dependencies:2579 eslint-utils: ^3.0.02580 rambda: ^7.4.02581 peerDependencies:2582 eslint: ">=7.0.0"2583 checksum: d284812141ea18b9dcd1f173477e364bda2b86a621cd2a1c13636065255d32498df33b5d9a6fa1d64b187bd86819a7707ae8b0895228a9f545f12ed153fac1a22584 languageName: node2585 linkType: hard25862587"eslint-scope@npm:^7.2.2":2588 version: 7.2.22589 resolution: "eslint-scope@npm:7.2.2"2590 dependencies:2591 esrecurse: ^4.3.02592 estraverse: ^5.2.02593 checksum: ec97dbf5fb04b94e8f4c5a91a7f0a6dd3c55e46bfc7bbcd0e3138c3a76977570e02ed89a1810c778dcd72072ff0e9621ba1379b4babe53921d71e2e4486fda3e2594 languageName: node2595 linkType: hard25962597"eslint-utils@npm:^3.0.0":2598 version: 3.0.02599 resolution: "eslint-utils@npm:3.0.0"2600 dependencies:2601 eslint-visitor-keys: ^2.0.02602 peerDependencies:2603 eslint: ">=5"2604 checksum: 0668fe02f5adab2e5a367eee5089f4c39033af20499df88fe4e6aba2015c20720404d8c3d6349b6f716b08fdf91b9da4e5d5481f265049278099c4c836ccb6192605 languageName: node2606 linkType: hard26072608"eslint-visitor-keys@npm:^2.0.0":2609 version: 2.1.02610 resolution: "eslint-visitor-keys@npm:2.1.0"2611 checksum: e3081d7dd2611a35f0388bbdc2f5da60b3a3c5b8b6e928daffff7391146b434d691577aa95064c8b7faad0b8a680266bcda0a42439c18c717b80e6718d7e267d2612 languageName: node2613 linkType: hard26142615"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3":2616 version: 3.4.32617 resolution: "eslint-visitor-keys@npm:3.4.3"2618 checksum: 36e9ef87fca698b6fd7ca5ca35d7b2b6eeaaf106572e2f7fd31c12d3bfdaccdb587bba6d3621067e5aece31c8c3a348b93922ab8f7b2cbc6aaab5e1d89040c602619 languageName: node2620 linkType: hard26212622"eslint@npm:^8.53.0":2623 version: 8.53.02624 resolution: "eslint@npm:8.53.0"2625 dependencies:2626 "@eslint-community/eslint-utils": ^4.2.02627 "@eslint-community/regexpp": ^4.6.12628 "@eslint/eslintrc": ^2.1.32629 "@eslint/js": 8.53.02630 "@humanwhocodes/config-array": ^0.11.132631 "@humanwhocodes/module-importer": ^1.0.12632 "@nodelib/fs.walk": ^1.2.82633 "@ungap/structured-clone": ^1.2.02634 ajv: ^6.12.42635 chalk: ^4.0.02636 cross-spawn: ^7.0.22637 debug: ^4.3.22638 doctrine: ^3.0.02639 escape-string-regexp: ^4.0.02640 eslint-scope: ^7.2.22641 eslint-visitor-keys: ^3.4.32642 espree: ^9.6.12643 esquery: ^1.4.22644 esutils: ^2.0.22645 fast-deep-equal: ^3.1.32646 file-entry-cache: ^6.0.12647 find-up: ^5.0.02648 glob-parent: ^6.0.22649 globals: ^13.19.02650 graphemer: ^1.4.02651 ignore: ^5.2.02652 imurmurhash: ^0.1.42653 is-glob: ^4.0.02654 is-path-inside: ^3.0.32655 js-yaml: ^4.1.02656 json-stable-stringify-without-jsonify: ^1.0.12657 levn: ^0.4.12658 lodash.merge: ^4.6.22659 minimatch: ^3.1.22660 natural-compare: ^1.4.02661 optionator: ^0.9.32662 strip-ansi: ^6.0.12663 text-table: ^0.2.02664 bin:2665 eslint: bin/eslint.js2666 checksum: 2da808655c7aa4b33f8970ba30d96b453c3071cc4d6cd60d367163430677e32ff186b65270816b662d29139283138bff81f28dddeb2e73265495245a316ed02c2667 languageName: node2668 linkType: hard26692670"espree@npm:^9.6.0, espree@npm:^9.6.1":2671 version: 9.6.12672 resolution: "espree@npm:9.6.1"2673 dependencies:2674 acorn: ^8.9.02675 acorn-jsx: ^5.3.22676 eslint-visitor-keys: ^3.4.12677 checksum: eb8c149c7a2a77b3f33a5af80c10875c3abd65450f60b8af6db1bfcfa8f101e21c1e56a561c6dc13b848e18148d43469e7cd208506238554fb5395a9ea5a1ab92678 languageName: node2679 linkType: hard26802681"esquery@npm:^1.4.2":2682 version: 1.5.02683 resolution: "esquery@npm:1.5.0"2684 dependencies:2685 estraverse: ^5.1.02686 checksum: aefb0d2596c230118656cd4ec7532d447333a410a48834d80ea648b1e7b5c9bc9ed8b5e33a89cb04e487b60d622f44cf5713bf4abed7c97343edefdc84a359002687 languageName: node2688 linkType: hard26892690"esrecurse@npm:^4.3.0":2691 version: 4.3.02692 resolution: "esrecurse@npm:4.3.0"2693 dependencies:2694 estraverse: ^5.2.02695 checksum: ebc17b1a33c51cef46fdc28b958994b1dc43cd2e86237515cbc3b4e5d2be6a811b2315d0a1a4d9d340b6d2308b15322f5c8291059521cc5f4802f65e7ec328372696 languageName: node2697 linkType: hard26982699"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0":2700 version: 5.3.02701 resolution: "estraverse@npm:5.3.0"2702 checksum: 072780882dc8416ad144f8fe199628d2b3e7bbc9989d9ed43795d2c90309a2047e6bc5979d7e2322a341163d22cfad9e21f4110597fe487519697389497e4e2b2703 languageName: node2704 linkType: hard27052706"esutils@npm:^2.0.2":2707 version: 2.0.32708 resolution: "esutils@npm:2.0.3"2709 checksum: 22b5b08f74737379a840b8ed2036a5fb35826c709ab000683b092d9054e5c2a82c27818f12604bfc2a9a76b90b6834ef081edbc1c7ae30d1627012e067c6ec872710 languageName: node2711 linkType: hard27122713"etag@npm:~1.8.1":2714 version: 1.8.12715 resolution: "etag@npm:1.8.1"2716 checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff2717 languageName: node2718 linkType: hard27192720"eth-ens-namehash@npm:2.0.8":2721 version: 2.0.82722 resolution: "eth-ens-namehash@npm:2.0.8"2723 dependencies:2724 idna-uts46-hx: ^2.3.12725 js-sha3: ^0.5.72726 checksum: 40ce4aeedaa4e7eb4485c8d8857457ecc46a4652396981d21b7e3a5f922d5beff63c71cb4b283c935293e530eba50b329d9248be3c433949c6bc40c850c202a32727 languageName: node2728 linkType: hard27292730"eth-lib@npm:0.2.8":2731 version: 0.2.82732 resolution: "eth-lib@npm:0.2.8"2733 dependencies:2734 bn.js: ^4.11.62735 elliptic: ^6.4.02736 xhr-request-promise: ^0.1.22737 checksum: be7efb0b08a78e20d12d2892363ecbbc557a367573ac82fc26a549a77a1b13c7747e6eadbb88026634828fcf9278884b555035787b575b1cab5e6958faad0fad2738 languageName: node2739 linkType: hard27402741"eth-lib@npm:^0.1.26":2742 version: 0.1.292743 resolution: "eth-lib@npm:0.1.29"2744 dependencies:2745 bn.js: ^4.11.62746 elliptic: ^6.4.02747 nano-json-stream-parser: ^0.1.22748 servify: ^0.1.122749 ws: ^3.0.02750 xhr-request-promise: ^0.1.22751 checksum: d1494fc0af372d46d1c9e7506cfbfa81b9073d98081cf4cbe518932f88bee40cf46a764590f1f8aba03d4a534fa2b1cd794fa2a4f235f656d82b8ab185b5cb9d2752 languageName: node2753 linkType: hard27542755"ethereum-bloom-filters@npm:^1.0.6":2756 version: 1.0.102757 resolution: "ethereum-bloom-filters@npm:1.0.10"2758 dependencies:2759 js-sha3: ^0.8.02760 checksum: 4019cc6f9274ae271a52959194a72f6e9b013366f168f922dc3b349319faf7426bf1010125ee0676b4f75714fe4a440edd4e7e62342c121a046409f4cd4c0af92761 languageName: node2762 linkType: hard27632764"ethereum-cryptography@npm:^0.1.3":2765 version: 0.1.32766 resolution: "ethereum-cryptography@npm:0.1.3"2767 dependencies:2768 "@types/pbkdf2": ^3.0.02769 "@types/secp256k1": ^4.0.12770 blakejs: ^1.1.02771 browserify-aes: ^1.2.02772 bs58check: ^2.1.22773 create-hash: ^1.2.02774 create-hmac: ^1.1.72775 hash.js: ^1.1.72776 keccak: ^3.0.02777 pbkdf2: ^3.0.172778 randombytes: ^2.1.02779 safe-buffer: ^5.1.22780 scrypt-js: ^3.0.02781 secp256k1: ^4.0.12782 setimmediate: ^1.0.52783 checksum: 54bae7a4a96bd81398cdc35c91cfcc74339f71a95ed1b5b694663782e69e8e3afd21357de3b8bac9ff4877fd6f043601e200a7ad9133d94be6fd7d898ee0a4492784 languageName: node2785 linkType: hard27862787"ethereumjs-util@npm:^7.1.0, ethereumjs-util@npm:^7.1.1, ethereumjs-util@npm:^7.1.2, ethereumjs-util@npm:^7.1.5":2788 version: 7.1.52789 resolution: "ethereumjs-util@npm:7.1.5"2790 dependencies:2791 "@types/bn.js": ^5.1.02792 bn.js: ^5.1.22793 create-hash: ^1.1.22794 ethereum-cryptography: ^0.1.32795 rlp: ^2.2.42796 checksum: 27a3c79d6e06b2df34b80d478ce465b371c8458b58f5afc14d91c8564c13363ad336e6e83f57eb0bd719fde94d10ee5697ceef78b5aa932087150c5287b286d12797 languageName: node2798 linkType: hard27992800"ethjs-unit@npm:0.1.6":2801 version: 0.1.62802 resolution: "ethjs-unit@npm:0.1.6"2803 dependencies:2804 bn.js: 4.11.62805 number-to-bn: 1.7.02806 checksum: df6b4752ff7461a59a20219f4b1684c631ea601241c39660e3f6c6bd63c950189723841c22b3c6c0ebeb3c9fc99e0e803e3c613101206132603705fcbcf4def52807 languageName: node2808 linkType: hard28092810"eventemitter3@npm:4.0.4":2811 version: 4.0.42812 resolution: "eventemitter3@npm:4.0.4"2813 checksum: 7afb1cd851d19898bc99cc55ca894fe18cb1f8a07b0758652830a09bd6f36082879a25345be6219b81d74764140688b1a8fa75bcd1073d96b9a6661e444bc2ea2814 languageName: node2815 linkType: hard28162817"eventemitter3@npm:^5.0.1":2818 version: 5.0.12819 resolution: "eventemitter3@npm:5.0.1"2820 checksum: 543d6c858ab699303c3c32e0f0f47fc64d360bf73c3daf0ac0b5079710e340d6fe9f15487f94e66c629f5f82cd1a8678d692f3dbb6f6fcd1190e1b97fcad36f82821 languageName: node2822 linkType: hard28232824"evp_bytestokey@npm:^1.0.3":2825 version: 1.0.32826 resolution: "evp_bytestokey@npm:1.0.3"2827 dependencies:2828 md5.js: ^1.3.42829 node-gyp: latest2830 safe-buffer: ^5.1.12831 checksum: ad4e1577f1a6b721c7800dcc7c733fe01f6c310732bb5bf2240245c2a5b45a38518b91d8be2c610611623160b9d1c0e91f1ce96d639f8b53e8894625cf20fa452832 languageName: node2833 linkType: hard28342835"exponential-backoff@npm:^3.1.1":2836 version: 3.1.12837 resolution: "exponential-backoff@npm:3.1.1"2838 checksum: 3d21519a4f8207c99f7457287291316306255a328770d320b401114ec8481986e4e467e854cb9914dd965e0a1ca810a23ccb559c642c88f4c7f55c55778a9b482839 languageName: node2840 linkType: hard28412842"express@npm:^4.14.0":2843 version: 4.18.22844 resolution: "express@npm:4.18.2"2845 dependencies:2846 accepts: ~1.3.82847 array-flatten: 1.1.12848 body-parser: 1.20.12849 content-disposition: 0.5.42850 content-type: ~1.0.42851 cookie: 0.5.02852 cookie-signature: 1.0.62853 debug: 2.6.92854 depd: 2.0.02855 encodeurl: ~1.0.22856 escape-html: ~1.0.32857 etag: ~1.8.12858 finalhandler: 1.2.02859 fresh: 0.5.22860 http-errors: 2.0.02861 merge-descriptors: 1.0.12862 methods: ~1.1.22863 on-finished: 2.4.12864 parseurl: ~1.3.32865 path-to-regexp: 0.1.72866 proxy-addr: ~2.0.72867 qs: 6.11.02868 range-parser: ~1.2.12869 safe-buffer: 5.2.12870 send: 0.18.02871 serve-static: 1.15.02872 setprototypeof: 1.2.02873 statuses: 2.0.12874 type-is: ~1.6.182875 utils-merge: 1.0.12876 vary: ~1.1.22877 checksum: 3c4b9b076879442f6b968fe53d85d9f1eeacbb4f4c41e5f16cc36d77ce39a2b0d81b3f250514982110d815b2f7173f5561367f9110fcc541f9371948e8c8b0372878 languageName: node2879 linkType: hard28802881"ext@npm:^1.1.2":2882 version: 1.7.02883 resolution: "ext@npm:1.7.0"2884 dependencies:2885 type: ^2.7.22886 checksum: ef481f9ef45434d8c867cfd09d0393b60945b7c8a1798bedc4514cb35aac342ccb8d8ecb66a513e6a2b4ec1e294a338e3124c49b29736f8e7c735721af352c312887 languageName: node2888 linkType: hard28892890"extend@npm:~3.0.2":2891 version: 3.0.22892 resolution: "extend@npm:3.0.2"2893 checksum: a50a8309ca65ea5d426382ff09f33586527882cf532931cb08ca786ea3146c0553310bda688710ff61d7668eba9f96b923fe1420cdf56a2c3eaf30fcab87b5152894 languageName: node2895 linkType: hard28962897"extsprintf@npm:1.3.0":2898 version: 1.3.02899 resolution: "extsprintf@npm:1.3.0"2900 checksum: cee7a4a1e34cffeeec18559109de92c27517e5641991ec6bab849aa64e3081022903dd53084f2080d0d2530803aa5ee84f1e9de642c365452f9e67be8f958ce22901 languageName: node2902 linkType: hard29032904"extsprintf@npm:^1.2.0":2905 version: 1.4.12906 resolution: "extsprintf@npm:1.4.1"2907 checksum: a2f29b241914a8d2bad64363de684821b6b1609d06ae68d5b539e4de6b28659715b5bea94a7265201603713b7027d35399d10b0548f09071c5513e65e8323d332908 languageName: node2909 linkType: hard29102911"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3":2912 version: 3.1.32913 resolution: "fast-deep-equal@npm:3.1.3"2914 checksum: e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d2915 languageName: node2916 linkType: hard29172918"fast-glob@npm:^3.2.9":2919 version: 3.3.22920 resolution: "fast-glob@npm:3.3.2"2921 dependencies:2922 "@nodelib/fs.stat": ^2.0.22923 "@nodelib/fs.walk": ^1.2.32924 glob-parent: ^5.1.22925 merge2: ^1.3.02926 micromatch: ^4.0.42927 checksum: 900e4979f4dbc3313840078419245621259f349950411ca2fa445a2f9a1a6d98c3b5e7e0660c5ccd563aa61abe133a21765c6c0dec8e57da1ba71d8000b05ec12928 languageName: node2929 linkType: hard29302931"fast-json-stable-stringify@npm:^2.0.0":2932 version: 2.1.02933 resolution: "fast-json-stable-stringify@npm:2.1.0"2934 checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb2935 languageName: node2936 linkType: hard29372938"fast-levenshtein@npm:^2.0.6":2939 version: 2.0.62940 resolution: "fast-levenshtein@npm:2.0.6"2941 checksum: 92cfec0a8dfafd9c7a15fba8f2cc29cd0b62b85f056d99ce448bbcd9f708e18ab2764bda4dd5158364f4145a7c72788538994f0d1787b956ef0d1062b0f7c24c2942 languageName: node2943 linkType: hard29442945"fastq@npm:^1.6.0":2946 version: 1.15.02947 resolution: "fastq@npm:1.15.0"2948 dependencies:2949 reusify: ^1.0.42950 checksum: 0170e6bfcd5d57a70412440b8ef600da6de3b2a6c5966aeaf0a852d542daff506a0ee92d6de7679d1de82e644bce69d7a574a6c93f0b03964b5337eed75ada1a2951 languageName: node2952 linkType: hard29532954"fetch-blob@npm:^3.1.2, fetch-blob@npm:^3.1.4":2955 version: 3.2.02956 resolution: "fetch-blob@npm:3.2.0"2957 dependencies:2958 node-domexception: ^1.0.02959 web-streams-polyfill: ^3.0.32960 checksum: f19bc28a2a0b9626e69fd7cf3a05798706db7f6c7548da657cbf5026a570945f5eeaedff52007ea35c8bcd3d237c58a20bf1543bc568ab2422411d762dd3d5bf2961 languageName: node2962 linkType: hard29632964"file-entry-cache@npm:^6.0.1":2965 version: 6.0.12966 resolution: "file-entry-cache@npm:6.0.1"2967 dependencies:2968 flat-cache: ^3.0.42969 checksum: f49701feaa6314c8127c3c2f6173cfefff17612f5ed2daaafc6da13b5c91fd43e3b2a58fd0d63f9f94478a501b167615931e7200e31485e320f74a33885a9c742970 languageName: node2971 linkType: hard29722973"fill-range@npm:^7.0.1":2974 version: 7.0.12975 resolution: "fill-range@npm:7.0.1"2976 dependencies:2977 to-regex-range: ^5.0.12978 checksum: cc283f4e65b504259e64fd969bcf4def4eb08d85565e906b7d36516e87819db52029a76b6363d0f02d0d532f0033c9603b9e2d943d56ee3b0d4f7ad3328ff9172979 languageName: node2980 linkType: hard29812982"finalhandler@npm:1.2.0":2983 version: 1.2.02984 resolution: "finalhandler@npm:1.2.0"2985 dependencies:2986 debug: 2.6.92987 encodeurl: ~1.0.22988 escape-html: ~1.0.32989 on-finished: 2.4.12990 parseurl: ~1.3.32991 statuses: 2.0.12992 unpipe: ~1.0.02993 checksum: 92effbfd32e22a7dff2994acedbd9bcc3aa646a3e919ea6a53238090e87097f8ef07cced90aa2cc421abdf993aefbdd5b00104d55c7c5479a8d00ed105b457162994 languageName: node2995 linkType: hard29962997"find-replace@npm:^3.0.0":2998 version: 3.0.02999 resolution: "find-replace@npm:3.0.0"3000 dependencies:3001 array-back: ^3.0.13002 checksum: 6b04bcfd79027f5b84aa1dfe100e3295da989bdac4b4de6b277f4d063e78f5c9e92ebc8a1fec6dd3b448c924ba404ee051cc759e14a3ee3e825fa1361025df083003 languageName: node3004 linkType: hard30053006"find-up@npm:5.0.0, find-up@npm:^5.0.0":3007 version: 5.0.03008 resolution: "find-up@npm:5.0.0"3009 dependencies:3010 locate-path: ^6.0.03011 path-exists: ^4.0.03012 checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b90953013 languageName: node3014 linkType: hard30153016"flat-cache@npm:^3.0.4":3017 version: 3.1.13018 resolution: "flat-cache@npm:3.1.1"3019 dependencies:3020 flatted: ^3.2.93021 keyv: ^4.5.33022 rimraf: ^3.0.23023 checksum: 4958cfe0f46acf84953d4e16676ef5f0d38eab3a92d532a1e8d5f88f11eea8b36d5d598070ff2aeae15f1fde18f8d7d089eefaf9db10b5a587cc1c9072325c7a3024 languageName: node3025 linkType: hard30263027"flat@npm:^5.0.2":3028 version: 5.0.23029 resolution: "flat@npm:5.0.2"3030 bin:3031 flat: cli.js3032 checksum: 12a1536ac746db74881316a181499a78ef953632ddd28050b7a3a43c62ef5462e3357c8c29d76072bb635f147f7a9a1f0c02efef6b4be28f8db62ceb3d5c7f5d3033 languageName: node3034 linkType: hard30353036"flatted@npm:^3.2.9":3037 version: 3.2.93038 resolution: "flatted@npm:3.2.9"3039 checksum: f14167fbe26a9d20f6fca8d998e8f1f41df72c8e81f9f2c9d61ed2bea058248f5e1cbd05e7f88c0e5087a6a0b822a1e5e2b446e879f3cfbe0b07ba2d7f80b0263040 languageName: node3041 linkType: hard30423043"follow-redirects@npm:^1.12.1":3044 version: 1.15.33045 resolution: "follow-redirects@npm:1.15.3"3046 peerDependenciesMeta:3047 debug:3048 optional: true3049 checksum: 584da22ec5420c837bd096559ebfb8fe69d82512d5585004e36a3b4a6ef6d5905780e0c74508c7b72f907d1fa2b7bd339e613859e9c304d0dc96af2027fd02313050 languageName: node3051 linkType: hard30523053"for-each@npm:^0.3.3":3054 version: 0.3.33055 resolution: "for-each@npm:0.3.3"3056 dependencies:3057 is-callable: ^1.1.33058 checksum: 6c48ff2bc63362319c65e2edca4a8e1e3483a2fabc72fbe7feaf8c73db94fc7861bd53bc02c8a66a0c1dd709da6b04eec42e0abdd6b40ce47305ae92a25e5d283059 languageName: node3060 linkType: hard30613062"foreground-child@npm:^3.1.0":3063 version: 3.1.13064 resolution: "foreground-child@npm:3.1.1"3065 dependencies:3066 cross-spawn: ^7.0.03067 signal-exit: ^4.0.13068 checksum: 139d270bc82dc9e6f8bc045fe2aae4001dc2472157044fdfad376d0a3457f77857fa883c1c8b21b491c6caade9a926a4bed3d3d2e8d3c9202b151a4cbbd0bcd53069 languageName: node3070 linkType: hard30713072"forever-agent@npm:~0.6.1":3073 version: 0.6.13074 resolution: "forever-agent@npm:0.6.1"3075 checksum: 766ae6e220f5fe23676bb4c6a99387cec5b7b62ceb99e10923376e27bfea72f3c3aeec2ba5f45f3f7ba65d6616965aa7c20b15002b6860833bb6e394dea546a83076 languageName: node3077 linkType: hard30783079"form-data-encoder@npm:1.7.1":3080 version: 1.7.13081 resolution: "form-data-encoder@npm:1.7.1"3082 checksum: a2a360d5588a70d323c12a140c3db23a503a38f0a5d141af1efad579dde9f9fff2e49e5f31f378cb4631518c1ab4a826452c92f0d2869e954b6b2d77b05613e13083 languageName: node3084 linkType: hard30853086"form-data@npm:~2.3.2":3087 version: 2.3.33088 resolution: "form-data@npm:2.3.3"3089 dependencies:3090 asynckit: ^0.4.03091 combined-stream: ^1.0.63092 mime-types: ^2.1.123093 checksum: 10c1780fa13dbe1ff3100114c2ce1f9307f8be10b14bf16e103815356ff567b6be39d70fc4a40f8990b9660012dc24b0f5e1dde1b6426166eb23a445ba068ca33094 languageName: node3095 linkType: hard30963097"formdata-polyfill@npm:^4.0.10":3098 version: 4.0.103099 resolution: "formdata-polyfill@npm:4.0.10"3100 dependencies:3101 fetch-blob: ^3.1.23102 checksum: 82a34df292afadd82b43d4a740ce387bc08541e0a534358425193017bf9fb3567875dc5f69564984b1da979979b70703aa73dee715a17b6c229752ae736dd9db3103 languageName: node3104 linkType: hard31053106"forwarded@npm:0.2.0":3107 version: 0.2.03108 resolution: "forwarded@npm:0.2.0"3109 checksum: fd27e2394d8887ebd16a66ffc889dc983fbbd797d5d3f01087c020283c0f019a7d05ee85669383d8e0d216b116d720fc0cef2f6e9b7eb9f4c90c6e0bc7fd28e63110 languageName: node3111 linkType: hard31123113"fresh@npm:0.5.2":3114 version: 0.5.23115 resolution: "fresh@npm:0.5.2"3116 checksum: 13ea8b08f91e669a64e3ba3a20eb79d7ca5379a81f1ff7f4310d54e2320645503cc0c78daedc93dfb6191287295f6479544a649c64d8e41a1c0fb0c2215523463117 languageName: node3118 linkType: hard31193120"fs-extra@npm:^4.0.2":3121 version: 4.0.33122 resolution: "fs-extra@npm:4.0.3"3123 dependencies:3124 graceful-fs: ^4.1.23125 jsonfile: ^4.0.03126 universalify: ^0.1.03127 checksum: c5ae3c7043ad7187128e619c0371da01b58694c1ffa02c36fb3f5b459925d9c27c3cb1e095d9df0a34a85ca993d8b8ff6f6ecef868fd5ebb243548afa7fc09363128 languageName: node3129 linkType: hard31303131"fs-extra@npm:^7.0.0":3132 version: 7.0.13133 resolution: "fs-extra@npm:7.0.1"3134 dependencies:3135 graceful-fs: ^4.1.23136 jsonfile: ^4.0.03137 universalify: ^0.1.03138 checksum: 141b9dccb23b66a66cefdd81f4cda959ff89282b1d721b98cea19ba08db3dcbe6f862f28841f3cf24bb299e0b7e6c42303908f65093cb7e201708e86ea5a8dcf3139 languageName: node3140 linkType: hard31413142"fs-minipass@npm:^1.2.7":3143 version: 1.2.73144 resolution: "fs-minipass@npm:1.2.7"3145 dependencies:3146 minipass: ^2.6.03147 checksum: 40fd46a2b5dcb74b3a580269f9a0c36f9098c2ebd22cef2e1a004f375b7b665c11f1507ec3f66ee6efab5664109f72d0a74ea19c3370842214c3da5168d6fdd73148 languageName: node3149 linkType: hard31503151"fs-minipass@npm:^2.0.0":3152 version: 2.1.03153 resolution: "fs-minipass@npm:2.1.0"3154 dependencies:3155 minipass: ^3.0.03156 checksum: 1b8d128dae2ac6cc94230cc5ead341ba3e0efaef82dab46a33d171c044caaa6ca001364178d42069b2809c35a1c3c35079a32107c770e9ffab3901b59af8c8b13157 languageName: node3158 linkType: hard31593160"fs-minipass@npm:^3.0.0":3161 version: 3.0.33162 resolution: "fs-minipass@npm:3.0.3"3163 dependencies:3164 minipass: ^7.0.33165 checksum: 8722a41109130851d979222d3ec88aabaceeaaf8f57b2a8f744ef8bd2d1ce95453b04a61daa0078822bc5cd21e008814f06fe6586f56fef511e71b8d2394d8023166 languageName: node3167 linkType: hard31683169"fs.realpath@npm:^1.0.0":3170 version: 1.0.03171 resolution: "fs.realpath@npm:1.0.0"3172 checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd03173 languageName: node3174 linkType: hard31753176"fsevents@npm:~2.3.2":3177 version: 2.3.33178 resolution: "fsevents@npm:2.3.3"3179 dependencies:3180 node-gyp: latest3181 checksum: 11e6ea6fea15e42461fc55b4b0e4a0a3c654faa567f1877dbd353f39156f69def97a69936d1746619d656c4b93de2238bf731f6085a03a50cabf287c9d0243173182 conditions: os=darwin3183 languageName: node3184 linkType: hard31853186"fsevents@patch:fsevents@~2.3.2#~builtin<compat/fsevents>":3187 version: 2.3.33188 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#~builtin<compat/fsevents>::version=2.3.3&hash=df0bf1"3189 dependencies:3190 node-gyp: latest3191 conditions: os=darwin3192 languageName: node3193 linkType: hard31943195"function-bind@npm:^1.1.2":3196 version: 1.1.23197 resolution: "function-bind@npm:1.1.2"3198 checksum: 2b0ff4ce708d99715ad14a6d1f894e2a83242e4a52ccfcefaee5e40050562e5f6dafc1adbb4ce2d4ab47279a45dc736ab91ea5042d843c3c092820dfe032efb13199 languageName: node3200 linkType: hard32013202"get-caller-file@npm:^2.0.5":3203 version: 2.0.53204 resolution: "get-caller-file@npm:2.0.5"3205 checksum: b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b93206 languageName: node3207 linkType: hard32083209"get-func-name@npm:^2.0.1, get-func-name@npm:^2.0.2":3210 version: 2.0.23211 resolution: "get-func-name@npm:2.0.2"3212 checksum: 3f62f4c23647de9d46e6f76d2b3eafe58933a9b3830c60669e4180d6c601ce1b4aa310ba8366143f55e52b139f992087a9f0647274e8745621fa2af7e0acf13b3213 languageName: node3214 linkType: hard32153216"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2":3217 version: 1.2.23218 resolution: "get-intrinsic@npm:1.2.2"3219 dependencies:3220 function-bind: ^1.1.23221 has-proto: ^1.0.13222 has-symbols: ^1.0.33223 hasown: ^2.0.03224 checksum: 447ff0724df26829908dc033b62732359596fcf66027bc131ab37984afb33842d9cd458fd6cecadfe7eac22fd8a54b349799ed334cf2726025c921c7250e74173225 languageName: node3226 linkType: hard32273228"get-stream@npm:^5.1.0":3229 version: 5.2.03230 resolution: "get-stream@npm:5.2.0"3231 dependencies:3232 pump: ^3.0.03233 checksum: 8bc1a23174a06b2b4ce600df38d6c98d2ef6d84e020c1ddad632ad75bac4e092eeb40e4c09e0761c35fc2dbc5e7fff5dab5e763a383582c4a167dd69a905bd123234 languageName: node3235 linkType: hard32363237"get-stream@npm:^6.0.1":3238 version: 6.0.13239 resolution: "get-stream@npm:6.0.1"3240 checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad3241 languageName: node3242 linkType: hard32433244"getpass@npm:^0.1.1":3245 version: 0.1.73246 resolution: "getpass@npm:0.1.7"3247 dependencies:3248 assert-plus: ^1.0.03249 checksum: ab18d55661db264e3eac6012c2d3daeafaab7a501c035ae0ccb193c3c23e9849c6e29b6ac762b9c2adae460266f925d55a3a2a3a3c8b94be2f222df94d70c0463250 languageName: node3251 linkType: hard32523253"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2":3254 version: 5.1.23255 resolution: "glob-parent@npm:5.1.2"3256 dependencies:3257 is-glob: ^4.0.13258 checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e3259 languageName: node3260 linkType: hard32613262"glob-parent@npm:^6.0.2":3263 version: 6.0.23264 resolution: "glob-parent@npm:6.0.2"3265 dependencies:3266 is-glob: ^4.0.33267 checksum: c13ee97978bef4f55106b71e66428eb1512e71a7466ba49025fc2aec59a5bfb0954d5abd58fc5ee6c9b076eef4e1f6d3375c2e964b88466ca390da4419a786a83268 languageName: node3269 linkType: hard32703271"glob@npm:7.1.7":3272 version: 7.1.73273 resolution: "glob@npm:7.1.7"3274 dependencies:3275 fs.realpath: ^1.0.03276 inflight: ^1.0.43277 inherits: 23278 minimatch: ^3.0.43279 once: ^1.3.03280 path-is-absolute: ^1.0.03281 checksum: b61f48973bbdcf5159997b0874a2165db572b368b931135832599875919c237fc05c12984e38fe828e69aa8a921eb0e8a4997266211c517c9cfaae8a93988bb83282 languageName: node3283 linkType: hard32843285"glob@npm:7.2.0":3286 version: 7.2.03287 resolution: "glob@npm:7.2.0"3288 dependencies:3289 fs.realpath: ^1.0.03290 inflight: ^1.0.43291 inherits: 23292 minimatch: ^3.0.43293 once: ^1.3.03294 path-is-absolute: ^1.0.03295 checksum: 78a8ea942331f08ed2e055cb5b9e40fe6f46f579d7fd3d694f3412fe5db23223d29b7fee1575440202e9a7ff9a72ab106a39fee39934c7bedafe5e5f8ae201343296 languageName: node3297 linkType: hard32983299"glob@npm:^10.2.2, glob@npm:^10.3.10":3300 version: 10.3.103301 resolution: "glob@npm:10.3.10"3302 dependencies:3303 foreground-child: ^3.1.03304 jackspeak: ^2.3.53305 minimatch: ^9.0.13306 minipass: ^5.0.0 || ^6.0.2 || ^7.0.03307 path-scurry: ^1.10.13308 bin:3309 glob: dist/esm/bin.mjs3310 checksum: 4f2fe2511e157b5a3f525a54092169a5f92405f24d2aed3142f4411df328baca13059f4182f1db1bf933e2c69c0bd89e57ae87edd8950cba8c7ccbe84f721cf33311 languageName: node3312 linkType: hard33133314"glob@npm:^7.1.3":3315 version: 7.2.33316 resolution: "glob@npm:7.2.3"3317 dependencies:3318 fs.realpath: ^1.0.03319 inflight: ^1.0.43320 inherits: 23321 minimatch: ^3.1.13322 once: ^1.3.03323 path-is-absolute: ^1.0.03324 checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d1333325 languageName: node3326 linkType: hard33273328"global@npm:~4.4.0":3329 version: 4.4.03330 resolution: "global@npm:4.4.0"3331 dependencies:3332 min-document: ^2.19.03333 process: ^0.11.103334 checksum: 9c057557c8f5a5bcfbeb9378ba4fe2255d04679452be504608dd5f13b54edf79f7be1db1031ea06a4ec6edd3b9f5f17d2d172fb47e6c69dae57fd84b7e72b77f3335 languageName: node3336 linkType: hard33373338"globals@npm:^13.19.0":3339 version: 13.23.03340 resolution: "globals@npm:13.23.0"3341 dependencies:3342 type-fest: ^0.20.23343 checksum: 194c97cf8d1ef6ba59417234c2386549c4103b6e5f24b1ff1952de61a4753e5d2069435ba629de711a6480b1b1d114a98e2ab27f85e966d5a10c319c3bbd3dc33344 languageName: node3345 linkType: hard33463347"globby@npm:^11.1.0":3348 version: 11.1.03349 resolution: "globby@npm:11.1.0"3350 dependencies:3351 array-union: ^2.1.03352 dir-glob: ^3.0.13353 fast-glob: ^3.2.93354 ignore: ^5.2.03355 merge2: ^1.4.13356 slash: ^3.0.03357 checksum: b4be8885e0cfa018fc783792942d53926c35c50b3aefd3fdcfb9d22c627639dc26bd2327a40a0b74b074100ce95bb7187bfeae2f236856aa3de183af7a02aea63358 languageName: node3359 linkType: hard33603361"gopd@npm:^1.0.1":3362 version: 1.0.13363 resolution: "gopd@npm:1.0.1"3364 dependencies:3365 get-intrinsic: ^1.1.33366 checksum: a5ccfb8806e0917a94e0b3de2af2ea4979c1da920bc381667c260e00e7cafdbe844e2cb9c5bcfef4e5412e8bf73bab837285bc35c7ba73aaaf0134d4583393a63367 languageName: node3368 linkType: hard33693370"got@npm:12.1.0":3371 version: 12.1.03372 resolution: "got@npm:12.1.0"3373 dependencies:3374 "@sindresorhus/is": ^4.6.03375 "@szmarczak/http-timer": ^5.0.13376 "@types/cacheable-request": ^6.0.23377 "@types/responselike": ^1.0.03378 cacheable-lookup: ^6.0.43379 cacheable-request: ^7.0.23380 decompress-response: ^6.0.03381 form-data-encoder: 1.7.13382 get-stream: ^6.0.13383 http2-wrapper: ^2.1.103384 lowercase-keys: ^3.0.03385 p-cancelable: ^3.0.03386 responselike: ^2.0.03387 checksum: 1cc9af6ca511338a7f1bbb0943999e6ac324ea3c7d826066c02e530b4ac41147b1a4cadad21b28c3938de82185ac99c33d64a3a4560c6e0b0b125191ba6ee6193388 languageName: node3389 linkType: hard33903391"got@npm:^11.8.5":3392 version: 11.8.63393 resolution: "got@npm:11.8.6"3394 dependencies:3395 "@sindresorhus/is": ^4.0.03396 "@szmarczak/http-timer": ^4.0.53397 "@types/cacheable-request": ^6.0.13398 "@types/responselike": ^1.0.03399 cacheable-lookup: ^5.0.33400 cacheable-request: ^7.0.23401 decompress-response: ^6.0.03402 http2-wrapper: ^1.0.0-beta.5.23403 lowercase-keys: ^2.0.03404 p-cancelable: ^2.0.03405 responselike: ^2.0.03406 checksum: bbc783578a8d5030c8164ef7f57ce41b5ad7db2ed13371e1944bef157eeca5a7475530e07c0aaa71610d7085474d0d96222c9f4268d41db333a17e39b463f45d3407 languageName: node3408 linkType: hard34093410"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.6":3411 version: 4.2.113412 resolution: "graceful-fs@npm:4.2.11"3413 checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc73414 languageName: node3415 linkType: hard34163417"graphemer@npm:^1.4.0":3418 version: 1.4.03419 resolution: "graphemer@npm:1.4.0"3420 checksum: bab8f0be9b568857c7bec9fda95a89f87b783546d02951c40c33f84d05bb7da3fd10f863a9beb901463669b6583173a8c8cc6d6b306ea2b9b9d5d3d943c3a6733421 languageName: node3422 linkType: hard34233424"handlebars@npm:^4.7.8":3425 version: 4.7.83426 resolution: "handlebars@npm:4.7.8"3427 dependencies:3428 minimist: ^1.2.53429 neo-async: ^2.6.23430 source-map: ^0.6.13431 uglify-js: ^3.1.43432 wordwrap: ^1.0.03433 dependenciesMeta:3434 uglify-js:3435 optional: true3436 bin:3437 handlebars: bin/handlebars3438 checksum: 00e68bb5c183fd7b8b63322e6234b5ac8fbb960d712cb3f25587d559c2951d9642df83c04a1172c918c41bcfc81bfbd7a7718bbce93b893e0135fc99edea93ff3439 languageName: node3440 linkType: hard34413442"har-schema@npm:^2.0.0":3443 version: 2.0.03444 resolution: "har-schema@npm:2.0.0"3445 checksum: d8946348f333fb09e2bf24cc4c67eabb47c8e1d1aa1c14184c7ffec1140a49ec8aa78aa93677ae452d71d5fc0fdeec20f0c8c1237291fc2bcb3f502a5d204f9b3446 languageName: node3447 linkType: hard34483449"har-validator@npm:~5.1.3":3450 version: 5.1.53451 resolution: "har-validator@npm:5.1.5"3452 dependencies:3453 ajv: ^6.12.33454 har-schema: ^2.0.03455 checksum: b998a7269ca560d7f219eedc53e2c664cd87d487e428ae854a6af4573fc94f182fe9d2e3b92ab968249baec7ebaf9ead69cf975c931dc2ab282ec182ee9882803456 languageName: node3457 linkType: hard34583459"has-flag@npm:^3.0.0":3460 version: 3.0.03461 resolution: "has-flag@npm:3.0.0"3462 checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b3463 languageName: node3464 linkType: hard34653466"has-flag@npm:^4.0.0":3467 version: 4.0.03468 resolution: "has-flag@npm:4.0.0"3469 checksum: 261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad3470 languageName: node3471 linkType: hard34723473"has-property-descriptors@npm:^1.0.0":3474 version: 1.0.13475 resolution: "has-property-descriptors@npm:1.0.1"3476 dependencies:3477 get-intrinsic: ^1.2.23478 checksum: 2bcc6bf6ec6af375add4e4b4ef586e43674850a91ad4d46666d0b28ba8e1fd69e424c7677d24d60f69470ad0afaa2f3197f508b20b0bb7dd99a8ab77ffc4b7c43479 languageName: node3480 linkType: hard34813482"has-proto@npm:^1.0.1":3483 version: 1.0.13484 resolution: "has-proto@npm:1.0.1"3485 checksum: febc5b5b531de8022806ad7407935e2135f1cc9e64636c3916c6842bd7995994ca3b29871ecd7954bd35f9e2986c17b3b227880484d22259e2f8e6ce63fd383e3486 languageName: node3487 linkType: hard34883489"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3":3490 version: 1.0.33491 resolution: "has-symbols@npm:1.0.3"3492 checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f24103493 languageName: node3494 linkType: hard34953496"has-tostringtag@npm:^1.0.0":3497 version: 1.0.03498 resolution: "has-tostringtag@npm:1.0.0"3499 dependencies:3500 has-symbols: ^1.0.23501 checksum: cc12eb28cb6ae22369ebaad3a8ab0799ed61270991be88f208d508076a1e99abe4198c965935ce85ea90b60c94ddda73693b0920b58e7ead048b4a391b502c1c3502 languageName: node3503 linkType: hard35043505"hash-base@npm:^3.0.0":3506 version: 3.1.03507 resolution: "hash-base@npm:3.1.0"3508 dependencies:3509 inherits: ^2.0.43510 readable-stream: ^3.6.03511 safe-buffer: ^5.2.03512 checksum: 26b7e97ac3de13cb23fc3145e7e3450b0530274a9562144fc2bf5c1e2983afd0e09ed7cc3b20974ba66039fad316db463da80eb452e7373e780cbee9a0d2f2dc3513 languageName: node3514 linkType: hard35153516"hash.js@npm:1.1.7, hash.js@npm:^1.0.0, hash.js@npm:^1.0.3, hash.js@npm:^1.1.7":3517 version: 1.1.73518 resolution: "hash.js@npm:1.1.7"3519 dependencies:3520 inherits: ^2.0.33521 minimalistic-assert: ^1.0.13522 checksum: e350096e659c62422b85fa508e4b3669017311aa4c49b74f19f8e1bc7f3a54a584fdfd45326d4964d6011f2b2d882e38bea775a96046f2a61b7779a979629d8f3523 languageName: node3524 linkType: hard35253526"hasown@npm:^2.0.0":3527 version: 2.0.03528 resolution: "hasown@npm:2.0.0"3529 dependencies:3530 function-bind: ^1.1.23531 checksum: 6151c75ca12554565098641c98a40f4cc86b85b0fd5b6fe92360967e4605a4f9610f7757260b4e8098dd1c2ce7f4b095f2006fe72a570e3b6d2d28de0298c1763532 languageName: node3533 linkType: hard35343535"he@npm:1.2.0":3536 version: 1.2.03537 resolution: "he@npm:1.2.0"3538 bin:3539 he: bin/he3540 checksum: 3d4d6babccccd79c5c5a3f929a68af33360d6445587d628087f39a965079d84f18ce9c3d3f917ee1e3978916fc833bb8b29377c3b403f919426f91bc6965e7a73541 languageName: node3542 linkType: hard35433544"hmac-drbg@npm:^1.0.1":3545 version: 1.0.13546 resolution: "hmac-drbg@npm:1.0.1"3547 dependencies:3548 hash.js: ^1.0.33549 minimalistic-assert: ^1.0.03550 minimalistic-crypto-utils: ^1.0.13551 checksum: bd30b6a68d7f22d63f10e1888aee497d7c2c5c0bb469e66bbdac99f143904d1dfe95f8131f95b3e86c86dd239963c9d972fcbe147e7cffa00e55d18585c43fe03552 languageName: node3553 linkType: hard35543555"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.1":3556 version: 4.1.13557 resolution: "http-cache-semantics@npm:4.1.1"3558 checksum: 83ac0bc60b17a3a36f9953e7be55e5c8f41acc61b22583060e8dedc9dd5e3607c823a88d0926f9150e571f90946835c7fe150732801010845c72cd8bbff1a2363559 languageName: node3560 linkType: hard35613562"http-errors@npm:2.0.0":3563 version: 2.0.03564 resolution: "http-errors@npm:2.0.0"3565 dependencies:3566 depd: 2.0.03567 inherits: 2.0.43568 setprototypeof: 1.2.03569 statuses: 2.0.13570 toidentifier: 1.0.13571 checksum: 9b0a3782665c52ce9dc658a0d1560bcb0214ba5699e4ea15aefb2a496e2ca83db03ebc42e1cce4ac1f413e4e0d2d736a3fd755772c556a9a06853ba2a0b7d9203572 languageName: node3573 linkType: hard35743575"http-https@npm:^1.0.0":3576 version: 1.0.03577 resolution: "http-https@npm:1.0.0"3578 checksum: 82fc4d2e512c64b35680944d1ae13e68220acfa05b06329832e271fd199c5c7fcff1f53fc1f91a1cd65a737ee4de14004dd3ba9a73cce33da970940c6e6ca7743579 languageName: node3580 linkType: hard35813582"http-proxy-agent@npm:^7.0.0":3583 version: 7.0.03584 resolution: "http-proxy-agent@npm:7.0.0"3585 dependencies:3586 agent-base: ^7.1.03587 debug: ^4.3.43588 checksum: 48d4fac997917e15f45094852b63b62a46d0c8a4f0b9c6c23ca26d27b8df8d178bed88389e604745e748bd9a01f5023e25093722777f0593c3f052009ff438b63589 languageName: node3590 linkType: hard35913592"http-signature@npm:~1.2.0":3593 version: 1.2.03594 resolution: "http-signature@npm:1.2.0"3595 dependencies:3596 assert-plus: ^1.0.03597 jsprim: ^1.2.23598 sshpk: ^1.7.03599 checksum: 3324598712266a9683585bb84a75dec4fd550567d5e0dd4a0fff6ff3f74348793404d3eeac4918fa0902c810eeee1a86419e4a2e92a164132dfe6b26743fb47c3600 languageName: node3601 linkType: hard36023603"http2-wrapper@npm:^1.0.0-beta.5.2":3604 version: 1.0.33605 resolution: "http2-wrapper@npm:1.0.3"3606 dependencies:3607 quick-lru: ^5.1.13608 resolve-alpn: ^1.0.03609 checksum: 74160b862ec699e3f859739101ff592d52ce1cb207b7950295bf7962e4aa1597ef709b4292c673bece9c9b300efad0559fc86c71b1409c7a1e02b7229456003e3610 languageName: node3611 linkType: hard36123613"http2-wrapper@npm:^2.1.10":3614 version: 2.2.03615 resolution: "http2-wrapper@npm:2.2.0"3616 dependencies:3617 quick-lru: ^5.1.13618 resolve-alpn: ^1.2.03619 checksum: 6fd20e5cb6a58151715b3581e06a62a47df943187d2d1f69e538a50cccb7175dd334ecfde7900a37d18f3e13a1a199518a2c211f39860e81e9a16210c199cfaa3620 languageName: node3621 linkType: hard36223623"https-proxy-agent@npm:^7.0.1":3624 version: 7.0.23625 resolution: "https-proxy-agent@npm:7.0.2"3626 dependencies:3627 agent-base: ^7.0.23628 debug: 43629 checksum: 088969a0dd476ea7a0ed0a2cf1283013682b08f874c3bc6696c83fa061d2c157d29ef0ad3eb70a2046010bb7665573b2388d10fdcb3e410a66995e52484442923630 languageName: node3631 linkType: hard36323633"iconv-lite@npm:0.4.24":3634 version: 0.4.243635 resolution: "iconv-lite@npm:0.4.24"3636 dependencies:3637 safer-buffer: ">= 2.1.2 < 3"3638 checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f63639 languageName: node3640 linkType: hard36413642"iconv-lite@npm:^0.6.2":3643 version: 0.6.33644 resolution: "iconv-lite@npm:0.6.3"3645 dependencies:3646 safer-buffer: ">= 2.1.2 < 3.0.0"3647 checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf3648 languageName: node3649 linkType: hard36503651"idna-uts46-hx@npm:^2.3.1":3652 version: 2.3.13653 resolution: "idna-uts46-hx@npm:2.3.1"3654 dependencies:3655 punycode: 2.1.03656 checksum: d434c3558d2bc1090eb90f978f995101f469cb26593414ac57aa082c9352e49972b332c6e4188b9b15538172ccfeae3121e5a19b96972a97e6aeb0676d86639c3657 languageName: node3658 linkType: hard36593660"ieee754@npm:^1.1.13":3661 version: 1.2.13662 resolution: "ieee754@npm:1.2.1"3663 checksum: 5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e3664 languageName: node3665 linkType: hard36663667"ignore@npm:^5.2.0, ignore@npm:^5.2.4":3668 version: 5.2.43669 resolution: "ignore@npm:5.2.4"3670 checksum: 3d4c309c6006e2621659311783eaea7ebcd41fe4ca1d78c91c473157ad6666a57a2df790fe0d07a12300d9aac2888204d7be8d59f9aaf665b1c7fcdb432517ef3671 languageName: node3672 linkType: hard36733674"import-fresh@npm:^3.2.1":3675 version: 3.3.03676 resolution: "import-fresh@npm:3.3.0"3677 dependencies:3678 parent-module: ^1.0.03679 resolve-from: ^4.0.03680 checksum: 2cacfad06e652b1edc50be650f7ec3be08c5e5a6f6d12d035c440a42a8cc028e60a5b99ca08a77ab4d6b1346da7d971915828f33cdab730d3d42f08242d09baa3681 languageName: node3682 linkType: hard36833684"imurmurhash@npm:^0.1.4":3685 version: 0.1.43686 resolution: "imurmurhash@npm:0.1.4"3687 checksum: 7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf73688 languageName: node3689 linkType: hard36903691"indent-string@npm:^4.0.0":3692 version: 4.0.03693 resolution: "indent-string@npm:4.0.0"3694 checksum: 824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e66996123695 languageName: node3696 linkType: hard36973698"inflight@npm:^1.0.4":3699 version: 1.0.63700 resolution: "inflight@npm:1.0.6"3701 dependencies:3702 once: ^1.3.03703 wrappy: 13704 checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd3705 languageName: node3706 linkType: hard37073708"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4":3709 version: 2.0.43710 resolution: "inherits@npm:2.0.4"3711 checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f13712 languageName: node3713 linkType: hard37143715"ip@npm:^2.0.0":3716 version: 2.0.03717 resolution: "ip@npm:2.0.0"3718 checksum: cfcfac6b873b701996d71ec82a7dd27ba92450afdb421e356f44044ed688df04567344c36cbacea7d01b1c39a4c732dc012570ebe9bebfb06f27314bca6253493719 languageName: node3720 linkType: hard37213722"ipaddr.js@npm:1.9.1":3723 version: 1.9.13724 resolution: "ipaddr.js@npm:1.9.1"3725 checksum: f88d3825981486f5a1942414c8d77dd6674dd71c065adcfa46f578d677edcb99fda25af42675cb59db492fdf427b34a5abfcde3982da11a8fd83a500b41cfe773726 languageName: node3727 linkType: hard37283729"is-arguments@npm:^1.0.4":3730 version: 1.1.13731 resolution: "is-arguments@npm:1.1.1"3732 dependencies:3733 call-bind: ^1.0.23734 has-tostringtag: ^1.0.03735 checksum: 7f02700ec2171b691ef3e4d0e3e6c0ba408e8434368504bb593d0d7c891c0dbfda6d19d30808b904a6cb1929bca648c061ba438c39f296c2a8ca083229c49f273736 languageName: node3737 linkType: hard37383739"is-binary-path@npm:~2.1.0":3740 version: 2.1.03741 resolution: "is-binary-path@npm:2.1.0"3742 dependencies:3743 binary-extensions: ^2.0.03744 checksum: 84192eb88cff70d320426f35ecd63c3d6d495da9d805b19bc65b518984b7c0760280e57dbf119b7e9be6b161784a5a673ab2c6abe83abb5198a432232ad5b35c3745 languageName: node3746 linkType: hard37473748"is-callable@npm:^1.1.3":3749 version: 1.2.73750 resolution: "is-callable@npm:1.2.7"3751 checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac3752 languageName: node3753 linkType: hard37543755"is-extglob@npm:^2.1.1":3756 version: 2.1.13757 resolution: "is-extglob@npm:2.1.1"3758 checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f853759 languageName: node3760 linkType: hard37613762"is-fullwidth-code-point@npm:^3.0.0":3763 version: 3.0.03764 resolution: "is-fullwidth-code-point@npm:3.0.0"3765 checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e3483766 languageName: node3767 linkType: hard37683769"is-function@npm:^1.0.1":3770 version: 1.0.23771 resolution: "is-function@npm:1.0.2"3772 checksum: 7d564562e07b4b51359547d3ccc10fb93bb392fd1b8177ae2601ee4982a0ece86d952323fc172a9000743a3971f09689495ab78a1d49a9b14fc97a7e28521dc03773 languageName: node3774 linkType: hard37753776"is-generator-function@npm:^1.0.7":3777 version: 1.0.103778 resolution: "is-generator-function@npm:1.0.10"3779 dependencies:3780 has-tostringtag: ^1.0.03781 checksum: d54644e7dbaccef15ceb1e5d91d680eb5068c9ee9f9eb0a9e04173eb5542c9b51b5ab52c5537f5703e48d5fddfd376817c1ca07a84a407b7115b769d4bdde72b3782 languageName: node3783 linkType: hard37843785"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1":3786 version: 4.0.33787 resolution: "is-glob@npm:4.0.3"3788 dependencies:3789 is-extglob: ^2.1.13790 checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab43791 languageName: node3792 linkType: hard37933794"is-hex-prefixed@npm:1.0.0":3795 version: 1.0.03796 resolution: "is-hex-prefixed@npm:1.0.0"3797 checksum: 5ac58e6e528fb029cc43140f6eeb380fad23d0041cc23154b87f7c9a1b728bcf05909974e47248fd0b7fcc11ba33cf7e58d64804883056fabd23e2b898be41de3798 languageName: node3799 linkType: hard38003801"is-lambda@npm:^1.0.1":3802 version: 1.0.13803 resolution: "is-lambda@npm:1.0.1"3804 checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c353805 languageName: node3806 linkType: hard38073808"is-number@npm:^7.0.0":3809 version: 7.0.03810 resolution: "is-number@npm:7.0.0"3811 checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a3812 languageName: node3813 linkType: hard38143815"is-path-inside@npm:^3.0.3":3816 version: 3.0.33817 resolution: "is-path-inside@npm:3.0.3"3818 checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e93819 languageName: node3820 linkType: hard38213822"is-plain-obj@npm:^2.1.0":3823 version: 2.1.03824 resolution: "is-plain-obj@npm:2.1.0"3825 checksum: cec9100678b0a9fe0248a81743041ed990c2d4c99f893d935545cfbc42876cbe86d207f3b895700c690ad2fa520e568c44afc1605044b535a7820c1d40e38daa3826 languageName: node3827 linkType: hard38283829"is-typed-array@npm:^1.1.3":3830 version: 1.1.123831 resolution: "is-typed-array@npm:1.1.12"3832 dependencies:3833 which-typed-array: ^1.1.113834 checksum: 4c89c4a3be07186caddadf92197b17fda663a9d259ea0d44a85f171558270d36059d1c386d34a12cba22dfade5aba497ce22778e866adc9406098c8fc47717963835 languageName: node3836 linkType: hard38373838"is-typedarray@npm:^1.0.0, is-typedarray@npm:~1.0.0":3839 version: 1.0.03840 resolution: "is-typedarray@npm:1.0.0"3841 checksum: 3508c6cd0a9ee2e0df2fa2e9baabcdc89e911c7bd5cf64604586697212feec525aa21050e48affb5ffc3df20f0f5d2e2cf79b08caa64e1ccc9578e251763aef73842 languageName: node3843 linkType: hard38443845"is-unicode-supported@npm:^0.1.0":3846 version: 0.1.03847 resolution: "is-unicode-supported@npm:0.1.0"3848 checksum: a2aab86ee7712f5c2f999180daaba5f361bdad1efadc9610ff5b8ab5495b86e4f627839d085c6530363c6d6d4ecbde340fb8e54bdb83da4ba8e0865ed5513c523849 languageName: node3850 linkType: hard38513852"isexe@npm:^2.0.0":3853 version: 2.0.03854 resolution: "isexe@npm:2.0.0"3855 checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c623856 languageName: node3857 linkType: hard38583859"isexe@npm:^3.1.1":3860 version: 3.1.13861 resolution: "isexe@npm:3.1.1"3862 checksum: 7fe1931ee4e88eb5aa524cd3ceb8c882537bc3a81b02e438b240e47012eef49c86904d0f0e593ea7c3a9996d18d0f1f3be8d3eaa92333977b0c3a9d353d5563e3863 languageName: node3864 linkType: hard38653866"isstream@npm:~0.1.2":3867 version: 0.1.23868 resolution: "isstream@npm:0.1.2"3869 checksum: 1eb2fe63a729f7bdd8a559ab552c69055f4f48eb5c2f03724430587c6f450783c8f1cd936c1c952d0a927925180fcc892ebd5b174236cf1065d4bd5bdb37e9633870 languageName: node3871 linkType: hard38723873"jackspeak@npm:^2.3.5":3874 version: 2.3.63875 resolution: "jackspeak@npm:2.3.6"3876 dependencies:3877 "@isaacs/cliui": ^8.0.23878 "@pkgjs/parseargs": ^0.11.03879 dependenciesMeta:3880 "@pkgjs/parseargs":3881 optional: true3882 checksum: 57d43ad11eadc98cdfe7496612f6bbb5255ea69fe51ea431162db302c2a11011642f50cfad57288bd0aea78384a0612b16e131944ad8ecd09d619041c8531b543883 languageName: node3884 linkType: hard38853886"js-sha3@npm:0.8.0, js-sha3@npm:^0.8.0":3887 version: 0.8.03888 resolution: "js-sha3@npm:0.8.0"3889 checksum: 75df77c1fc266973f06cce8309ce010e9e9f07ec35ab12022ed29b7f0d9c8757f5a73e1b35aa24840dced0dea7059085aa143d817aea9e188e2a80d569d9adce3890 languageName: node3891 linkType: hard38923893"js-sha3@npm:^0.5.7":3894 version: 0.5.73895 resolution: "js-sha3@npm:0.5.7"3896 checksum: 973a28ea4b26cc7f12d2ab24f796e24ee4a71eef45a6634a052f6eb38cf8b2333db798e896e6e094ea6fa4dfe8e42a2a7942b425cf40da3f866623fd05bb91ea3897 languageName: node3898 linkType: hard38993900"js-yaml@npm:4.1.0, js-yaml@npm:^4.1.0":3901 version: 4.1.03902 resolution: "js-yaml@npm:4.1.0"3903 dependencies:3904 argparse: ^2.0.13905 bin:3906 js-yaml: bin/js-yaml.js3907 checksum: c7830dfd456c3ef2c6e355cc5a92e6700ceafa1d14bba54497b34a99f0376cecbb3e9ac14d3e5849b426d5a5140709a66237a8c991c675431271c4ce5504151a3908 languageName: node3909 linkType: hard39103911"jsbn@npm:~0.1.0":3912 version: 0.1.13913 resolution: "jsbn@npm:0.1.1"3914 checksum: e5ff29c1b8d965017ef3f9c219dacd6e40ad355c664e277d31246c90545a02e6047018c16c60a00f36d561b3647215c41894f5d869ada6908a2e0ce4200c88f23915 languageName: node3916 linkType: hard39173918"json-buffer@npm:3.0.1":3919 version: 3.0.13920 resolution: "json-buffer@npm:3.0.1"3921 checksum: 9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d45813922 languageName: node3923 linkType: hard39243925"json-schema-traverse@npm:^0.4.1":3926 version: 0.4.13927 resolution: "json-schema-traverse@npm:0.4.1"3928 checksum: 7486074d3ba247769fda17d5181b345c9fb7d12e0da98b22d1d71a5db9698d8b4bd900a3ec1a4ffdd60846fc2556274a5c894d0c48795f14cb03aeae7b55260b3929 languageName: node3930 linkType: hard39313932"json-schema@npm:0.4.0":3933 version: 0.4.03934 resolution: "json-schema@npm:0.4.0"3935 checksum: 66389434c3469e698da0df2e7ac5a3281bcff75e797a5c127db7c5b56270e01ae13d9afa3c03344f76e32e81678337a8c912bdbb75101c62e487dc3778461d723936 languageName: node3937 linkType: hard39383939"json-stable-stringify-without-jsonify@npm:^1.0.1":3940 version: 1.0.13941 resolution: "json-stable-stringify-without-jsonify@npm:1.0.1"3942 checksum: cff44156ddce9c67c44386ad5cddf91925fe06b1d217f2da9c4910d01f358c6e3989c4d5a02683c7a5667f9727ff05831f7aa8ae66c8ff691c556f0884d492153943 languageName: node3944 linkType: hard39453946"json-stringify-safe@npm:^5.0.1, json-stringify-safe@npm:~5.0.1":3947 version: 5.0.13948 resolution: "json-stringify-safe@npm:5.0.1"3949 checksum: 48ec0adad5280b8a96bb93f4563aa1667fd7a36334f79149abd42446d0989f2ddc58274b479f4819f1f00617957e6344c886c55d05a4e15ebb4ab931e4a6a8ee3950 languageName: node3951 linkType: hard39523953"jsonfile@npm:^4.0.0":3954 version: 4.0.03955 resolution: "jsonfile@npm:4.0.0"3956 dependencies:3957 graceful-fs: ^4.1.63958 dependenciesMeta:3959 graceful-fs:3960 optional: true3961 checksum: 6447d6224f0d31623eef9b51185af03ac328a7553efcee30fa423d98a9e276ca08db87d71e17f2310b0263fd3ffa6c2a90a6308367f661dc21580f9469897c9e3962 languageName: node3963 linkType: hard39643965"jsprim@npm:^1.2.2":3966 version: 1.4.23967 resolution: "jsprim@npm:1.4.2"3968 dependencies:3969 assert-plus: 1.0.03970 extsprintf: 1.3.03971 json-schema: 0.4.03972 verror: 1.10.03973 checksum: 2ad1b9fdcccae8b3d580fa6ced25de930eaa1ad154db21bbf8478a4d30bbbec7925b5f5ff29b933fba9412b16a17bd484a8da4fdb3663b5e27af95dd693bab2a3974 languageName: node3975 linkType: hard39763977"keccak@npm:^3.0.0":3978 version: 3.0.43979 resolution: "keccak@npm:3.0.4"3980 dependencies:3981 node-addon-api: ^2.0.03982 node-gyp: latest3983 node-gyp-build: ^4.2.03984 readable-stream: ^3.6.03985 checksum: 2bf27b97b2f24225b1b44027de62be547f5c7326d87d249605665abd0c8c599d774671c35504c62c9b922cae02758504c6f76a73a84234d23af8a2211afaaa113986 languageName: node3987 linkType: hard39883989"keyv@npm:^4.0.0, keyv@npm:^4.5.3":3990 version: 4.5.43991 resolution: "keyv@npm:4.5.4"3992 dependencies:3993 json-buffer: 3.0.13994 checksum: 74a24395b1c34bd44ad5cb2b49140d087553e170625240b86755a6604cd65aa16efdbdeae5cdb17ba1284a0fbb25ad06263755dbc71b8d8b06f74232ce3cdd723995 languageName: node3996 linkType: hard39973998"levn@npm:^0.4.1":3999 version: 0.4.14000 resolution: "levn@npm:0.4.1"4001 dependencies:4002 prelude-ls: ^1.2.14003 type-check: ~0.4.04004 checksum: 12c5021c859bd0f5248561bf139121f0358285ec545ebf48bb3d346820d5c61a4309535c7f387ed7d84361cf821e124ce346c6b7cef8ee09a67c1473b46d0fc44005 languageName: node4006 linkType: hard40074008"locate-path@npm:^6.0.0":4009 version: 6.0.04010 resolution: "locate-path@npm:6.0.0"4011 dependencies:4012 p-locate: ^5.0.04013 checksum: 72eb661788a0368c099a184c59d2fee760b3831c9c1c33955e8a19ae4a21b4116e53fa736dc086cdeb9fce9f7cc508f2f92d2d3aae516f133e16a2bb59a39f5a4014 languageName: node4015 linkType: hard40164017"lodash.camelcase@npm:^4.3.0":4018 version: 4.3.04019 resolution: "lodash.camelcase@npm:4.3.0"4020 checksum: cb9227612f71b83e42de93eccf1232feeb25e705bdb19ba26c04f91e885bfd3dd5c517c4a97137658190581d3493ea3973072ca010aab7e301046d90740393d14021 languageName: node4022 linkType: hard40234024"lodash.merge@npm:^4.6.2":4025 version: 4.6.24026 resolution: "lodash.merge@npm:4.6.2"4027 checksum: ad580b4bdbb7ca1f7abf7e1bce63a9a0b98e370cf40194b03380a46b4ed799c9573029599caebc1b14e3f24b111aef72b96674a56cfa105e0f5ac70546cdc0054028 languageName: node4029 linkType: hard40304031"lodash@npm:^4.17.15":4032 version: 4.17.214033 resolution: "lodash@npm:4.17.21"4034 checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f74035 languageName: node4036 linkType: hard40374038"log-symbols@npm:4.1.0":4039 version: 4.1.04040 resolution: "log-symbols@npm:4.1.0"4041 dependencies:4042 chalk: ^4.1.04043 is-unicode-supported: ^0.1.04044 checksum: fce1497b3135a0198803f9f07464165e9eb83ed02ceb2273930a6f8a508951178d8cf4f0378e9d28300a2ed2bc49050995d2bd5f53ab716bb15ac84d58c6ef744045 languageName: node4046 linkType: hard40474048"lossless-json@npm:^3.0.1":4049 version: 3.0.14050 resolution: "lossless-json@npm:3.0.1"4051 checksum: 28dcf603267e155dd97a4b9689969831cc4a6205d6c4579dca3361c73e2de952bc5a66fe385340b6208216a6776d41a8e30d328c4dc2e536a49d17ce913b019f4052 languageName: node4053 linkType: hard40544055"loupe@npm:^2.3.6":4056 version: 2.3.74057 resolution: "loupe@npm:2.3.7"4058 dependencies:4059 get-func-name: ^2.0.14060 checksum: 96c058ec7167598e238bb7fb9def2f9339215e97d6685d9c1e3e4bdb33d14600e11fe7a812cf0c003dfb73ca2df374f146280b2287cae9e8d989e9d7a69a203b4061 languageName: node4062 linkType: hard40634064"lowercase-keys@npm:^2.0.0":4065 version: 2.0.04066 resolution: "lowercase-keys@npm:2.0.0"4067 checksum: 24d7ebd56ccdf15ff529ca9e08863f3c54b0b9d1edb97a3ae1af34940ae666c01a1e6d200707bce730a8ef76cb57cc10e65f245ecaaf7e6bc8639f2fb460ac234068 languageName: node4069 linkType: hard40704071"lowercase-keys@npm:^3.0.0":4072 version: 3.0.04073 resolution: "lowercase-keys@npm:3.0.0"4074 checksum: 67a3f81409af969bc0c4ca0e76cd7d16adb1e25aa1c197229587eaf8671275c8c067cd421795dbca4c81be0098e4c426a086a05e30de8a9c587b7a13c0c7ccc54075 languageName: node4076 linkType: hard40774078"lru-cache@npm:^10.0.1, lru-cache@npm:^9.1.1 || ^10.0.0":4079 version: 10.0.14080 resolution: "lru-cache@npm:10.0.1"4081 checksum: 06f8d0e1ceabd76bb6f644a26dbb0b4c471b79c7b514c13c6856113879b3bf369eb7b497dad4ff2b7e2636db202412394865b33c332100876d838ad1372f01814082 languageName: node4083 linkType: hard40844085"lru-cache@npm:^6.0.0":4086 version: 6.0.04087 resolution: "lru-cache@npm:6.0.0"4088 dependencies:4089 yallist: ^4.0.04090 checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c9782974091 languageName: node4092 linkType: hard40934094"make-error@npm:^1.1.1":4095 version: 1.3.64096 resolution: "make-error@npm:1.3.6"4097 checksum: b86e5e0e25f7f777b77fabd8e2cbf15737972869d852a22b7e73c17623928fccb826d8e46b9951501d3f20e51ad74ba8c59ed584f610526a48f8ccf88aaec4024098 languageName: node4099 linkType: hard41004101"make-fetch-happen@npm:^13.0.0":4102 version: 13.0.04103 resolution: "make-fetch-happen@npm:13.0.0"4104 dependencies:4105 "@npmcli/agent": ^2.0.04106 cacache: ^18.0.04107 http-cache-semantics: ^4.1.14108 is-lambda: ^1.0.14109 minipass: ^7.0.24110 minipass-fetch: ^3.0.04111 minipass-flush: ^1.0.54112 minipass-pipeline: ^1.2.44113 negotiator: ^0.6.34114 promise-retry: ^2.0.14115 ssri: ^10.0.04116 checksum: 7c7a6d381ce919dd83af398b66459a10e2fe8f4504f340d1d090d3fa3d1b0c93750220e1d898114c64467223504bd258612ba83efbc16f31b075cd56de24b4af4117 languageName: node4118 linkType: hard41194120"md5.js@npm:^1.3.4":4121 version: 1.3.54122 resolution: "md5.js@npm:1.3.5"4123 dependencies:4124 hash-base: ^3.0.04125 inherits: ^2.0.14126 safe-buffer: ^5.1.24127 checksum: 098494d885684bcc4f92294b18ba61b7bd353c23147fbc4688c75b45cb8590f5a95fd4584d742415dcc52487f7a1ef6ea611cfa1543b0dc4492fe026357f3f0c4128 languageName: node4129 linkType: hard41304131"media-typer@npm:0.3.0":4132 version: 0.3.04133 resolution: "media-typer@npm:0.3.0"4134 checksum: af1b38516c28ec95d6b0826f6c8f276c58aec391f76be42aa07646b4e39d317723e869700933ca6995b056db4b09a78c92d5440dc23657e6764be5d28874bba14135 languageName: node4136 linkType: hard41374138"memorystream@npm:^0.3.1":4139 version: 0.3.14140 resolution: "memorystream@npm:0.3.1"4141 checksum: f18b42440d24d09516d01466c06adf797df7873f0d40aa7db02e5fb9ed83074e5e65412d0720901d7069363465f82dc4f8bcb44f0cde271567a61426ce6ca2e94142 languageName: node4143 linkType: hard41444145"merge-descriptors@npm:1.0.1":4146 version: 1.0.14147 resolution: "merge-descriptors@npm:1.0.1"4148 checksum: 5abc259d2ae25bb06d19ce2b94a21632583c74e2a9109ee1ba7fd147aa7362b380d971e0251069f8b3eb7d48c21ac839e21fa177b335e82c76ec172e30c31a264149 languageName: node4150 linkType: hard41514152"merge2@npm:^1.3.0, merge2@npm:^1.4.1":4153 version: 1.4.14154 resolution: "merge2@npm:1.4.1"4155 checksum: 7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c24156 languageName: node4157 linkType: hard41584159"methods@npm:~1.1.2":4160 version: 1.1.24161 resolution: "methods@npm:1.1.2"4162 checksum: 0917ff4041fa8e2f2fda5425a955fe16ca411591fbd123c0d722fcf02b73971ed6f764d85f0a6f547ce49ee0221ce2c19a5fa692157931cecb422984f1dcd13a4163 languageName: node4164 linkType: hard41654166"micromatch@npm:^4.0.4":4167 version: 4.0.54168 resolution: "micromatch@npm:4.0.5"4169 dependencies:4170 braces: ^3.0.24171 picomatch: ^2.3.14172 checksum: 02a17b671c06e8fefeeb6ef996119c1e597c942e632a21ef589154f23898c9c6a9858526246abb14f8bca6e77734aa9dcf65476fca47cedfb80d9577d52843fc4173 languageName: node4174 linkType: hard41754176"mime-db@npm:1.52.0":4177 version: 1.52.04178 resolution: "mime-db@npm:1.52.0"4179 checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f4180 languageName: node4181 linkType: hard41824183"mime-types@npm:^2.1.12, mime-types@npm:^2.1.16, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34":4184 version: 2.1.354185 resolution: "mime-types@npm:2.1.35"4186 dependencies:4187 mime-db: 1.52.04188 checksum: 89a5b7f1def9f3af5dad6496c5ed50191ae4331cc5389d7c521c8ad28d5fdad2d06fd81baf38fed813dc4e46bb55c8145bb0ff406330818c9cf712fb2e9b38364189 languageName: node4190 linkType: hard41914192"mime@npm:1.6.0":4193 version: 1.6.04194 resolution: "mime@npm:1.6.0"4195 bin:4196 mime: cli.js4197 checksum: fef25e39263e6d207580bdc629f8872a3f9772c923c7f8c7e793175cee22777bbe8bba95e5d509a40aaa292d8974514ce634ae35769faa45f22d17edda5e85574198 languageName: node4199 linkType: hard42004201"mimic-response@npm:^1.0.0":4202 version: 1.0.14203 resolution: "mimic-response@npm:1.0.1"4204 checksum: 034c78753b0e622bc03c983663b1cdf66d03861050e0c8606563d149bc2b02d63f62ce4d32be4ab50d0553ae0ffe647fc34d1f5281184c6e1e8cf4d85e8d98234205 languageName: node4206 linkType: hard42074208"mimic-response@npm:^3.1.0":4209 version: 3.1.04210 resolution: "mimic-response@npm:3.1.0"4211 checksum: 25739fee32c17f433626bf19f016df9036b75b3d84a3046c7d156e72ec963dd29d7fc8a302f55a3d6c5a4ff24259676b15d915aad6480815a969ff2ec08368674212 languageName: node4213 linkType: hard42144215"min-document@npm:^2.19.0":4216 version: 2.19.04217 resolution: "min-document@npm:2.19.0"4218 dependencies:4219 dom-walk: ^0.1.04220 checksum: da6437562ea2228041542a2384528e74e22d1daa1a4ec439c165abf0b9d8a63e17e3b8a6dc6e0c731845e85301198730426932a0e813d23f932ca668340c96234221 languageName: node4222 linkType: hard42234224"minimalistic-assert@npm:^1.0.0, minimalistic-assert@npm:^1.0.1":4225 version: 1.0.14226 resolution: "minimalistic-assert@npm:1.0.1"4227 checksum: cc7974a9268fbf130fb055aff76700d7e2d8be5f761fb5c60318d0ed010d839ab3661a533ad29a5d37653133385204c503bfac995aaa4236f4e847461ea32ba74228 languageName: node4229 linkType: hard42304231"minimalistic-crypto-utils@npm:^1.0.1":4232 version: 1.0.14233 resolution: "minimalistic-crypto-utils@npm:1.0.1"4234 checksum: 6e8a0422b30039406efd4c440829ea8f988845db02a3299f372fceba56ffa94994a9c0f2fd70c17f9969eedfbd72f34b5070ead9656a34d3f71c0bd72583a0ed4235 languageName: node4236 linkType: hard42374238"minimatch@npm:5.0.1":4239 version: 5.0.14240 resolution: "minimatch@npm:5.0.1"4241 dependencies:4242 brace-expansion: ^2.0.14243 checksum: b34b98463da4754bc526b244d680c69d4d6089451ebe512edaf6dd9eeed0279399cfa3edb19233513b8f830bf4bfcad911dddcdf125e75074100d52f724774f04244 languageName: node4245 linkType: hard42464247"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2":4248 version: 3.1.24249 resolution: "minimatch@npm:3.1.2"4250 dependencies:4251 brace-expansion: ^1.1.74252 checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a4253 languageName: node4254 linkType: hard42554256"minimatch@npm:^9.0.1":4257 version: 9.0.34258 resolution: "minimatch@npm:9.0.3"4259 dependencies:4260 brace-expansion: ^2.0.14261 checksum: 253487976bf485b612f16bf57463520a14f512662e592e95c571afdab1442a6a6864b6c88f248ce6fc4ff0b6de04ac7aa6c8bb51e868e99d1d65eb0658a708b54262 languageName: node4263 linkType: hard42644265"minimist@npm:^1.2.5, minimist@npm:^1.2.6":4266 version: 1.2.84267 resolution: "minimist@npm:1.2.8"4268 checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b04269 languageName: node4270 linkType: hard42714272"minipass-collect@npm:^1.0.2":4273 version: 1.0.24274 resolution: "minipass-collect@npm:1.0.2"4275 dependencies:4276 minipass: ^3.0.04277 checksum: 14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f104278 languageName: node4279 linkType: hard42804281"minipass-fetch@npm:^3.0.0":4282 version: 3.0.44283 resolution: "minipass-fetch@npm:3.0.4"4284 dependencies:4285 encoding: ^0.1.134286 minipass: ^7.0.34287 minipass-sized: ^1.0.34288 minizlib: ^2.1.24289 dependenciesMeta:4290 encoding:4291 optional: true4292 checksum: af7aad15d5c128ab1ebe52e043bdf7d62c3c6f0cecb9285b40d7b395e1375b45dcdfd40e63e93d26a0e8249c9efd5c325c65575aceee192883970ff8cb11364a4293 languageName: node4294 linkType: hard42954296"minipass-flush@npm:^1.0.5":4297 version: 1.0.54298 resolution: "minipass-flush@npm:1.0.5"4299 dependencies:4300 minipass: ^3.0.04301 checksum: 56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf4302 languageName: node4303 linkType: hard43044305"minipass-pipeline@npm:^1.2.4":4306 version: 1.2.44307 resolution: "minipass-pipeline@npm:1.2.4"4308 dependencies:4309 minipass: ^3.0.04310 checksum: b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b4311 languageName: node4312 linkType: hard43134314"minipass-sized@npm:^1.0.3":4315 version: 1.0.34316 resolution: "minipass-sized@npm:1.0.3"4317 dependencies:4318 minipass: ^3.0.04319 checksum: 79076749fcacf21b5d16dd596d32c3b6bf4d6e62abb43868fac21674078505c8b15eaca4e47ed844985a4514854f917d78f588fcd029693709417d8f98b2bd604320 languageName: node4321 linkType: hard43224323"minipass@npm:^2.6.0, minipass@npm:^2.9.0":4324 version: 2.9.04325 resolution: "minipass@npm:2.9.0"4326 dependencies:4327 safe-buffer: ^5.1.24328 yallist: ^3.0.04329 checksum: 077b66f31ba44fd5a0d27d12a9e6a86bff8f97a4978dedb0373167156b5599fadb6920fdde0d9f803374164d810e05e8462ce28e86abbf7f0bea293a93711fc64330 languageName: node4331 linkType: hard43324333"minipass@npm:^3.0.0":4334 version: 3.3.64335 resolution: "minipass@npm:3.3.6"4336 dependencies:4337 yallist: ^4.0.04338 checksum: a30d083c8054cee83cdcdc97f97e4641a3f58ae743970457b1489ce38ee1167b3aaf7d815cd39ec7a99b9c40397fd4f686e83750e73e652b21cb516f6d845e484339 languageName: node4340 linkType: hard43414342"minipass@npm:^5.0.0":4343 version: 5.0.04344 resolution: "minipass@npm:5.0.0"4345 checksum: 425dab288738853fded43da3314a0b5c035844d6f3097a8e3b5b29b328da8f3c1af6fc70618b32c29ff906284cf6406b6841376f21caaadd0793c1d5a6a620ea4346 languageName: node4347 linkType: hard43484349"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3":4350 version: 7.0.44351 resolution: "minipass@npm:7.0.4"4352 checksum: 87585e258b9488caf2e7acea242fd7856bbe9a2c84a7807643513a338d66f368c7d518200ad7b70a508664d408aa000517647b2930c259a8b1f9f0984f344a214353 languageName: node4354 linkType: hard43554356"minizlib@npm:^1.3.3":4357 version: 1.3.34358 resolution: "minizlib@npm:1.3.3"4359 dependencies:4360 minipass: ^2.9.04361 checksum: b0425c04d2ae6aad5027462665f07cc0d52075f7fa16e942b4611115f9b31f02924073b7221be6f75929d3c47ab93750c63f6dc2bbe8619ceacb3de1f77732c04362 languageName: node4363 linkType: hard43644365"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2":4366 version: 2.1.24367 resolution: "minizlib@npm:2.1.2"4368 dependencies:4369 minipass: ^3.0.04370 yallist: ^4.0.04371 checksum: f1fdeac0b07cf8f30fcf12f4b586795b97be856edea22b5e9072707be51fc95d41487faec3f265b42973a304fe3a64acd91a44a3826a963e37b37bafde0212c34372 languageName: node4373 linkType: hard43744375"mkdirp-promise@npm:^5.0.1":4376 version: 5.0.14377 resolution: "mkdirp-promise@npm:5.0.1"4378 dependencies:4379 mkdirp: "*"4380 checksum: 31ddc9478216adf6d6bee9ea7ce9ccfe90356d9fcd1dfb18128eac075390b4161356d64c3a7b0a75f9de01a90aadd990a0ec8c7434036563985c4b853a053ee24381 languageName: node4382 linkType: hard43834384"mkdirp@npm:*":4385 version: 3.0.14386 resolution: "mkdirp@npm:3.0.1"4387 bin:4388 mkdirp: dist/cjs/src/bin.js4389 checksum: 972deb188e8fb55547f1e58d66bd6b4a3623bf0c7137802582602d73e6480c1c2268dcbafbfb1be466e00cc7e56ac514d7fd9334b7cf33e3e2ab547c16f83a8d4390 languageName: node4391 linkType: hard43924393"mkdirp@npm:^0.5.5":4394 version: 0.5.64395 resolution: "mkdirp@npm:0.5.6"4396 dependencies:4397 minimist: ^1.2.64398 bin:4399 mkdirp: bin/cmd.js4400 checksum: 0c91b721bb12c3f9af4b77ebf73604baf350e64d80df91754dc509491ae93bf238581e59c7188360cec7cb62fc4100959245a42cfe01834efedc5e9d068376c24401 languageName: node4402 linkType: hard44034404"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4":4405 version: 1.0.44406 resolution: "mkdirp@npm:1.0.4"4407 bin:4408 mkdirp: bin/cmd.js4409 checksum: a96865108c6c3b1b8e1d5e9f11843de1e077e57737602de1b82030815f311be11f96f09cce59bd5b903d0b29834733e5313f9301e3ed6d6f6fba2eae0df4298f4410 languageName: node4411 linkType: hard44124413"mocha@npm:^10.1.0":4414 version: 10.2.04415 resolution: "mocha@npm:10.2.0"4416 dependencies:4417 ansi-colors: 4.1.14418 browser-stdout: 1.3.14419 chokidar: 3.5.34420 debug: 4.3.44421 diff: 5.0.04422 escape-string-regexp: 4.0.04423 find-up: 5.0.04424 glob: 7.2.04425 he: 1.2.04426 js-yaml: 4.1.04427 log-symbols: 4.1.04428 minimatch: 5.0.14429 ms: 2.1.34430 nanoid: 3.3.34431 serialize-javascript: 6.0.04432 strip-json-comments: 3.1.14433 supports-color: 8.1.14434 workerpool: 6.2.14435 yargs: 16.2.04436 yargs-parser: 20.2.44437 yargs-unparser: 2.0.04438 bin:4439 _mocha: bin/_mocha4440 mocha: bin/mocha.js4441 checksum: 406c45eab122ffd6ea2003c2f108b2bc35ba036225eee78e0c784b6fa2c7f34e2b13f1dbacef55a4fdf523255d76e4f22d1b5aacda2394bd11666febec17c7194442 languageName: node4443 linkType: hard44444445"mock-fs@npm:^4.1.0":4446 version: 4.14.04447 resolution: "mock-fs@npm:4.14.0"4448 checksum: dccd976a8d753e19d3c7602ea422d1f7137def3c1128c177e1f5500fe8c50ec15fe0937cfc3a15c4577fe7adb9a37628b92da9294d13d90f08be4b669b0fca764449 languageName: node4450 linkType: hard44514452"mock-socket@npm:^9.3.1":4453 version: 9.3.14454 resolution: "mock-socket@npm:9.3.1"4455 checksum: cb2dde4fc5dde280dd5ccb78eaaa223382ee16437f46b86558017655584ad08c22e733bde2dd5cc86927def506b6caeb0147e3167b9a62d70d5cf19d441038534456 languageName: node4457 linkType: hard44584459"ms@npm:2.0.0":4460 version: 2.0.04461 resolution: "ms@npm:2.0.0"4462 checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f44463 languageName: node4464 linkType: hard44654466"ms@npm:2.1.2":4467 version: 2.1.24468 resolution: "ms@npm:2.1.2"4469 checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f4470 languageName: node4471 linkType: hard44724473"ms@npm:2.1.3":4474 version: 2.1.34475 resolution: "ms@npm:2.1.3"4476 checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d4477 languageName: node4478 linkType: hard44794480"multibase@npm:^0.7.0":4481 version: 0.7.04482 resolution: "multibase@npm:0.7.0"4483 dependencies:4484 base-x: ^3.0.84485 buffer: ^5.5.04486 checksum: 3a520897d706b3064b59ddee286a9e1a5b35bb19bd830f93d7ddecdbf69fa46648c8fda0fec49a5d4640b8b7ac9d5fe360417d6de2906599aa535f55bf6b8e584487 languageName: node4488 linkType: hard44894490"multibase@npm:~0.6.0":4491 version: 0.6.14492 resolution: "multibase@npm:0.6.1"4493 dependencies:4494 base-x: ^3.0.84495 buffer: ^5.5.04496 checksum: 0e25a978d2b5cf73e4cce31d032bad85230ea99e9394d259210f676a76539316e7c51bd7dcc9d83523ec7ea1f0e7a3353c5f69397639d78be9acbefa29431faa4497 languageName: node4498 linkType: hard44994500"multicodec@npm:^0.5.5":4501 version: 0.5.74502 resolution: "multicodec@npm:0.5.7"4503 dependencies:4504 varint: ^5.0.04505 checksum: 5af1febc3bb5381c303c964a4c3bacb9d0d16615599426d58c68722c46e66a7085082995479943084322028324ad692cd70ea14b5eefb2791d325fa00ead04a34506 languageName: node4507 linkType: hard45084509"multicodec@npm:^1.0.0":4510 version: 1.0.44511 resolution: "multicodec@npm:1.0.4"4512 dependencies:4513 buffer: ^5.6.04514 varint: ^5.0.04515 checksum: e6a2916fa76c023b1c90b32ae74f8a781cf0727f71660b245a5ed1db46add6f2ce1586bee5713b16caf0a724e81bfe0678d89910c20d3bb5fd9649dacb2be79e4516 languageName: node4517 linkType: hard45184519"multihashes@npm:^0.4.15, multihashes@npm:~0.4.15":4520 version: 0.4.214521 resolution: "multihashes@npm:0.4.21"4522 dependencies:4523 buffer: ^5.5.04524 multibase: ^0.7.04525 varint: ^5.0.04526 checksum: 688731560cf7384e899dc75c0da51e426eb7d058c5ea5eb57b224720a1108deb8797f1cd7f45599344d512d2877de99dd6a7b7773a095812365dea4ffe6ebd4c4527 languageName: node4528 linkType: hard45294530"nano-json-stream-parser@npm:^0.1.2":4531 version: 0.1.24532 resolution: "nano-json-stream-parser@npm:0.1.2"4533 checksum: 5bfe146358c659e0aa7d5e0003416be929c9bd02ba11b1e022b78dddf25be655e33d810249c1687d2c9abdcee5cd4d00856afd1b266a5a127236c0d16416d33a4534 languageName: node4535 linkType: hard45364537"nanoid@npm:3.3.3":4538 version: 3.3.34539 resolution: "nanoid@npm:3.3.3"4540 bin:4541 nanoid: bin/nanoid.cjs4542 checksum: ada019402a07464a694553c61d2dca8a4353645a7d92f2830f0d487fedff403678a0bee5323a46522752b2eab95a0bc3da98b6cccaa7c0c55cd9975130e6d6f04543 languageName: node4544 linkType: hard45454546"natural-compare@npm:^1.4.0":4547 version: 1.4.04548 resolution: "natural-compare@npm:1.4.0"4549 checksum: 23ad088b08f898fc9b53011d7bb78ec48e79de7627e01ab5518e806033861bef68d5b0cd0e2205c2f36690ac9571ff6bcb05eb777ced2eeda8d4ac5b44592c3d4550 languageName: node4551 linkType: hard45524553"negotiator@npm:0.6.3, negotiator@npm:^0.6.3":4554 version: 0.6.34555 resolution: "negotiator@npm:0.6.3"4556 checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d94557 languageName: node4558 linkType: hard45594560"neo-async@npm:^2.6.2":4561 version: 2.6.24562 resolution: "neo-async@npm:2.6.2"4563 checksum: deac9f8d00eda7b2e5cd1b2549e26e10a0faa70adaa6fdadca701cc55f49ee9018e427f424bac0c790b7c7e2d3068db97f3093f1093975f2acb8f8818b936ed94564 languageName: node4565 linkType: hard45664567"next-tick@npm:^1.1.0":4568 version: 1.1.04569 resolution: "next-tick@npm:1.1.0"4570 checksum: 83b5cf36027a53ee6d8b7f9c0782f2ba87f4858d977342bfc3c20c21629290a2111f8374d13a81221179603ffc4364f38374b5655d17b6a8f8a8c77bdea4fe8b4571 languageName: node4572 linkType: hard45734574"nock@npm:^13.3.4":4575 version: 13.3.74576 resolution: "nock@npm:13.3.7"4577 dependencies:4578 debug: ^4.1.04579 json-stringify-safe: ^5.0.14580 propagate: ^2.0.04581 checksum: 837db0755208781000ec7d8cf5e28eaedae31e9a06829961621a6b14be710e2c3bfa6104dc638828ff4455d603d0e3639cfd2e61dce6015c0fd8108eb8c4b75a4582 languageName: node4583 linkType: hard45844585"node-addon-api@npm:^2.0.0":4586 version: 2.0.24587 resolution: "node-addon-api@npm:2.0.2"4588 dependencies:4589 node-gyp: latest4590 checksum: 31fb22d674648204f8dd94167eb5aac896c841b84a9210d614bf5d97c74ef059cc6326389cf0c54d2086e35312938401d4cc82e5fcd679202503eb8ac84814f84591 languageName: node4592 linkType: hard45934594"node-domexception@npm:^1.0.0":4595 version: 1.0.04596 resolution: "node-domexception@npm:1.0.0"4597 checksum: ee1d37dd2a4eb26a8a92cd6b64dfc29caec72bff5e1ed9aba80c294f57a31ba4895a60fd48347cf17dd6e766da0ae87d75657dfd1f384ebfa60462c2283f5c7f4598 languageName: node4599 linkType: hard46004601"node-fetch@npm:^2.6.12":4602 version: 2.7.04603 resolution: "node-fetch@npm:2.7.0"4604 dependencies:4605 whatwg-url: ^5.0.04606 peerDependencies:4607 encoding: ^0.1.04608 peerDependenciesMeta:4609 encoding:4610 optional: true4611 checksum: d76d2f5edb451a3f05b15115ec89fc6be39de37c6089f1b6368df03b91e1633fd379a7e01b7ab05089a25034b2023d959b47e59759cb38d88341b2459e89d6e54612 languageName: node4613 linkType: hard46144615"node-fetch@npm:^3.3.2":4616 version: 3.3.24617 resolution: "node-fetch@npm:3.3.2"4618 dependencies:4619 data-uri-to-buffer: ^4.0.04620 fetch-blob: ^3.1.44621 formdata-polyfill: ^4.0.104622 checksum: 06a04095a2ddf05b0830a0d5302699704d59bda3102894ea64c7b9d4c865ecdff2d90fd042df7f5bc40337266961cb6183dcc808ea4f3000d024f422b462da924623 languageName: node4624 linkType: hard46254626"node-gyp-build@npm:^4.2.0, node-gyp-build@npm:^4.3.0":4627 version: 4.6.14628 resolution: "node-gyp-build@npm:4.6.1"4629 bin:4630 node-gyp-build: bin.js4631 node-gyp-build-optional: optional.js4632 node-gyp-build-test: build-test.js4633 checksum: c3676d337b36803bc7792e35bf7fdcda7cdcb7e289b8f9855a5535702a82498eb976842fefcf487258c58005ca32ce3d537fbed91280b04409161dcd7232a8824634 languageName: node4635 linkType: hard46364637"node-gyp@npm:latest":4638 version: 10.0.04639 resolution: "node-gyp@npm:10.0.0"4640 dependencies:4641 env-paths: ^2.2.04642 exponential-backoff: ^3.1.14643 glob: ^10.3.104644 graceful-fs: ^4.2.64645 make-fetch-happen: ^13.0.04646 nopt: ^7.0.04647 proc-log: ^3.0.04648 semver: ^7.3.54649 tar: ^6.1.24650 which: ^4.0.04651 bin:4652 node-gyp: bin/node-gyp.js4653 checksum: 65fa5d9f8ef03fa22c5f2d34da23435a63d3743400ca941a4394eb943cf340796456697a7797af1451606dbbeecb663be9328995dadc0b99e58dd583dc3a7a0f4654 languageName: node4655 linkType: hard46564657"nopt@npm:^7.0.0":4658 version: 7.2.04659 resolution: "nopt@npm:7.2.0"4660 dependencies:4661 abbrev: ^2.0.04662 bin:4663 nopt: bin/nopt.js4664 checksum: a9c0f57fb8cb9cc82ae47192ca2b7ef00e199b9480eed202482c962d61b59a7fbe7541920b2a5839a97b42ee39e288c0aed770e38057a608d7f579389dfde4104665 languageName: node4666 linkType: hard46674668"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0":4669 version: 3.0.04670 resolution: "normalize-path@npm:3.0.0"4671 checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec204672 languageName: node4673 linkType: hard46744675"normalize-url@npm:^6.0.1":4676 version: 6.1.04677 resolution: "normalize-url@npm:6.1.0"4678 checksum: 4a4944631173e7d521d6b80e4c85ccaeceb2870f315584fa30121f505a6dfd86439c5e3fdd8cd9e0e291290c41d0c3599f0cb12ab356722ed242584c30348e504679 languageName: node4680 linkType: hard46814682"number-to-bn@npm:1.7.0":4683 version: 1.7.04684 resolution: "number-to-bn@npm:1.7.0"4685 dependencies:4686 bn.js: 4.11.64687 strip-hex-prefix: 1.0.04688 checksum: 5b8c9dbe7b49dc7a069e5f0ba4e197257c89db11463478cb002fee7a34dc8868636952bd9f6310e5fdf22b266e0e6dffb5f9537c741734718107e90ae59b3de44689 languageName: node4690 linkType: hard46914692"oauth-sign@npm:~0.9.0":4693 version: 0.9.04694 resolution: "oauth-sign@npm:0.9.0"4695 checksum: 8f5497a127967866a3c67094c21efd295e46013a94e6e828573c62220e9af568cc1d2d04b16865ba583e430510fa168baf821ea78f355146d8ed7e350fc44c644696 languageName: node4697 linkType: hard46984699"object-assign@npm:^4, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1":4700 version: 4.1.14701 resolution: "object-assign@npm:4.1.1"4702 checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f4703 languageName: node4704 linkType: hard47054706"object-inspect@npm:^1.9.0":4707 version: 1.13.14708 resolution: "object-inspect@npm:1.13.1"4709 checksum: 7d9fa9221de3311dcb5c7c307ee5dc011cdd31dc43624b7c184b3840514e118e05ef0002be5388304c416c0eb592feb46e983db12577fc47e47d5752fbbfb61f4710 languageName: node4711 linkType: hard47124713"oboe@npm:2.1.5":4714 version: 2.1.54715 resolution: "oboe@npm:2.1.5"4716 dependencies:4717 http-https: ^1.0.04718 checksum: e6171b33645ffc3559688a824a461952380d0b8f6a203b2daf6767647f277554a73fd7ad795629d88cd8eab68c0460aabb1e1b8b52ef80e3ff7621ac39f832ed4719 languageName: node4720 linkType: hard47214722"on-finished@npm:2.4.1":4723 version: 2.4.14724 resolution: "on-finished@npm:2.4.1"4725 dependencies:4726 ee-first: 1.1.14727 checksum: d20929a25e7f0bb62f937a425b5edeb4e4cde0540d77ba146ec9357f00b0d497cdb3b9b05b9c8e46222407d1548d08166bff69cc56dfa55ba0e4469228920ff04728 languageName: node4729 linkType: hard47304731"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0":4732 version: 1.4.04733 resolution: "once@npm:1.4.0"4734 dependencies:4735 wrappy: 14736 checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db684737 languageName: node4738 linkType: hard47394740"optionator@npm:^0.9.3":4741 version: 0.9.34742 resolution: "optionator@npm:0.9.3"4743 dependencies:4744 "@aashutoshrathi/word-wrap": ^1.2.34745 deep-is: ^0.1.34746 fast-levenshtein: ^2.0.64747 levn: ^0.4.14748 prelude-ls: ^1.2.14749 type-check: ^0.4.04750 checksum: 09281999441f2fe9c33a5eeab76700795365a061563d66b098923eb719251a42bdbe432790d35064d0816ead9296dbeb1ad51a733edf4167c96bd5d0882e428a4751 languageName: node4752 linkType: hard47534754"os-tmpdir@npm:~1.0.2":4755 version: 1.0.24756 resolution: "os-tmpdir@npm:1.0.2"4757 checksum: 5666560f7b9f10182548bf7013883265be33620b1c1b4a4d405c25be2636f970c5488ff3e6c48de75b55d02bde037249fe5dbfbb4c0fb7714953d56aed062e6d4758 languageName: node4759 linkType: hard47604761"p-cancelable@npm:^2.0.0":4762 version: 2.1.14763 resolution: "p-cancelable@npm:2.1.1"4764 checksum: 3dba12b4fb4a1e3e34524535c7858fc82381bbbd0f247cc32dedc4018592a3950ce66b106d0880b4ec4c2d8d6576f98ca885dc1d7d0f274d1370be20e9523ddf4765 languageName: node4766 linkType: hard47674768"p-cancelable@npm:^3.0.0":4769 version: 3.0.04770 resolution: "p-cancelable@npm:3.0.0"4771 checksum: 2b5ae34218f9c2cf7a7c18e5d9a726ef9b165ef07e6c959f6738371509e747334b5f78f3bcdeb03d8a12dcb978faf641fd87eb21486ed7d36fb823b8ddef32194772 languageName: node4773 linkType: hard47744775"p-limit@npm:^3.0.2":4776 version: 3.1.04777 resolution: "p-limit@npm:3.1.0"4778 dependencies:4779 yocto-queue: ^0.1.04780 checksum: 7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c0664303604781 languageName: node4782 linkType: hard47834784"p-locate@npm:^5.0.0":4785 version: 5.0.04786 resolution: "p-locate@npm:5.0.0"4787 dependencies:4788 p-limit: ^3.0.24789 checksum: 1623088f36cf1cbca58e9b61c4e62bf0c60a07af5ae1ca99a720837356b5b6c5ba3eb1b2127e47a06865fee59dd0453cad7cc844cda9d5a62ac1a5a51b7c86d34790 languageName: node4791 linkType: hard47924793"p-map@npm:^4.0.0":4794 version: 4.0.04795 resolution: "p-map@npm:4.0.0"4796 dependencies:4797 aggregate-error: ^3.0.04798 checksum: cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c4799 languageName: node4800 linkType: hard48014802"parent-module@npm:^1.0.0":4803 version: 1.0.14804 resolution: "parent-module@npm:1.0.1"4805 dependencies:4806 callsites: ^3.0.04807 checksum: 6ba8b255145cae9470cf5551eb74be2d22281587af787a2626683a6c20fbb464978784661478dd2a3f1dad74d1e802d403e1b03c1a31fab310259eec8ac560ff4808 languageName: node4809 linkType: hard48104811"parse-headers@npm:^2.0.0":4812 version: 2.0.54813 resolution: "parse-headers@npm:2.0.5"4814 checksum: 3e97f01e4c7f960bfbfd0ee489f0bd8d3c72b6c814f1f79b66abec2cca8eaf8e4ecd89deba0b6e61266469aed87350bc932001181c01ff8c29a59e696abe251f4815 languageName: node4816 linkType: hard48174818"parseurl@npm:~1.3.3":4819 version: 1.3.34820 resolution: "parseurl@npm:1.3.3"4821 checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa24822 languageName: node4823 linkType: hard48244825"path-exists@npm:^4.0.0":4826 version: 4.0.04827 resolution: "path-exists@npm:4.0.0"4828 checksum: 505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed14829 languageName: node4830 linkType: hard48314832"path-is-absolute@npm:^1.0.0":4833 version: 1.0.14834 resolution: "path-is-absolute@npm:1.0.1"4835 checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b84836 languageName: node4837 linkType: hard48384839"path-key@npm:^3.1.0":4840 version: 3.1.14841 resolution: "path-key@npm:3.1.1"4842 checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a7400204843 languageName: node4844 linkType: hard48454846"path-scurry@npm:^1.10.1":4847 version: 1.10.14848 resolution: "path-scurry@npm:1.10.1"4849 dependencies:4850 lru-cache: ^9.1.1 || ^10.0.04851 minipass: ^5.0.0 || ^6.0.2 || ^7.0.04852 checksum: e2557cff3a8fb8bc07afdd6ab163a92587884f9969b05bbbaf6fe7379348bfb09af9ed292af12ed32398b15fb443e81692047b786d1eeb6d898a51eb17ed7d904853 languageName: node4854 linkType: hard48554856"path-to-regexp@npm:0.1.7":4857 version: 0.1.74858 resolution: "path-to-regexp@npm:0.1.7"4859 checksum: 69a14ea24db543e8b0f4353305c5eac6907917031340e5a8b37df688e52accd09e3cebfe1660b70d76b6bd89152f52183f28c74813dbf454ba1a01c82a38abce4860 languageName: node4861 linkType: hard48624863"path-type@npm:^4.0.0":4864 version: 4.0.04865 resolution: "path-type@npm:4.0.0"4866 checksum: 5b1e2daa247062061325b8fdbfd1fb56dde0a448fb1455453276ea18c60685bdad23a445dc148cf87bc216be1573357509b7d4060494a6fd768c7efad833ee454867 languageName: node4868 linkType: hard48694870"pathval@npm:^1.1.1":4871 version: 1.1.14872 resolution: "pathval@npm:1.1.1"4873 checksum: 090e3147716647fb7fb5b4b8c8e5b55e5d0a6086d085b6cd23f3d3c01fcf0ff56fd3cc22f2f4a033bd2e46ed55d61ed8379e123b42afe7d531a2a5fc8bb556d64874 languageName: node4875 linkType: hard48764877"pbkdf2@npm:^3.0.17":4878 version: 3.1.24879 resolution: "pbkdf2@npm:3.1.2"4880 dependencies:4881 create-hash: ^1.1.24882 create-hmac: ^1.1.44883 ripemd160: ^2.0.14884 safe-buffer: ^5.0.14885 sha.js: ^2.4.84886 checksum: 2c950a100b1da72123449208e231afc188d980177d021d7121e96a2de7f2abbc96ead2b87d03d8fe5c318face097f203270d7e27908af9f471c165a4e8e69c924887 languageName: node4888 linkType: hard48894890"performance-now@npm:^2.1.0":4891 version: 2.1.04892 resolution: "performance-now@npm:2.1.0"4893 checksum: 534e641aa8f7cba160f0afec0599b6cecefbb516a2e837b512be0adbe6c1da5550e89c78059c7fabc5c9ffdf6627edabe23eb7c518c4500067a898fa65c2b5504894 languageName: node4895 linkType: hard48964897"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1":4898 version: 2.3.14899 resolution: "picomatch@npm:2.3.1"4900 checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf4901 languageName: node4902 linkType: hard49034904"prelude-ls@npm:^1.2.1":4905 version: 1.2.14906 resolution: "prelude-ls@npm:1.2.1"4907 checksum: cd192ec0d0a8e4c6da3bb80e4f62afe336df3f76271ac6deb0e6a36187133b6073a19e9727a1ff108cd8b9982e4768850d413baa71214dd80c7979617dca827a4908 languageName: node4909 linkType: hard49104911"prettier@npm:^2.3.1":4912 version: 2.8.84913 resolution: "prettier@npm:2.8.8"4914 bin:4915 prettier: bin-prettier.js4916 checksum: b49e409431bf129dd89238d64299ba80717b57ff5a6d1c1a8b1a28b590d998a34e083fa13573bc732bb8d2305becb4c9a4407f8486c81fa7d55100eb08263cf84917 languageName: node4918 linkType: hard49194920"proc-log@npm:^3.0.0":4921 version: 3.0.04922 resolution: "proc-log@npm:3.0.0"4923 checksum: 02b64e1b3919e63df06f836b98d3af002b5cd92655cab18b5746e37374bfb73e03b84fe305454614b34c25b485cc687a9eebdccf0242cda8fda2475dd2c97e024924 languageName: node4925 linkType: hard49264927"process@npm:^0.11.10":4928 version: 0.11.104929 resolution: "process@npm:0.11.10"4930 checksum: bfcce49814f7d172a6e6a14d5fa3ac92cc3d0c3b9feb1279774708a719e19acd673995226351a082a9ae99978254e320ccda4240ddc474ba31a76c79491ca7c34931 languageName: node4932 linkType: hard49334934"promise-retry@npm:^2.0.1":4935 version: 2.0.14936 resolution: "promise-retry@npm:2.0.1"4937 dependencies:4938 err-code: ^2.0.24939 retry: ^0.12.04940 checksum: f96a3f6d90b92b568a26f71e966cbbc0f63ab85ea6ff6c81284dc869b41510e6cdef99b6b65f9030f0db422bf7c96652a3fff9f2e8fb4a0f069d8f44303594294941 languageName: node4942 linkType: hard49434944"propagate@npm:^2.0.0":4945 version: 2.0.14946 resolution: "propagate@npm:2.0.1"4947 checksum: c4febaee2be0979e82fb6b3727878fd122a98d64a7fa3c9d09b0576751b88514a9e9275b1b92e76b364d488f508e223bd7e1dcdc616be4cdda876072fbc2a96c4948 languageName: node4949 linkType: hard49504951"proxy-addr@npm:~2.0.7":4952 version: 2.0.74953 resolution: "proxy-addr@npm:2.0.7"4954 dependencies:4955 forwarded: 0.2.04956 ipaddr.js: 1.9.14957 checksum: 29c6990ce9364648255454842f06f8c46fcd124d3e6d7c5066df44662de63cdc0bad032e9bf5a3d653ff72141cc7b6019873d685708ac8210c30458ad99f2b744958 languageName: node4959 linkType: hard49604961"psl@npm:^1.1.28":4962 version: 1.9.04963 resolution: "psl@npm:1.9.0"4964 checksum: 20c4277f640c93d393130673f392618e9a8044c6c7bf61c53917a0fddb4952790f5f362c6c730a9c32b124813e173733f9895add8d26f566ed0ea0654b2e711d4965 languageName: node4966 linkType: hard49674968"pump@npm:^3.0.0":4969 version: 3.0.04970 resolution: "pump@npm:3.0.0"4971 dependencies:4972 end-of-stream: ^1.1.04973 once: ^1.3.14974 checksum: e42e9229fba14732593a718b04cb5e1cfef8254544870997e0ecd9732b189a48e1256e4e5478148ecb47c8511dca2b09eae56b4d0aad8009e6fac8072923cfc94975 languageName: node4976 linkType: hard49774978"punycode@npm:2.1.0":4979 version: 2.1.04980 resolution: "punycode@npm:2.1.0"4981 checksum: d125d8f86cd89303c33bad829388c49ca23197e16ccf8cd398dcbd81b026978f6543f5066c66825b25b1dfea7790a42edbeea82908e103474931789714ab86cd4982 languageName: node4983 linkType: hard49844985"punycode@npm:^2.1.0, punycode@npm:^2.1.1":4986 version: 2.3.14987 resolution: "punycode@npm:2.3.1"4988 checksum: bb0a0ceedca4c3c57a9b981b90601579058903c62be23c5e8e843d2c2d4148a3ecf029d5133486fb0e1822b098ba8bba09e89d6b21742d02fa26bda6441a6fb24989 languageName: node4990 linkType: hard49914992"qs@npm:6.11.0":4993 version: 6.11.04994 resolution: "qs@npm:6.11.0"4995 dependencies:4996 side-channel: ^1.0.44997 checksum: 6e1f29dd5385f7488ec74ac7b6c92f4d09a90408882d0c208414a34dd33badc1a621019d4c799a3df15ab9b1d0292f97c1dd71dc7c045e69f81a8064e5af72974998 languageName: node4999 linkType: hard50005001"qs@npm:~6.5.2":5002 version: 6.5.35003 resolution: "qs@npm:6.5.3"5004 checksum: 6f20bf08cabd90c458e50855559539a28d00b2f2e7dddcb66082b16a43188418cb3cb77cbd09268bcef6022935650f0534357b8af9eeb29bf0f27ccb176556925005 languageName: node5006 linkType: hard50075008"query-string@npm:^5.0.1":5009 version: 5.1.15010 resolution: "query-string@npm:5.1.1"5011 dependencies:5012 decode-uri-component: ^0.2.05013 object-assign: ^4.1.05014 strict-uri-encode: ^1.0.05015 checksum: 4ac760d9778d413ef5f94f030ed14b1a07a1708dd13fd3bc54f8b9ef7b425942c7577f30de0bf5a7d227ee65a9a0350dfa3a43d1d266880882fb7ce4c434a4dd5016 languageName: node5017 linkType: hard50185019"queue-microtask@npm:^1.2.2":5020 version: 1.2.35021 resolution: "queue-microtask@npm:1.2.3"5022 checksum: b676f8c040cdc5b12723ad2f91414d267605b26419d5c821ff03befa817ddd10e238d22b25d604920340fd73efd8ba795465a0377c4adf45a4a41e4234e42dc45023 languageName: node5024 linkType: hard50255026"quick-lru@npm:^5.1.1":5027 version: 5.1.15028 resolution: "quick-lru@npm:5.1.1"5029 checksum: a516faa25574be7947969883e6068dbe4aa19e8ef8e8e0fd96cddd6d36485e9106d85c0041a27153286b0770b381328f4072aa40d3b18a19f5f7d2b78b94b5ed5030 languageName: node5031 linkType: hard50325033"rambda@npm:^7.4.0":5034 version: 7.5.05035 resolution: "rambda@npm:7.5.0"5036 checksum: ad608a9a4160d0b6b0921047cea1329276bf239ff58d439135288712dcdbbf0df47c76591843ad249d89e7c5a9109ce86fe099aa54aef0dc0aa92a9b4dd1b8eb5037 languageName: node5038 linkType: hard50395040"randombytes@npm:^2.1.0":5041 version: 2.1.05042 resolution: "randombytes@npm:2.1.0"5043 dependencies:5044 safe-buffer: ^5.1.05045 checksum: d779499376bd4cbb435ef3ab9a957006c8682f343f14089ed5f27764e4645114196e75b7f6abf1cbd84fd247c0cb0651698444df8c9bf30e62120fbbc52269d65046 languageName: node5047 linkType: hard50485049"range-parser@npm:~1.2.1":5050 version: 1.2.15051 resolution: "range-parser@npm:1.2.1"5052 checksum: 0a268d4fea508661cf5743dfe3d5f47ce214fd6b7dec1de0da4d669dd4ef3d2144468ebe4179049eff253d9d27e719c88dae55be64f954e80135a0cada804ec95053 languageName: node5054 linkType: hard50555056"raw-body@npm:2.5.1":5057 version: 2.5.15058 resolution: "raw-body@npm:2.5.1"5059 dependencies:5060 bytes: 3.1.25061 http-errors: 2.0.05062 iconv-lite: 0.4.245063 unpipe: 1.0.05064 checksum: 5362adff1575d691bb3f75998803a0ffed8c64eabeaa06e54b4ada25a0cd1b2ae7f4f5ec46565d1bec337e08b5ac90c76eaa0758de6f72a633f025d754dec29e5065 languageName: node5066 linkType: hard50675068"raw-body@npm:2.5.2":5069 version: 2.5.25070 resolution: "raw-body@npm:2.5.2"5071 dependencies:5072 bytes: 3.1.25073 http-errors: 2.0.05074 iconv-lite: 0.4.245075 unpipe: 1.0.05076 checksum: ba1583c8d8a48e8fbb7a873fdbb2df66ea4ff83775421bfe21ee120140949ab048200668c47d9ae3880012f6e217052690628cf679ddfbd82c9fc9358d5746765077 languageName: node5078 linkType: hard50795080"readable-stream@npm:^3.6.0":5081 version: 3.6.25082 resolution: "readable-stream@npm:3.6.2"5083 dependencies:5084 inherits: ^2.0.35085 string_decoder: ^1.1.15086 util-deprecate: ^1.0.15087 checksum: bdcbe6c22e846b6af075e32cf8f4751c2576238c5043169a1c221c92ee2878458a816a4ea33f4c67623c0b6827c8a400409bfb3cf0bf3381392d0b1dfb52ac8d5088 languageName: node5089 linkType: hard50905091"readdirp@npm:~3.6.0":5092 version: 3.6.05093 resolution: "readdirp@npm:3.6.0"5094 dependencies:5095 picomatch: ^2.2.15096 checksum: 1ced032e6e45670b6d7352d71d21ce7edf7b9b928494dcaba6f11fba63180d9da6cd7061ebc34175ffda6ff529f481818c962952004d273178acd70f7059b3205097 languageName: node5098 linkType: hard50995100"reduce-flatten@npm:^2.0.0":5101 version: 2.0.05102 resolution: "reduce-flatten@npm:2.0.0"5103 checksum: 64393ef99a16b20692acfd60982d7fdbd7ff8d9f8f185c6023466444c6dd2abb929d67717a83cec7f7f8fb5f46a25d515b3b2bf2238fdbfcdbfd01d2a9e73cb85104 languageName: node5105 linkType: hard51065107"request@npm:^2.79.0":5108 version: 2.88.25109 resolution: "request@npm:2.88.2"5110 dependencies:5111 aws-sign2: ~0.7.05112 aws4: ^1.8.05113 caseless: ~0.12.05114 combined-stream: ~1.0.65115 extend: ~3.0.25116 forever-agent: ~0.6.15117 form-data: ~2.3.25118 har-validator: ~5.1.35119 http-signature: ~1.2.05120 is-typedarray: ~1.0.05121 isstream: ~0.1.25122 json-stringify-safe: ~5.0.15123 mime-types: ~2.1.195124 oauth-sign: ~0.9.05125 performance-now: ^2.1.05126 qs: ~6.5.25127 safe-buffer: ^5.1.25128 tough-cookie: ~2.5.05129 tunnel-agent: ^0.6.05130 uuid: ^3.3.25131 checksum: 4e112c087f6eabe7327869da2417e9d28fcd0910419edd2eb17b6acfc4bfa1dad61954525949c228705805882d8a98a86a0ea12d7f739c01ee92af70629969835132 languageName: node5133 linkType: hard51345135"require-directory@npm:^2.1.1":5136 version: 2.1.15137 resolution: "require-directory@npm:2.1.1"5138 checksum: fb47e70bf0001fdeabdc0429d431863e9475e7e43ea5f94ad86503d918423c1543361cc5166d713eaa7029dd7a3d34775af04764bebff99ef413111a5af18c805139 languageName: node5140 linkType: hard51415142"resolve-alpn@npm:^1.0.0, resolve-alpn@npm:^1.2.0":5143 version: 1.2.15144 resolution: "resolve-alpn@npm:1.2.1"5145 checksum: f558071fcb2c60b04054c99aebd572a2af97ef64128d59bef7ab73bd50d896a222a056de40ffc545b633d99b304c259ea9d0c06830d5c867c34f0bfa60b8eae05146 languageName: node5147 linkType: hard51485149"resolve-from@npm:^4.0.0":5150 version: 4.0.05151 resolution: "resolve-from@npm:4.0.0"5152 checksum: f4ba0b8494846a5066328ad33ef8ac173801a51739eb4d63408c847da9a2e1c1de1e6cbbf72699211f3d13f8fc1325648b169bd15eb7da35688e30a5fb0e4a7f5153 languageName: node5154 linkType: hard51555156"responselike@npm:^2.0.0":5157 version: 2.0.15158 resolution: "responselike@npm:2.0.1"5159 dependencies:5160 lowercase-keys: ^2.0.05161 checksum: b122535466e9c97b55e69c7f18e2be0ce3823c5d47ee8de0d9c0b114aa55741c6db8bfbfce3766a94d1272e61bfb1ebf0a15e9310ac5629fbb7446a861b4fd3a5162 languageName: node5163 linkType: hard51645165"retry@npm:^0.12.0":5166 version: 0.12.05167 resolution: "retry@npm:0.12.0"5168 checksum: 623bd7d2e5119467ba66202d733ec3c2e2e26568074923bc0585b6b99db14f357e79bdedb63cab56cec47491c4a0da7e6021a7465ca6dc4f481d3898fdd3158c5169 languageName: node5170 linkType: hard51715172"reusify@npm:^1.0.4":5173 version: 1.0.45174 resolution: "reusify@npm:1.0.4"5175 checksum: c3076ebcc22a6bc252cb0b9c77561795256c22b757f40c0d8110b1300723f15ec0fc8685e8d4ea6d7666f36c79ccc793b1939c748bf36f18f542744a4e379fcc5176 languageName: node5177 linkType: hard51785179"rimraf@npm:^3.0.2":5180 version: 3.0.25181 resolution: "rimraf@npm:3.0.2"5182 dependencies:5183 glob: ^7.1.35184 bin:5185 rimraf: bin.js5186 checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a05187 languageName: node5188 linkType: hard51895190"ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1":5191 version: 2.0.25192 resolution: "ripemd160@npm:2.0.2"5193 dependencies:5194 hash-base: ^3.0.05195 inherits: ^2.0.15196 checksum: 006accc40578ee2beae382757c4ce2908a826b27e2b079efdcd2959ee544ddf210b7b5d7d5e80467807604244e7388427330f5c6d4cd61e6edaddc5773ccc3935197 languageName: node5198 linkType: hard51995200"rlp@npm:^2.2.4":5201 version: 2.2.75202 resolution: "rlp@npm:2.2.7"5203 dependencies:5204 bn.js: ^5.2.05205 bin:5206 rlp: bin/rlp5207 checksum: 3db4dfe5c793f40ac7e0be689a1f75d05e6f2ca0c66189aeb62adab8c436b857ab4420a419251ee60370d41d957a55698fc5e23ab1e1b41715f33217bc4bb5585208 languageName: node5209 linkType: hard52105211"run-parallel@npm:^1.1.9":5212 version: 1.2.05213 resolution: "run-parallel@npm:1.2.0"5214 dependencies:5215 queue-microtask: ^1.2.25216 checksum: cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d5217 languageName: node5218 linkType: hard52195220"rxjs@npm:^7.8.1":5221 version: 7.8.15222 resolution: "rxjs@npm:7.8.1"5223 dependencies:5224 tslib: ^2.1.05225 checksum: de4b53db1063e618ec2eca0f7965d9137cabe98cf6be9272efe6c86b47c17b987383df8574861bcced18ebd590764125a901d5506082be84a8b8e364bf05f1195226 languageName: node5227 linkType: hard52285229"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0":5230 version: 5.2.15231 resolution: "safe-buffer@npm:5.2.1"5232 checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd4915233 languageName: node5234 linkType: hard52355236"safe-buffer@npm:~5.1.0":5237 version: 5.1.25238 resolution: "safe-buffer@npm:5.1.2"5239 checksum: f2f1f7943ca44a594893a852894055cf619c1fbcb611237fc39e461ae751187e7baf4dc391a72125e0ac4fb2d8c5c0b3c71529622e6a58f46b960211e704903c5240 languageName: node5241 linkType: hard52425243"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.0.2, safer-buffer@npm:^2.1.0, safer-buffer@npm:~2.1.0":5244 version: 2.1.25245 resolution: "safer-buffer@npm:2.1.2"5246 checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b05247 languageName: node5248 linkType: hard52495250"scrypt-js@npm:^3.0.0, scrypt-js@npm:^3.0.1":5251 version: 3.0.15252 resolution: "scrypt-js@npm:3.0.1"5253 checksum: b7c7d1a68d6ca946f2fbb0778e0c4ec63c65501b54023b2af7d7e9f48fdb6c6580d6f7675cd53bda5944c5ebc057560d5a6365079752546865defb3b79dea4545254 languageName: node5255 linkType: hard52565257"secp256k1@npm:^4.0.1":5258 version: 4.0.35259 resolution: "secp256k1@npm:4.0.3"5260 dependencies:5261 elliptic: ^6.5.45262 node-addon-api: ^2.0.05263 node-gyp: latest5264 node-gyp-build: ^4.2.05265 checksum: 21e219adc0024fbd75021001358780a3cc6ac21273c3fcaef46943af73969729709b03f1df7c012a0baab0830fb9a06ccc6b42f8d50050c665cb98078eab477b5266 languageName: node5267 linkType: hard52685269"semver@npm:^5.5.0":5270 version: 5.7.25271 resolution: "semver@npm:5.7.2"5272 bin:5273 semver: bin/semver5274 checksum: fb4ab5e0dd1c22ce0c937ea390b4a822147a9c53dbd2a9a0132f12fe382902beef4fbf12cf51bb955248d8d15874ce8cd89532569756384f994309825f10b6865275 languageName: node5276 linkType: hard52775278"semver@npm:^7.3.5, semver@npm:^7.5.4":5279 version: 7.5.45280 resolution: "semver@npm:7.5.4"5281 dependencies:5282 lru-cache: ^6.0.05283 bin:5284 semver: bin/semver.js5285 checksum: 12d8ad952fa353b0995bf180cdac205a4068b759a140e5d3c608317098b3575ac2f1e09182206bf2eb26120e1c0ed8fb92c48c592f6099680de56bb071423ca35286 languageName: node5287 linkType: hard52885289"send@npm:0.18.0":5290 version: 0.18.05291 resolution: "send@npm:0.18.0"5292 dependencies:5293 debug: 2.6.95294 depd: 2.0.05295 destroy: 1.2.05296 encodeurl: ~1.0.25297 escape-html: ~1.0.35298 etag: ~1.8.15299 fresh: 0.5.25300 http-errors: 2.0.05301 mime: 1.6.05302 ms: 2.1.35303 on-finished: 2.4.15304 range-parser: ~1.2.15305 statuses: 2.0.15306 checksum: 74fc07ebb58566b87b078ec63e5a3e41ecd987e4272ba67b7467e86c6ad51bc6b0b0154133b6d8b08a2ddda360464f71382f7ef864700f34844a76c8027817a85307 languageName: node5308 linkType: hard53095310"serialize-javascript@npm:6.0.0":5311 version: 6.0.05312 resolution: "serialize-javascript@npm:6.0.0"5313 dependencies:5314 randombytes: ^2.1.05315 checksum: 56f90b562a1bdc92e55afb3e657c6397c01a902c588c0fe3d4c490efdcc97dcd2a3074ba12df9e94630f33a5ce5b76a74784a7041294628a6f4306e0ec84bf935316 languageName: node5317 linkType: hard53185319"serve-static@npm:1.15.0":5320 version: 1.15.05321 resolution: "serve-static@npm:1.15.0"5322 dependencies:5323 encodeurl: ~1.0.25324 escape-html: ~1.0.35325 parseurl: ~1.3.35326 send: 0.18.05327 checksum: af57fc13be40d90a12562e98c0b7855cf6e8bd4c107fe9a45c212bf023058d54a1871b1c89511c3958f70626fff47faeb795f5d83f8cf88514dbaeb2b724464d5328 languageName: node5329 linkType: hard53305331"servify@npm:^0.1.12":5332 version: 0.1.125333 resolution: "servify@npm:0.1.12"5334 dependencies:5335 body-parser: ^1.16.05336 cors: ^2.8.15337 express: ^4.14.05338 request: ^2.79.05339 xhr: ^2.3.35340 checksum: f90e8f4e31b2981b31e3fa8be0b570b0876136b4cf818ba3bfb65e1bfb3c54cb90a0c30898a7c2974b586800bd26ff525c838a8c170148d9e6674c2170f535d85341 languageName: node5342 linkType: hard53435344"set-function-length@npm:^1.1.1":5345 version: 1.1.15346 resolution: "set-function-length@npm:1.1.1"5347 dependencies:5348 define-data-property: ^1.1.15349 get-intrinsic: ^1.2.15350 gopd: ^1.0.15351 has-property-descriptors: ^1.0.05352 checksum: c131d7569cd7e110cafdfbfbb0557249b538477624dfac4fc18c376d879672fa52563b74029ca01f8f4583a8acb35bb1e873d573a24edb80d978a7ee607c6e065353 languageName: node5354 linkType: hard53555356"setimmediate@npm:^1.0.5":5357 version: 1.0.55358 resolution: "setimmediate@npm:1.0.5"5359 checksum: c9a6f2c5b51a2dabdc0247db9c46460152ffc62ee139f3157440bd48e7c59425093f42719ac1d7931f054f153e2d26cf37dfeb8da17a794a58198a2705e527fd5360 languageName: node5361 linkType: hard53625363"setprototypeof@npm:1.2.0":5364 version: 1.2.05365 resolution: "setprototypeof@npm:1.2.0"5366 checksum: be18cbbf70e7d8097c97f713a2e76edf84e87299b40d085c6bf8b65314e994cc15e2e317727342fa6996e38e1f52c59720b53fe621e2eb593a6847bf0356db895367 languageName: node5368 linkType: hard53695370"sha.js@npm:^2.4.0, sha.js@npm:^2.4.8":5371 version: 2.4.115372 resolution: "sha.js@npm:2.4.11"5373 dependencies:5374 inherits: ^2.0.15375 safe-buffer: ^5.0.15376 bin:5377 sha.js: ./bin.js5378 checksum: ebd3f59d4b799000699097dadb831c8e3da3eb579144fd7eb7a19484cbcbb7aca3c68ba2bb362242eb09e33217de3b4ea56e4678184c334323eca24a58e3ad075379 languageName: node5380 linkType: hard53815382"shebang-command@npm:^2.0.0":5383 version: 2.0.05384 resolution: "shebang-command@npm:2.0.0"5385 dependencies:5386 shebang-regex: ^3.0.05387 checksum: 6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa5388 languageName: node5389 linkType: hard53905391"shebang-regex@npm:^3.0.0":5392 version: 3.0.05393 resolution: "shebang-regex@npm:3.0.0"5394 checksum: 1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af012225395 languageName: node5396 linkType: hard53975398"side-channel@npm:^1.0.4":5399 version: 1.0.45400 resolution: "side-channel@npm:1.0.4"5401 dependencies:5402 call-bind: ^1.0.05403 get-intrinsic: ^1.0.25404 object-inspect: ^1.9.05405 checksum: 351e41b947079c10bd0858364f32bb3a7379514c399edb64ab3dce683933483fc63fb5e4efe0a15a2e8a7e3c436b6a91736ddb8d8c6591b0460a24bb4a1ee2455406 languageName: node5407 linkType: hard54085409"signal-exit@npm:^4.0.1":5410 version: 4.1.05411 resolution: "signal-exit@npm:4.1.0"5412 checksum: 64c757b498cb8629ffa5f75485340594d2f8189e9b08700e69199069c8e3070fb3e255f7ab873c05dc0b3cec412aea7402e10a5990cb6a050bd33ba062a6c5495413 languageName: node5414 linkType: hard54155416"simple-concat@npm:^1.0.0":5417 version: 1.0.15418 resolution: "simple-concat@npm:1.0.1"5419 checksum: 4d211042cc3d73a718c21ac6c4e7d7a0363e184be6a5ad25c8a1502e49df6d0a0253979e3d50dbdd3f60ef6c6c58d756b5d66ac1e05cda9cacd2e9fc59e3876a5420 languageName: node5421 linkType: hard54225423"simple-get@npm:^2.7.0":5424 version: 2.8.25425 resolution: "simple-get@npm:2.8.2"5426 dependencies:5427 decompress-response: ^3.3.05428 once: ^1.3.15429 simple-concat: ^1.0.05430 checksum: 230bd931d3198f21a5a1a566687a5ee1ef651b13b61c7a01b547b2a0c2bf72769b5fe14a3b4dd518e99a18ba1002ba8af3901c0e61e8a0d1e7631a3c2eb1f7a95431 languageName: node5432 linkType: hard54335434"slash@npm:^3.0.0":5435 version: 3.0.05436 resolution: "slash@npm:3.0.0"5437 checksum: 94a93fff615f25a999ad4b83c9d5e257a7280c90a32a7cb8b4a87996e4babf322e469c42b7f649fd5796edd8687652f3fb452a86dc97a816f01113183393f11c5438 languageName: node5439 linkType: hard54405441"smart-buffer@npm:^4.2.0":5442 version: 4.2.05443 resolution: "smart-buffer@npm:4.2.0"5444 checksum: b5167a7142c1da704c0e3af85c402002b597081dd9575031a90b4f229ca5678e9a36e8a374f1814c8156a725d17008ae3bde63b92f9cfd132526379e580bec8b5445 languageName: node5446 linkType: hard54475448"smoldot@npm:2.0.1":5449 version: 2.0.15450 resolution: "smoldot@npm:2.0.1"5451 dependencies:5452 ws: ^8.8.15453 checksum: 77c1f541d039fe740157e9b81e2b13fc72dabe3ffd75644ee9958aee48d5c5458b6cc974d1e9233b1bcf3fde7af42a53a0e48452b6657405c64158a0c8168eee5454 languageName: node5455 linkType: hard54565457"socks-proxy-agent@npm:^8.0.1":5458 version: 8.0.25459 resolution: "socks-proxy-agent@npm:8.0.2"5460 dependencies:5461 agent-base: ^7.0.25462 debug: ^4.3.45463 socks: ^2.7.15464 checksum: 4fb165df08f1f380881dcd887b3cdfdc1aba3797c76c1e9f51d29048be6e494c5b06d68e7aea2e23df4572428f27a3ec22b3d7c75c570c5346507433899a4b6d5465 languageName: node5466 linkType: hard54675468"socks@npm:^2.7.1":5469 version: 2.7.15470 resolution: "socks@npm:2.7.1"5471 dependencies:5472 ip: ^2.0.05473 smart-buffer: ^4.2.05474 checksum: 259d9e3e8e1c9809a7f5c32238c3d4d2a36b39b83851d0f573bfde5f21c4b1288417ce1af06af1452569cd1eb0841169afd4998f0e04ba04656f6b7f0e46d7485475 languageName: node5476 linkType: hard54775478"solc@npm:^0.8.22":5479 version: 0.8.225480 resolution: "solc@npm:0.8.22"5481 dependencies:5482 command-exists: ^1.2.85483 commander: ^8.1.05484 follow-redirects: ^1.12.15485 js-sha3: 0.8.05486 memorystream: ^0.3.15487 semver: ^5.5.05488 tmp: 0.0.335489 bin:5490 solcjs: solc.js5491 checksum: 5713d8599c58b912327e9423e3afe90008b2053b79f232666ba212d52050f9d00e1fe0611a1f8f86c03bdaf74b2548c17be71a84a4c5f761899ab5f4bad003605492 languageName: node5493 linkType: hard54945495"source-map@npm:^0.6.1":5496 version: 0.6.15497 resolution: "source-map@npm:0.6.1"5498 checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc25499 languageName: node5500 linkType: hard55015502"sshpk@npm:^1.7.0":5503 version: 1.18.05504 resolution: "sshpk@npm:1.18.0"5505 dependencies:5506 asn1: ~0.2.35507 assert-plus: ^1.0.05508 bcrypt-pbkdf: ^1.0.05509 dashdash: ^1.12.05510 ecc-jsbn: ~0.1.15511 getpass: ^0.1.15512 jsbn: ~0.1.05513 safer-buffer: ^2.0.25514 tweetnacl: ~0.14.05515 bin:5516 sshpk-conv: bin/sshpk-conv5517 sshpk-sign: bin/sshpk-sign5518 sshpk-verify: bin/sshpk-verify5519 checksum: 01d43374eee3a7e37b3b82fdbecd5518cbb2e47ccbed27d2ae30f9753f22bd6ffad31225cb8ef013bc3fb7785e686cea619203ee1439a228f965558c367c3cfa5520 languageName: node5521 linkType: hard55225523"ssri@npm:^10.0.0":5524 version: 10.0.55525 resolution: "ssri@npm:10.0.5"5526 dependencies:5527 minipass: ^7.0.35528 checksum: 0a31b65f21872dea1ed3f7c200d7bc1c1b91c15e419deca14f282508ba917cbb342c08a6814c7f68ca4ca4116dd1a85da2bbf39227480e50125a1ceffeecb7505529 languageName: node5530 linkType: hard55315532"statuses@npm:2.0.1":5533 version: 2.0.15534 resolution: "statuses@npm:2.0.1"5535 checksum: 18c7623fdb8f646fb213ca4051be4df7efb3484d4ab662937ca6fbef7ced9b9e12842709872eb3020cc3504b93bde88935c9f6417489627a7786f24f8031cbcb5536 languageName: node5537 linkType: hard55385539"strict-uri-encode@npm:^1.0.0":5540 version: 1.1.05541 resolution: "strict-uri-encode@npm:1.1.0"5542 checksum: 9466d371f7b36768d43f7803f26137657559e4c8b0161fb9e320efb8edba3ae22f8e99d4b0d91da023b05a13f62ec5412c3f4f764b5788fac11d1fea93720bb35543 languageName: node5544 linkType: hard55455546"string-format@npm:^2.0.0":5547 version: 2.0.05548 resolution: "string-format@npm:2.0.0"5549 checksum: dada2ef95f6d36c66562c673d95315f80457fa7dce2f3609a2e75d1190b98c88319028cf0a5b6c043d01c18d581b2641579f79480584ba030d6ac6fceb30bc555550 languageName: node5551 linkType: hard55525553"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3":5554 version: 4.2.35555 resolution: "string-width@npm:4.2.3"5556 dependencies:5557 emoji-regex: ^8.0.05558 is-fullwidth-code-point: ^3.0.05559 strip-ansi: ^6.0.15560 checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb5561 languageName: node5562 linkType: hard55635564"string-width@npm:^5.0.1, string-width@npm:^5.1.2":5565 version: 5.1.25566 resolution: "string-width@npm:5.1.2"5567 dependencies:5568 eastasianwidth: ^0.2.05569 emoji-regex: ^9.2.25570 strip-ansi: ^7.0.15571 checksum: 7369deaa29f21dda9a438686154b62c2c5f661f8dda60449088f9f980196f7908fc39fdd1803e3e01541970287cf5deae336798337e9319a7055af89dafa71935572 languageName: node5573 linkType: hard55745575"string_decoder@npm:^1.1.1":5576 version: 1.3.05577 resolution: "string_decoder@npm:1.3.0"5578 dependencies:5579 safe-buffer: ~5.2.05580 checksum: 8417646695a66e73aefc4420eb3b84cc9ffd89572861fe004e6aeb13c7bc00e2f616247505d2dbbef24247c372f70268f594af7126f43548565c68c117bdeb565581 languageName: node5582 linkType: hard55835584"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1":5585 version: 6.0.15586 resolution: "strip-ansi@npm:6.0.1"5587 dependencies:5588 ansi-regex: ^5.0.15589 checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c5590 languageName: node5591 linkType: hard55925593"strip-ansi@npm:^7.0.1":5594 version: 7.1.05595 resolution: "strip-ansi@npm:7.1.0"5596 dependencies:5597 ansi-regex: ^6.0.15598 checksum: 859c73fcf27869c22a4e4d8c6acfe690064659e84bef9458aa6d13719d09ca88dcfd40cbf31fd0be63518ea1a643fe070b4827d353e09533a5b0b9fd4553d64d5599 languageName: node5600 linkType: hard56015602"strip-hex-prefix@npm:1.0.0":5603 version: 1.0.05604 resolution: "strip-hex-prefix@npm:1.0.0"5605 dependencies:5606 is-hex-prefixed: 1.0.05607 checksum: 4cafe7caee1d281d3694d14920fd5d3c11adf09371cef7e2ccedd5b83efd9e9bd2219b5d6ce6e809df6e0f437dc9d30db1192116580875698aad164a6d6b285b5608 languageName: node5609 linkType: hard56105611"strip-json-comments@npm:3.1.1, strip-json-comments@npm:^3.1.1":5612 version: 3.1.15613 resolution: "strip-json-comments@npm:3.1.1"5614 checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f1664435615 languageName: node5616 linkType: hard56175618"supports-color@npm:8.1.1":5619 version: 8.1.15620 resolution: "supports-color@npm:8.1.1"5621 dependencies:5622 has-flag: ^4.0.05623 checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db4065624 languageName: node5625 linkType: hard56265627"supports-color@npm:^5.3.0":5628 version: 5.5.05629 resolution: "supports-color@npm:5.5.0"5630 dependencies:5631 has-flag: ^3.0.05632 checksum: 95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac5633 languageName: node5634 linkType: hard56355636"supports-color@npm:^7.1.0":5637 version: 7.2.05638 resolution: "supports-color@npm:7.2.0"5639 dependencies:5640 has-flag: ^4.0.05641 checksum: 3dda818de06ebbe5b9653e07842d9479f3555ebc77e9a0280caf5a14fb877ffee9ed57007c3b78f5a6324b8dbeec648d9e97a24e2ed9fdb81ddc69ea07100f4a5642 languageName: node5643 linkType: hard56445645"swarm-js@npm:^0.1.40":5646 version: 0.1.425647 resolution: "swarm-js@npm:0.1.42"5648 dependencies:5649 bluebird: ^3.5.05650 buffer: ^5.0.55651 eth-lib: ^0.1.265652 fs-extra: ^4.0.25653 got: ^11.8.55654 mime-types: ^2.1.165655 mkdirp-promise: ^5.0.15656 mock-fs: ^4.1.05657 setimmediate: ^1.0.55658 tar: ^4.0.25659 xhr-request: ^1.0.15660 checksum: bbb54b84232ef113ee106cf8158d1c827fbf84b309799576f61603f63d7653fde7e71df981d07f9e4c41781bbbbd72be77e5a47e6b694d6a83b96a6a206414755661 languageName: node5662 linkType: hard56635664"table-layout@npm:^1.0.2":5665 version: 1.0.25666 resolution: "table-layout@npm:1.0.2"5667 dependencies:5668 array-back: ^4.0.15669 deep-extend: ~0.6.05670 typical: ^5.2.05671 wordwrapjs: ^4.0.05672 checksum: 8f41b5671f101a5195747ec1727b1d35ea2cd5bf85addda11cc2f4b36892db9696ce3c2c7334b5b8a122505b34d19135fede50e25678df71b0439e0704fd953f5673 languageName: node5674 linkType: hard56755676"tar@npm:^4.0.2":5677 version: 4.4.195678 resolution: "tar@npm:4.4.19"5679 dependencies:5680 chownr: ^1.1.45681 fs-minipass: ^1.2.75682 minipass: ^2.9.05683 minizlib: ^1.3.35684 mkdirp: ^0.5.55685 safe-buffer: ^5.2.15686 yallist: ^3.1.15687 checksum: 423c8259b17f8f612cef9c96805d65f90ba9a28e19be582cd9d0fcb217038219f29b7547198e8fd617da5f436376d6a74b99827acd1238d2f49cf62330f9664e5688 languageName: node5689 linkType: hard56905691"tar@npm:^6.1.11, tar@npm:^6.1.2":5692 version: 6.2.05693 resolution: "tar@npm:6.2.0"5694 dependencies:5695 chownr: ^2.0.05696 fs-minipass: ^2.0.05697 minipass: ^5.0.05698 minizlib: ^2.1.15699 mkdirp: ^1.0.35700 yallist: ^4.0.05701 checksum: db4d9fe74a2082c3a5016630092c54c8375ff3b280186938cfd104f2e089c4fd9bad58688ef6be9cf186a889671bf355c7cda38f09bbf60604b281715ca57f5c5702 languageName: node5703 linkType: hard57045705"text-table@npm:^0.2.0":5706 version: 0.2.05707 resolution: "text-table@npm:0.2.0"5708 checksum: b6937a38c80c7f84d9c11dd75e49d5c44f71d95e810a3250bd1f1797fc7117c57698204adf676b71497acc205d769d65c16ae8fa10afad832ae1322630aef10a5709 languageName: node5710 linkType: hard57115712"timed-out@npm:^4.0.1":5713 version: 4.0.15714 resolution: "timed-out@npm:4.0.1"5715 checksum: 98efc5d6fc0d2a329277bd4d34f65c1bf44d9ca2b14fd267495df92898f522e6f563c5e9e467c418e0836f5ca1f47a84ca3ee1de79b1cc6fe433834b7f02ec545716 languageName: node5717 linkType: hard57185719"tmp@npm:0.0.33":5720 version: 0.0.335721 resolution: "tmp@npm:0.0.33"5722 dependencies:5723 os-tmpdir: ~1.0.25724 checksum: 902d7aceb74453ea02abbf58c203f4a8fc1cead89b60b31e354f74ed5b3fb09ea817f94fb310f884a5d16987dd9fa5a735412a7c2dd088dd3d415aa819ae3a285725 languageName: node5726 linkType: hard57275728"to-regex-range@npm:^5.0.1":5729 version: 5.0.15730 resolution: "to-regex-range@npm:5.0.1"5731 dependencies:5732 is-number: ^7.0.05733 checksum: f76fa01b3d5be85db6a2a143e24df9f60dd047d151062d0ba3df62953f2f697b16fe5dad9b0ac6191c7efc7b1d9dcaa4b768174b7b29da89d4428e64bc0a20ed5734 languageName: node5735 linkType: hard57365737"toidentifier@npm:1.0.1":5738 version: 1.0.15739 resolution: "toidentifier@npm:1.0.1"5740 checksum: 952c29e2a85d7123239b5cfdd889a0dde47ab0497f0913d70588f19c53f7e0b5327c95f4651e413c74b785147f9637b17410ac8c846d5d4a20a5a33eb6dc3a455741 languageName: node5742 linkType: hard57435744"tough-cookie@npm:~2.5.0":5745 version: 2.5.05746 resolution: "tough-cookie@npm:2.5.0"5747 dependencies:5748 psl: ^1.1.285749 punycode: ^2.1.15750 checksum: 16a8cd090224dd176eee23837cbe7573ca0fa297d7e468ab5e1c02d49a4e9a97bb05fef11320605eac516f91d54c57838a25864e8680e27b069a5231d82649775751 languageName: node5752 linkType: hard57535754"tr46@npm:~0.0.3":5755 version: 0.0.35756 resolution: "tr46@npm:0.0.3"5757 checksum: 726321c5eaf41b5002e17ffbd1fb7245999a073e8979085dacd47c4b4e8068ff5777142fc6726d6ca1fd2ff16921b48788b87225cbc57c72636f6efa8efbffe35758 languageName: node5759 linkType: hard57605761"ts-api-utils@npm:^1.0.1":5762 version: 1.0.35763 resolution: "ts-api-utils@npm:1.0.3"5764 peerDependencies:5765 typescript: ">=4.2.0"5766 checksum: 441cc4489d65fd515ae6b0f4eb8690057add6f3b6a63a36073753547fb6ce0c9ea0e0530220a0b282b0eec535f52c4dfc315d35f8a4c9a91c0def0707a714ca65767 languageName: node5768 linkType: hard57695770"ts-command-line-args@npm:^2.2.0":5771 version: 2.5.15772 resolution: "ts-command-line-args@npm:2.5.1"5773 dependencies:5774 chalk: ^4.1.05775 command-line-args: ^5.1.15776 command-line-usage: ^6.1.05777 string-format: ^2.0.05778 bin:5779 write-markdown: dist/write-markdown.js5780 checksum: 7c0a7582e94f1d2160e3dd379851ec4f1758bc673ccd71bae07f839f83051b6b83e0ae14325c2d04ea728e5bde7b7eacfd2ab060b8fd4b8ab29e0bbf77f6c51e5781 languageName: node5782 linkType: hard57835784"ts-essentials@npm:^7.0.1":5785 version: 7.0.35786 resolution: "ts-essentials@npm:7.0.3"5787 peerDependencies:5788 typescript: ">=3.7.0"5789 checksum: 74d75868acf7f8b95e447d8b3b7442ca21738c6894e576df9917a352423fde5eb43c5651da5f78997da6061458160ae1f6b279150b42f47ccc58b73e55acaa2f5790 languageName: node5791 linkType: hard57925793"ts-node@npm:^10.9.1":5794 version: 10.9.15795 resolution: "ts-node@npm:10.9.1"5796 dependencies:5797 "@cspotcode/source-map-support": ^0.8.05798 "@tsconfig/node10": ^1.0.75799 "@tsconfig/node12": ^1.0.75800 "@tsconfig/node14": ^1.0.05801 "@tsconfig/node16": ^1.0.25802 acorn: ^8.4.15803 acorn-walk: ^8.1.15804 arg: ^4.1.05805 create-require: ^1.1.05806 diff: ^4.0.15807 make-error: ^1.1.15808 v8-compile-cache-lib: ^3.0.15809 yn: 3.1.15810 peerDependencies:5811 "@swc/core": ">=1.2.50"5812 "@swc/wasm": ">=1.2.50"5813 "@types/node": "*"5814 typescript: ">=2.7"5815 peerDependenciesMeta:5816 "@swc/core":5817 optional: true5818 "@swc/wasm":5819 optional: true5820 bin:5821 ts-node: dist/bin.js5822 ts-node-cwd: dist/bin-cwd.js5823 ts-node-esm: dist/bin-esm.js5824 ts-node-script: dist/bin-script.js5825 ts-node-transpile-only: dist/bin-transpile.js5826 ts-script: dist/bin-script-deprecated.js5827 checksum: 090adff1302ab20bd3486e6b4799e90f97726ed39e02b39e566f8ab674fd5bd5f727f43615debbfc580d33c6d9d1c6b1b3ce7d8e3cca3e20530a145ffa232c355828 languageName: node5829 linkType: hard58305831"tslib@npm:^2.1.0, tslib@npm:^2.6.1, tslib@npm:^2.6.2":5832 version: 2.6.25833 resolution: "tslib@npm:2.6.2"5834 checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad5835 languageName: node5836 linkType: hard58375838"tunnel-agent@npm:^0.6.0":5839 version: 0.6.05840 resolution: "tunnel-agent@npm:0.6.0"5841 dependencies:5842 safe-buffer: ^5.0.15843 checksum: 05f6510358f8afc62a057b8b692f05d70c1782b70db86d6a1e0d5e28a32389e52fa6e7707b6c5ecccacc031462e4bc35af85ecfe4bbc341767917b7cf69657115844 languageName: node5845 linkType: hard58465847"tweetnacl@npm:^0.14.3, tweetnacl@npm:~0.14.0":5848 version: 0.14.55849 resolution: "tweetnacl@npm:0.14.5"5850 checksum: 6061daba1724f59473d99a7bb82e13f211cdf6e31315510ae9656fefd4779851cb927adad90f3b488c8ed77c106adc0421ea8055f6f976ff21b27c5c4e9184875851 languageName: node5852 linkType: hard58535854"type-check@npm:^0.4.0, type-check@npm:~0.4.0":5855 version: 0.4.05856 resolution: "type-check@npm:0.4.0"5857 dependencies:5858 prelude-ls: ^1.2.15859 checksum: ec688ebfc9c45d0c30412e41ca9c0cdbd704580eb3a9ccf07b9b576094d7b86a012baebc95681999dd38f4f444afd28504cb3a89f2ef16b31d4ab61a0739025a5860 languageName: node5861 linkType: hard58625863"type-detect@npm:^4.0.0, type-detect@npm:^4.0.8":5864 version: 4.0.85865 resolution: "type-detect@npm:4.0.8"5866 checksum: 62b5628bff67c0eb0b66afa371bd73e230399a8d2ad30d852716efcc4656a7516904570cd8631a49a3ce57c10225adf5d0cbdcb47f6b0255fe6557c453925a155867 languageName: node5868 linkType: hard58695870"type-fest@npm:^0.20.2":5871 version: 0.20.25872 resolution: "type-fest@npm:0.20.2"5873 checksum: 4fb3272df21ad1c552486f8a2f8e115c09a521ad7a8db3d56d53718d0c907b62c6e9141ba5f584af3f6830d0872c521357e512381f24f7c44acae583ad517d735874 languageName: node5875 linkType: hard58765877"type-is@npm:~1.6.18":5878 version: 1.6.185879 resolution: "type-is@npm:1.6.18"5880 dependencies:5881 media-typer: 0.3.05882 mime-types: ~2.1.245883 checksum: 2c8e47675d55f8b4e404bcf529abdf5036c537a04c2b20177bcf78c9e3c1da69da3942b1346e6edb09e823228c0ee656ef0e033765ec39a70d496ef601a0c6575884 languageName: node5885 linkType: hard58865887"type@npm:^1.0.1":5888 version: 1.2.05889 resolution: "type@npm:1.2.0"5890 checksum: dae8c64f82c648b985caf321e9dd6e8b7f4f2e2d4f846fc6fd2c8e9dc7769382d8a52369ddbaccd59aeeceb0df7f52fb339c465be5f2e543e81e810e413451ee5891 languageName: node5892 linkType: hard58935894"type@npm:^2.7.2":5895 version: 2.7.25896 resolution: "type@npm:2.7.2"5897 checksum: 0f42379a8adb67fe529add238a3e3d16699d95b42d01adfe7b9a7c5da297f5c1ba93de39265ba30ffeb37dfd0afb3fb66ae09f58d6515da442219c086219f6f45898 languageName: node5899 linkType: hard59005901"typechain@npm:^8.3.2":5902 version: 8.3.25903 resolution: "typechain@npm:8.3.2"5904 dependencies:5905 "@types/prettier": ^2.1.15906 debug: ^4.3.15907 fs-extra: ^7.0.05908 glob: 7.1.75909 js-sha3: ^0.8.05910 lodash: ^4.17.155911 mkdirp: ^1.0.45912 prettier: ^2.3.15913 ts-command-line-args: ^2.2.05914 ts-essentials: ^7.0.15915 peerDependencies:5916 typescript: ">=4.3.0"5917 bin:5918 typechain: dist/cli/cli.js5919 checksum: 146a1896fa93403404be78757790b0f95b5457efebcca16b61622e09c374d555ef4f837c1c4eedf77e03abc50276d96a2f33064ec09bb802f62d8cc2b13fce705920 languageName: node5921 linkType: hard59225923"typedarray-to-buffer@npm:^3.1.5":5924 version: 3.1.55925 resolution: "typedarray-to-buffer@npm:3.1.5"5926 dependencies:5927 is-typedarray: ^1.0.05928 checksum: 99c11aaa8f45189fcfba6b8a4825fd684a321caa9bd7a76a27cf0c7732c174d198b99f449c52c3818107430b5f41c0ccbbfb75cb2ee3ca4a9451710986d61a605929 languageName: node5930 linkType: hard59315932"typescript@npm:^5.2.2":5933 version: 5.2.25934 resolution: "typescript@npm:5.2.2"5935 bin:5936 tsc: bin/tsc5937 tsserver: bin/tsserver5938 checksum: 7912821dac4d962d315c36800fe387cdc0a6298dba7ec171b350b4a6e988b51d7b8f051317786db1094bd7431d526b648aba7da8236607febb26cf5b871d2d3c5939 languageName: node5940 linkType: hard59415942"typescript@patch:typescript@^5.2.2#~builtin<compat/typescript>":5943 version: 5.2.25944 resolution: "typescript@patch:typescript@npm%3A5.2.2#~builtin<compat/typescript>::version=5.2.2&hash=14eedb"5945 bin:5946 tsc: bin/tsc5947 tsserver: bin/tsserver5948 checksum: 07106822b4305de3f22835cbba949a2b35451cad50888759b6818421290ff95d522b38ef7919e70fb381c5fe9c1c643d7dea22c8b31652a717ddbd57b7f4d5545949 languageName: node5950 linkType: hard59515952"typical@npm:^4.0.0":5953 version: 4.0.05954 resolution: "typical@npm:4.0.0"5955 checksum: a242081956825328f535e6195a924240b34daf6e7fdb573a1809a42b9f37fb8114fa99c7ab89a695e0cdb419d4149d067f6723e4b95855ffd39c6c4ca378efb35956 languageName: node5957 linkType: hard59585959"typical@npm:^5.2.0":5960 version: 5.2.05961 resolution: "typical@npm:5.2.0"5962 checksum: ccaeb151a9a556291b495571ca44c4660f736fb49c29314bbf773c90fad92e9485d3cc2b074c933866c1595abbbc962f2b8bfc6e0f52a8c6b0cdd205442036ac5963 languageName: node5964 linkType: hard59655966"uglify-js@npm:^3.1.4":5967 version: 3.17.45968 resolution: "uglify-js@npm:3.17.4"5969 bin:5970 uglifyjs: bin/uglifyjs5971 checksum: 7b3897df38b6fc7d7d9f4dcd658599d81aa2b1fb0d074829dd4e5290f7318dbca1f4af2f45acb833b95b1fe0ed4698662ab61b87e94328eb4c0a0d3435baf9245972 languageName: node5973 linkType: hard59745975"ultron@npm:~1.1.0":5976 version: 1.1.15977 resolution: "ultron@npm:1.1.1"5978 checksum: aa7b5ebb1b6e33287b9d873c6756c4b7aa6d1b23d7162ff25b0c0ce5c3c7e26e2ab141a5dc6e96c10ac4d00a372e682ce298d784f06ffcd520936590b4bc06535979 languageName: node5980 linkType: hard59815982"undici-types@npm:~5.26.4":5983 version: 5.26.55984 resolution: "undici-types@npm:5.26.5"5985 checksum: 3192ef6f3fd5df652f2dc1cd782b49d6ff14dc98e5dced492aa8a8c65425227da5da6aafe22523c67f035a272c599bb89cfe803c1db6311e44bed3042fc254875986 languageName: node5987 linkType: hard59885989"unique-filename@npm:^3.0.0":5990 version: 3.0.05991 resolution: "unique-filename@npm:3.0.0"5992 dependencies:5993 unique-slug: ^4.0.05994 checksum: 8e2f59b356cb2e54aab14ff98a51ac6c45781d15ceaab6d4f1c2228b780193dc70fae4463ce9e1df4479cb9d3304d7c2043a3fb905bdeca71cc7e8ce27e063df5995 languageName: node5996 linkType: hard59975998"unique-slug@npm:^4.0.0":5999 version: 4.0.06000 resolution: "unique-slug@npm:4.0.0"6001 dependencies:6002 imurmurhash: ^0.1.46003 checksum: 0884b58365af59f89739e6f71e3feacb5b1b41f2df2d842d0757933620e6de08eff347d27e9d499b43c40476cbaf7988638d3acb2ffbcb9d35fd035591adfd156004 languageName: node6005 linkType: hard60066007"unique-tests@workspace:.":6008 version: 0.0.0-use.local6009 resolution: "unique-tests@workspace:."6010 dependencies:6011 "@openzeppelin/contracts": ^4.9.26012 "@types/chai": ^4.3.96013 "@types/chai-as-promised": ^7.1.76014 "@types/chai-like": ^1.1.26015 "@types/chai-subset": ^1.3.46016 "@types/mocha": ^10.0.36017 "@types/node": ^20.8.106018 "@typescript-eslint/eslint-plugin": ^6.10.06019 "@typescript-eslint/parser": ^6.10.06020 "@unique-nft/evm-abi": "workspace:*"6021 "@unique-nft/opal-testnet-types": "workspace:*"6022 "@unique-nft/playgrounds": "workspace:*"6023 "@unique/test-utils": "workspace:*"6024 chai: ^4.3.106025 chai-as-promised: ^7.1.16026 chai-like: ^1.1.16027 chai-subset: ^1.6.06028 csv-writer: ^1.6.06029 eslint: ^8.53.06030 eslint-plugin-mocha: ^10.2.06031 lossless-json: ^3.0.16032 solc: ^0.8.226033 ts-node: ^10.9.16034 typechain: ^8.3.26035 typescript: ^5.2.26036 web3: 1.10.06037 languageName: unknown6038 linkType: soft60396040"universalify@npm:^0.1.0":6041 version: 0.1.26042 resolution: "universalify@npm:0.1.2"6043 checksum: 40cdc60f6e61070fe658ca36016a8f4ec216b29bf04a55dce14e3710cc84c7448538ef4dad3728d0bfe29975ccd7bfb5f414c45e7b78883567fb31b246f02dff6044 languageName: node6045 linkType: hard60466047"unpipe@npm:1.0.0, unpipe@npm:~1.0.0":6048 version: 1.0.06049 resolution: "unpipe@npm:1.0.0"6050 checksum: 4fa18d8d8d977c55cb09715385c203197105e10a6d220087ec819f50cb68870f02942244f1017565484237f1f8c5d3cd413631b1ae104d3096f24fdfde1b4aa26051 languageName: node6052 linkType: hard60536054"uri-js@npm:^4.2.2":6055 version: 4.4.16056 resolution: "uri-js@npm:4.4.1"6057 dependencies:6058 punycode: ^2.1.06059 checksum: 7167432de6817fe8e9e0c9684f1d2de2bb688c94388f7569f7dbdb1587c9f4ca2a77962f134ec90be0cc4d004c939ff0d05acc9f34a0db39a3c797dada2626336060 languageName: node6061 linkType: hard60626063"url-set-query@npm:^1.0.0":6064 version: 1.0.06065 resolution: "url-set-query@npm:1.0.0"6066 checksum: 5ad73525e8f3ab55c6bf3ddc70a43912e65ff9ce655d7868fdcefdf79f509cfdddde4b07150797f76186f1a47c0ecd2b7bb3687df8f84757dee4110cf006e12d6067 languageName: node6068 linkType: hard60696070"utf-8-validate@npm:^5.0.2":6071 version: 5.0.106072 resolution: "utf-8-validate@npm:5.0.10"6073 dependencies:6074 node-gyp: latest6075 node-gyp-build: ^4.3.06076 checksum: 5579350a023c66a2326752b6c8804cc7b39dcd251bb088241da38db994b8d78352e388dcc24ad398ab98385ba3c5ffcadb6b5b14b2637e43f767869055e46ba66077 languageName: node6078 linkType: hard60796080"utf8@npm:3.0.0":6081 version: 3.0.06082 resolution: "utf8@npm:3.0.0"6083 checksum: cb89a69ad9ab393e3eae9b25305b3ff08bebca9adc839191a34f90777eb2942f86a96369d2839925fea58f8f722f7e27031d697f10f5f39690f8c5047303e62d6084 languageName: node6085 linkType: hard60866087"util-deprecate@npm:^1.0.1":6088 version: 1.0.26089 resolution: "util-deprecate@npm:1.0.2"6090 checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a26091 languageName: node6092 linkType: hard60936094"util@npm:^0.12.5":6095 version: 0.12.56096 resolution: "util@npm:0.12.5"6097 dependencies:6098 inherits: ^2.0.36099 is-arguments: ^1.0.46100 is-generator-function: ^1.0.76101 is-typed-array: ^1.1.36102 which-typed-array: ^1.1.26103 checksum: 705e51f0de5b446f4edec10739752ac25856541e0254ea1e7e45e5b9f9b0cb105bc4bd415736a6210edc68245a7f903bf085ffb08dd7deb8a0e847f60538a38a6104 languageName: node6105 linkType: hard61066107"utils-merge@npm:1.0.1":6108 version: 1.0.16109 resolution: "utils-merge@npm:1.0.1"6110 checksum: c81095493225ecfc28add49c106ca4f09cdf56bc66731aa8dabc2edbbccb1e1bfe2de6a115e5c6a380d3ea166d1636410b62ef216bb07b3feb1cfde1d95d50806111 languageName: node6112 linkType: hard61136114"uuid@npm:^3.3.2":6115 version: 3.4.06116 resolution: "uuid@npm:3.4.0"6117 bin:6118 uuid: ./bin/uuid6119 checksum: 58de2feed61c59060b40f8203c0e4ed7fd6f99d42534a499f1741218a1dd0c129f4aa1de797bcf822c8ea5da7e4137aa3673431a96dae729047f7aca7b27866f6120 languageName: node6121 linkType: hard61226123"uuid@npm:^9.0.0":6124 version: 9.0.16125 resolution: "uuid@npm:9.0.1"6126 bin:6127 uuid: dist/bin/uuid6128 checksum: 39931f6da74e307f51c0fb463dc2462807531dc80760a9bff1e35af4316131b4fc3203d16da60ae33f07fdca5b56f3f1dd662da0c99fea9aaeab2004780cc5f46129 languageName: node6130 linkType: hard61316132"v8-compile-cache-lib@npm:^3.0.1":6133 version: 3.0.16134 resolution: "v8-compile-cache-lib@npm:3.0.1"6135 checksum: 78089ad549e21bcdbfca10c08850022b22024cdcc2da9b168bcf5a73a6ed7bf01a9cebb9eac28e03cd23a684d81e0502797e88f3ccd27a32aeab1cfc44c39da06136 languageName: node6137 linkType: hard61386139"varint@npm:^5.0.0":6140 version: 5.0.26141 resolution: "varint@npm:5.0.2"6142 checksum: e1a66bf9a6cea96d1f13259170d4d41b845833acf3a9df990ea1e760d279bd70d5b1f4c002a50197efd2168a2fd43eb0b808444600fd4d23651e8d42fe90eb056143 languageName: node6144 linkType: hard61456146"vary@npm:^1, vary@npm:~1.1.2":6147 version: 1.1.26148 resolution: "vary@npm:1.1.2"6149 checksum: ae0123222c6df65b437669d63dfa8c36cee20a504101b2fcd97b8bf76f91259c17f9f2b4d70a1e3c6bbcee7f51b28392833adb6b2770b23b01abec84e369660b6150 languageName: node6151 linkType: hard61526153"verror@npm:1.10.0":6154 version: 1.10.06155 resolution: "verror@npm:1.10.0"6156 dependencies:6157 assert-plus: ^1.0.06158 core-util-is: 1.0.26159 extsprintf: ^1.2.06160 checksum: c431df0bedf2088b227a4e051e0ff4ca54df2c114096b0c01e1cbaadb021c30a04d7dd5b41ab277bcd51246ca135bf931d4c4c796ecae7a4fef6d744ecef36ea6161 languageName: node6162 linkType: hard61636164"web-streams-polyfill@npm:^3.0.3":6165 version: 3.2.16166 resolution: "web-streams-polyfill@npm:3.2.1"6167 checksum: b119c78574b6d65935e35098c2afdcd752b84268e18746606af149e3c424e15621b6f1ff0b42b2676dc012fc4f0d313f964b41a4b5031e525faa03997457da026168 languageName: node6169 linkType: hard61706171"web3-bzz@npm:1.10.0":6172 version: 1.10.06173 resolution: "web3-bzz@npm:1.10.0"6174 dependencies:6175 "@types/node": ^12.12.66176 got: 12.1.06177 swarm-js: ^0.1.406178 checksum: a4b6766e23ca4b2d37b0390aaf0c7f8a1246e90be843dc7183a04a1960d60998fc9267234aba9989e7e87db837dac58d4dee027071ecce29344611e20f3b9ffc6179 languageName: node6180 linkType: hard61816182"web3-core-helpers@npm:1.10.0":6183 version: 1.10.06184 resolution: "web3-core-helpers@npm:1.10.0"6185 dependencies:6186 web3-eth-iban: 1.10.06187 web3-utils: 1.10.06188 checksum: 3f8b8ed5e3f56c5760452e5d8850d77607cd7046392c7df78a0903611dcbf875acc9bff04bbc397cd967ce27d45b61de19dcf47fada0c958f54a5d69181a40a66189 languageName: node6190 linkType: hard61916192"web3-core-method@npm:1.10.0":6193 version: 1.10.06194 resolution: "web3-core-method@npm:1.10.0"6195 dependencies:6196 "@ethersproject/transactions": ^5.6.26197 web3-core-helpers: 1.10.06198 web3-core-promievent: 1.10.06199 web3-core-subscriptions: 1.10.06200 web3-utils: 1.10.06201 checksum: 29c42c92f0f6d895245c6d3dba4adffd822787b09bee0d9953a5d50365ae1ab0559085e9d6104e2dfb00b372fbf02ff1d6292c9a9e565ada1a5c531754d654cd6202 languageName: node6203 linkType: hard62046205"web3-core-promievent@npm:1.10.0":6206 version: 1.10.06207 resolution: "web3-core-promievent@npm:1.10.0"6208 dependencies:6209 eventemitter3: 4.0.46210 checksum: 68e9f40f78d92ce1ee9808d04a28a89d20ab4dc36af5ba8405f132044cbb01825f76f35249a9599f9568a95d5e7c9e4a09ada6d4dc2e27e0c1b32c9232c8c9736211 languageName: node6212 linkType: hard62136214"web3-core-requestmanager@npm:1.10.0":6215 version: 1.10.06216 resolution: "web3-core-requestmanager@npm:1.10.0"6217 dependencies:6218 util: ^0.12.56219 web3-core-helpers: 1.10.06220 web3-providers-http: 1.10.06221 web3-providers-ipc: 1.10.06222 web3-providers-ws: 1.10.06223 checksum: ce63b521b70b4e159510abf9d70e09d0c704b924a83951b350bb1d8f56b03dae21d3ea709a118019d272f754940ad6f6772002e7a8692bf733126fee80c842266224 languageName: node6225 linkType: hard62266227"web3-core-subscriptions@npm:1.10.0":6228 version: 1.10.06229 resolution: "web3-core-subscriptions@npm:1.10.0"6230 dependencies:6231 eventemitter3: 4.0.46232 web3-core-helpers: 1.10.06233 checksum: baca40f4d34da03bf4e6d64a13d9498a3ebfa37544869921671340d83581c87efbe3830998ae99db776fa22f0cdb529f9bb1fe7d516de1f9ce7b9da1c3a638596234 languageName: node6235 linkType: hard62366237"web3-core@npm:1.10.0":6238 version: 1.10.06239 resolution: "web3-core@npm:1.10.0"6240 dependencies:6241 "@types/bn.js": ^5.1.16242 "@types/node": ^12.12.66243 bignumber.js: ^9.0.06244 web3-core-helpers: 1.10.06245 web3-core-method: 1.10.06246 web3-core-requestmanager: 1.10.06247 web3-utils: 1.10.06248 checksum: 075b6dbf743e8cfad2aa1b9d603a45f0f30998c778af22cd0090d455a027e0658c398721a2a270c218dc2a561cbfd5cdbfe5ca14a6c2f5cd4afc8743e05a2e606249 languageName: node6250 linkType: hard62516252"web3-eth-abi@npm:1.10.0":6253 version: 1.10.06254 resolution: "web3-eth-abi@npm:1.10.0"6255 dependencies:6256 "@ethersproject/abi": ^5.6.36257 web3-utils: 1.10.06258 checksum: 465a4c19d6d8b41592871cb82e64fc0847093614d9f377939a731a691262a7e01398d8fe9e37f63e8d654707841a532c1161582ddaf87c52a66412a0285805c56259 languageName: node6260 linkType: hard62616262"web3-eth-accounts@npm:1.10.0":6263 version: 1.10.06264 resolution: "web3-eth-accounts@npm:1.10.0"6265 dependencies:6266 "@ethereumjs/common": 2.5.06267 "@ethereumjs/tx": 3.3.26268 eth-lib: 0.2.86269 ethereumjs-util: ^7.1.56270 scrypt-js: ^3.0.16271 uuid: ^9.0.06272 web3-core: 1.10.06273 web3-core-helpers: 1.10.06274 web3-core-method: 1.10.06275 web3-utils: 1.10.06276 checksum: 93821129133a30596e3008af31beb2f26d74157f56e5a669e22565dc991f13747d3d9150202860f93709a8a2a6ec80eaf12bee78f4e03d5ab60e28d7ee68d8886277 languageName: node6278 linkType: hard62796280"web3-eth-contract@npm:1.10.0":6281 version: 1.10.06282 resolution: "web3-eth-contract@npm:1.10.0"6283 dependencies:6284 "@types/bn.js": ^5.1.16285 web3-core: 1.10.06286 web3-core-helpers: 1.10.06287 web3-core-method: 1.10.06288 web3-core-promievent: 1.10.06289 web3-core-subscriptions: 1.10.06290 web3-eth-abi: 1.10.06291 web3-utils: 1.10.06292 checksum: 7a0c24686a128dc08e4d532866feaab28f4d59d95c89a00779e37e956116e90fac27efca0d4911b845739f2fd54cfa1f455c5cdf7e88c27d6e553d5bff86f3816293 languageName: node6294 linkType: hard62956296"web3-eth-ens@npm:1.10.0":6297 version: 1.10.06298 resolution: "web3-eth-ens@npm:1.10.0"6299 dependencies:6300 content-hash: ^2.5.26301 eth-ens-namehash: 2.0.86302 web3-core: 1.10.06303 web3-core-helpers: 1.10.06304 web3-core-promievent: 1.10.06305 web3-eth-abi: 1.10.06306 web3-eth-contract: 1.10.06307 web3-utils: 1.10.06308 checksum: 31c1c6c4303ab6a0036362d5bbc5c55c173cc12823a9ccea8df6609e11ae49374944a15c7810f4f425b65ab2f5062960ebb8efe55cdc22aa3232eca2607a09226309 languageName: node6310 linkType: hard63116312"web3-eth-iban@npm:1.10.0":6313 version: 1.10.06314 resolution: "web3-eth-iban@npm:1.10.0"6315 dependencies:6316 bn.js: ^5.2.16317 web3-utils: 1.10.06318 checksum: ca0921f0a232a343a538f6376e55ef3e29e952fba613ecda09dde82149e8088581d8f93da2ed2d8b7e008abdf6610eecc0f4f25efba0ecf412156fd70e9869c06319 languageName: node6320 linkType: hard63216322"web3-eth-personal@npm:1.10.0":6323 version: 1.10.06324 resolution: "web3-eth-personal@npm:1.10.0"6325 dependencies:6326 "@types/node": ^12.12.66327 web3-core: 1.10.06328 web3-core-helpers: 1.10.06329 web3-core-method: 1.10.06330 web3-net: 1.10.06331 web3-utils: 1.10.06332 checksum: e6c1f540d763e691d81042ec4d0a27b95345bd3ae338b8dffa36bb1a34ae34ec0193c3f0a9ff324fca2918de0d66b022750ee007cf2c3a65241028e8521953566333 languageName: node6334 linkType: hard63356336"web3-eth@npm:1.10.0":6337 version: 1.10.06338 resolution: "web3-eth@npm:1.10.0"6339 dependencies:6340 web3-core: 1.10.06341 web3-core-helpers: 1.10.06342 web3-core-method: 1.10.06343 web3-core-subscriptions: 1.10.06344 web3-eth-abi: 1.10.06345 web3-eth-accounts: 1.10.06346 web3-eth-contract: 1.10.06347 web3-eth-ens: 1.10.06348 web3-eth-iban: 1.10.06349 web3-eth-personal: 1.10.06350 web3-net: 1.10.06351 web3-utils: 1.10.06352 checksum: d82332a20508667cf69d216530baa541c69fc44046bb7c57f0f85ba09c0eeaab753146388c66d0313673d0ea93be9325817e34cc69d7f4ddf9e01c43a130a2fe6353 languageName: node6354 linkType: hard63556356"web3-net@npm:1.10.0":6357 version: 1.10.06358 resolution: "web3-net@npm:1.10.0"6359 dependencies:6360 web3-core: 1.10.06361 web3-core-method: 1.10.06362 web3-utils: 1.10.06363 checksum: 5183d897ccf539adafa60e8372871f8d8ecf4c46a0943aeee1d5f78a54c8faddfcb2406269ab422e57ef871c29496dba1bffbe044693b559a3bcd7957af873636364 languageName: node6365 linkType: hard63666367"web3-providers-http@npm:1.10.0":6368 version: 1.10.06369 resolution: "web3-providers-http@npm:1.10.0"6370 dependencies:6371 abortcontroller-polyfill: ^1.7.36372 cross-fetch: ^3.1.46373 es6-promise: ^4.2.86374 web3-core-helpers: 1.10.06375 checksum: 2fe7c3485626e5e7cb3dd54d05e74f35aec306afe25ae35047e4db1ad75a01a4490d8abf8caa2648400c597d8a252d8cca9950977af2dc242b0ba1f95ab2d2c26376 languageName: node6377 linkType: hard63786379"web3-providers-ipc@npm:1.10.0":6380 version: 1.10.06381 resolution: "web3-providers-ipc@npm:1.10.0"6382 dependencies:6383 oboe: 2.1.56384 web3-core-helpers: 1.10.06385 checksum: 103cb6b26ced5c79f76178ae4339e867f09128a8bf5041553966dbc23fb63a4de638a619cadf1f4c4fdff4f352cd63bce54f1fe2eb582fc18cea11ea64067a716386 languageName: node6387 linkType: hard63886389"web3-providers-ws@npm:1.10.0":6390 version: 1.10.06391 resolution: "web3-providers-ws@npm:1.10.0"6392 dependencies:6393 eventemitter3: 4.0.46394 web3-core-helpers: 1.10.06395 websocket: ^1.0.326396 checksum: 0784334a9ad61c209468335bfed4f656e23b4aab8bddf834de29895fde79309bffe90bfbc65b975c6ea4870ef4521b90469aabeb3124b99d905d1a52ca7bcbe36397 languageName: node6398 linkType: hard63996400"web3-shh@npm:1.10.0":6401 version: 1.10.06402 resolution: "web3-shh@npm:1.10.0"6403 dependencies:6404 web3-core: 1.10.06405 web3-core-method: 1.10.06406 web3-core-subscriptions: 1.10.06407 web3-net: 1.10.06408 checksum: 7f4b39ba4b4f6107cb21d00d11821eb68af40d7e59e8fedf385c318954f9d9288bd075014322752e27a1d663a4c40d28bbd46ddb4e336519db9e96c9b0d3821d6409 languageName: node6410 linkType: hard64116412"web3-utils@npm:1.10.0":6413 version: 1.10.06414 resolution: "web3-utils@npm:1.10.0"6415 dependencies:6416 bn.js: ^5.2.16417 ethereum-bloom-filters: ^1.0.66418 ethereumjs-util: ^7.1.06419 ethjs-unit: 0.1.66420 number-to-bn: 1.7.06421 randombytes: ^2.1.06422 utf8: 3.0.06423 checksum: c6b7662359c0513b5cbfe02cdcb312ce9152778bb19d94d413d44f74cfaa93b7de97190ab6ba11af25a40855c949d2427dcb751929c6d0f257da268c55a3ba2a6424 languageName: node6425 linkType: hard64266427"web3@npm:1.10.0":6428 version: 1.10.06429 resolution: "web3@npm:1.10.0"6430 dependencies:6431 web3-bzz: 1.10.06432 web3-core: 1.10.06433 web3-eth: 1.10.06434 web3-eth-personal: 1.10.06435 web3-net: 1.10.06436 web3-shh: 1.10.06437 web3-utils: 1.10.06438 checksum: 21cce929b71b8de6844eadd6bcf611dfb91f16f2e8b89bec3f3d18b2e2548b4a2a629886962935cc15fac0ce74c9a00d9ca6b53f4be6a81bd68d17689eb134a96439 languageName: node6440 linkType: hard64416442"webidl-conversions@npm:^3.0.0":6443 version: 3.0.16444 resolution: "webidl-conversions@npm:3.0.1"6445 checksum: c92a0a6ab95314bde9c32e1d0a6dfac83b578f8fa5f21e675bc2706ed6981bc26b7eb7e6a1fab158e5ce4adf9caa4a0aee49a52505d4d13c7be545f15021b17c6446 languageName: node6447 linkType: hard64486449"websocket@npm:^1.0.32":6450 version: 1.0.346451 resolution: "websocket@npm:1.0.34"6452 dependencies:6453 bufferutil: ^4.0.16454 debug: ^2.2.06455 es5-ext: ^0.10.506456 typedarray-to-buffer: ^3.1.56457 utf-8-validate: ^5.0.26458 yaeti: ^0.0.66459 checksum: 8a0ce6d79cc1334bb6ea0d607f0092f3d32700b4dd19e4d5540f2a85f3b50e1f8110da0e4716737056584dde70bbebcb40bbd94bbb437d7468c71abfbfa077d86460 languageName: node6461 linkType: hard64626463"whatwg-url@npm:^5.0.0":6464 version: 5.0.06465 resolution: "whatwg-url@npm:5.0.0"6466 dependencies:6467 tr46: ~0.0.36468 webidl-conversions: ^3.0.06469 checksum: b8daed4ad3356cc4899048a15b2c143a9aed0dfae1f611ebd55073310c7b910f522ad75d727346ad64203d7e6c79ef25eafd465f4d12775ca44b90fa82ed9e2c6470 languageName: node6471 linkType: hard64726473"which-typed-array@npm:^1.1.11, which-typed-array@npm:^1.1.2":6474 version: 1.1.136475 resolution: "which-typed-array@npm:1.1.13"6476 dependencies:6477 available-typed-arrays: ^1.0.56478 call-bind: ^1.0.46479 for-each: ^0.3.36480 gopd: ^1.0.16481 has-tostringtag: ^1.0.06482 checksum: 3828a0d5d72c800e369d447e54c7620742a4cc0c9baf1b5e8c17e9b6ff90d8d861a3a6dd4800f1953dbf80e5e5cec954a289e5b4a223e3bee4aeb1f8c5f333096483 languageName: node6484 linkType: hard64856486"which@npm:^2.0.1":6487 version: 2.0.26488 resolution: "which@npm:2.0.2"6489 dependencies:6490 isexe: ^2.0.06491 bin:6492 node-which: ./bin/node-which6493 checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d16494 languageName: node6495 linkType: hard64966497"which@npm:^4.0.0":6498 version: 4.0.06499 resolution: "which@npm:4.0.0"6500 dependencies:6501 isexe: ^3.1.16502 bin:6503 node-which: bin/which.js6504 checksum: f17e84c042592c21e23c8195108cff18c64050b9efb8459589116999ea9da6dd1509e6a1bac3aeebefd137be00fabbb61b5c2bc0aa0f8526f32b58ee2f5456516505 languageName: node6506 linkType: hard65076508"wordwrap@npm:^1.0.0":6509 version: 1.0.06510 resolution: "wordwrap@npm:1.0.0"6511 checksum: 2a44b2788165d0a3de71fd517d4880a8e20ea3a82c080ce46e294f0b68b69a2e49cff5f99c600e275c698a90d12c5ea32aff06c311f0db2eb3f1201f3e7b2a046512 languageName: node6513 linkType: hard65146515"wordwrapjs@npm:^4.0.0":6516 version: 4.0.16517 resolution: "wordwrapjs@npm:4.0.1"6518 dependencies:6519 reduce-flatten: ^2.0.06520 typical: ^5.2.06521 checksum: 3d927f3c95d0ad990968da54c0ad8cde2801d8e91006cd7474c26e6b742cc8557250ce495c9732b2f9db1f903601cb74ec282e0f122ee0d02d7abe81e150eea86522 languageName: node6523 linkType: hard65246525"workerpool@npm:6.2.1":6526 version: 6.2.16527 resolution: "workerpool@npm:6.2.1"6528 checksum: c2c6eebbc5225f10f758d599a5c016fa04798bcc44e4c1dffb34050cd361d7be2e97891aa44419e7afe647b1f767b1dc0b85a5e046c409d890163f655028b09d6529 languageName: node6530 linkType: hard65316532"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0":6533 version: 7.0.06534 resolution: "wrap-ansi@npm:7.0.0"6535 dependencies:6536 ansi-styles: ^4.0.06537 string-width: ^4.1.06538 strip-ansi: ^6.0.06539 checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b6540 languageName: node6541 linkType: hard65426543"wrap-ansi@npm:^8.1.0":6544 version: 8.1.06545 resolution: "wrap-ansi@npm:8.1.0"6546 dependencies:6547 ansi-styles: ^6.1.06548 string-width: ^5.0.16549 strip-ansi: ^7.0.16550 checksum: 371733296dc2d616900ce15a0049dca0ef67597d6394c57347ba334393599e800bab03c41d4d45221b6bc967b8c453ec3ae4749eff3894202d16800fdfe0e2386551 languageName: node6552 linkType: hard65536554"wrappy@npm:1":6555 version: 1.0.26556 resolution: "wrappy@npm:1.0.2"6557 checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee56558 languageName: node6559 linkType: hard65606561"ws@npm:^3.0.0":6562 version: 3.3.36563 resolution: "ws@npm:3.3.3"6564 dependencies:6565 async-limiter: ~1.0.06566 safe-buffer: ~5.1.06567 ultron: ~1.1.06568 checksum: 20b7bf34bb88715b9e2d435b76088d770e063641e7ee697b07543815fabdb752335261c507a973955e823229d0af8549f39cc669825e5c8404aa0422615c81d96569 languageName: node6570 linkType: hard65716572"ws@npm:^8.14.1, ws@npm:^8.8.1":6573 version: 8.14.26574 resolution: "ws@npm:8.14.2"6575 peerDependencies:6576 bufferutil: ^4.0.16577 utf-8-validate: ">=5.0.2"6578 peerDependenciesMeta:6579 bufferutil:6580 optional: true6581 utf-8-validate:6582 optional: true6583 checksum: 3ca0dad26e8cc6515ff392b622a1467430814c463b3368b0258e33696b1d4bed7510bc7030f7b72838b9fdeb8dbd8839cbf808367d6aae2e1d668ce741d4308b6584 languageName: node6585 linkType: hard65866587"xhr-request-promise@npm:^0.1.2":6588 version: 0.1.36589 resolution: "xhr-request-promise@npm:0.1.3"6590 dependencies:6591 xhr-request: ^1.1.06592 checksum: 2e127c0de063db0aa704b8d5b805fd34f0f07cac21284a88c81f96727eb71af7d2dfa3ad43e96ed3e851e05a1bd88933048ec183378b48594dfbead1c9043aee6593 languageName: node6594 linkType: hard65956596"xhr-request@npm:^1.0.1, xhr-request@npm:^1.1.0":6597 version: 1.1.06598 resolution: "xhr-request@npm:1.1.0"6599 dependencies:6600 buffer-to-arraybuffer: ^0.0.56601 object-assign: ^4.1.16602 query-string: ^5.0.16603 simple-get: ^2.7.06604 timed-out: ^4.0.16605 url-set-query: ^1.0.06606 xhr: ^2.0.46607 checksum: fd8186f33e8696dabcd1ad2983f8125366f4cd799c6bf30aa8d942ac481a7e685a5ee8c38eeee6fca715a7084b432a3a326991375557dc4505c928d3f7b0f0a86608 languageName: node6609 linkType: hard66106611"xhr@npm:^2.0.4, xhr@npm:^2.3.3":6612 version: 2.6.06613 resolution: "xhr@npm:2.6.0"6614 dependencies:6615 global: ~4.4.06616 is-function: ^1.0.16617 parse-headers: ^2.0.06618 xtend: ^4.0.06619 checksum: a1db277e37737caf3ed363d2a33ce4b4ea5b5fc190b663a6f70bc252799185b840ccaa166eaeeea4841c9c60b87741f0a24e29cbcf6708dd425986d4df186d2f6620 languageName: node6621 linkType: hard66226623"xtend@npm:^4.0.0":6624 version: 4.0.26625 resolution: "xtend@npm:4.0.2"6626 checksum: ac5dfa738b21f6e7f0dd6e65e1b3155036d68104e67e5d5d1bde74892e327d7e5636a076f625599dc394330a731861e87343ff184b0047fef1360a7ec0a5a36a6627 languageName: node6628 linkType: hard66296630"y18n@npm:^5.0.5":6631 version: 5.0.86632 resolution: "y18n@npm:5.0.8"6633 checksum: 54f0fb95621ee60898a38c572c515659e51cc9d9f787fb109cef6fde4befbe1c4602dc999d30110feee37456ad0f1660fa2edcfde6a9a740f86a290999550d306634 languageName: node6635 linkType: hard66366637"yaeti@npm:^0.0.6":6638 version: 0.0.66639 resolution: "yaeti@npm:0.0.6"6640 checksum: 6db12c152f7c363b80071086a3ebf5032e03332604eeda988872be50d6c8469e1f13316175544fa320f72edad696c2d83843ad0ff370659045c1a68bcecfcfea6641 languageName: node6642 linkType: hard66436644"yallist@npm:^3.0.0, yallist@npm:^3.1.1":6645 version: 3.1.16646 resolution: "yallist@npm:3.1.1"6647 checksum: 48f7bb00dc19fc635a13a39fe547f527b10c9290e7b3e836b9a8f1ca04d4d342e85714416b3c2ab74949c9c66f9cebb0473e6bc353b79035356103b47641285d6648 languageName: node6649 linkType: hard66506651"yallist@npm:^4.0.0":6652 version: 4.0.06653 resolution: "yallist@npm:4.0.0"6654 checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d56655 languageName: node6656 linkType: hard66576658"yargs-parser@npm:20.2.4":6659 version: 20.2.46660 resolution: "yargs-parser@npm:20.2.4"6661 checksum: d251998a374b2743a20271c2fd752b9fbef24eb881d53a3b99a7caa5e8227fcafd9abf1f345ac5de46435821be25ec12189a11030c12ee6481fef6863ed8b9246662 languageName: node6663 linkType: hard66646665"yargs-parser@npm:^20.2.2":6666 version: 20.2.96667 resolution: "yargs-parser@npm:20.2.9"6668 checksum: 8bb69015f2b0ff9e17b2c8e6bfe224ab463dd00ca211eece72a4cd8a906224d2703fb8a326d36fdd0e68701e201b2a60ed7cf81ce0fd9b3799f9fe7745977ae36669 languageName: node6670 linkType: hard66716672"yargs-parser@npm:^21.1.1":6673 version: 21.1.16674 resolution: "yargs-parser@npm:21.1.1"6675 checksum: ed2d96a616a9e3e1cc7d204c62ecc61f7aaab633dcbfab2c6df50f7f87b393993fe6640d017759fe112d0cb1e0119f2b4150a87305cc873fd90831c6a58ccf1c6676 languageName: node6677 linkType: hard66786679"yargs-unparser@npm:2.0.0":6680 version: 2.0.06681 resolution: "yargs-unparser@npm:2.0.0"6682 dependencies:6683 camelcase: ^6.0.06684 decamelize: ^4.0.06685 flat: ^5.0.26686 is-plain-obj: ^2.1.06687 checksum: 68f9a542c6927c3768c2f16c28f71b19008710abd6b8f8efbac6dcce26bbb68ab6503bed1d5994bdbc2df9a5c87c161110c1dfe04c6a3fe5c6ad1b0e15d9a8a36688 languageName: node6689 linkType: hard66906691"yargs@npm:16.2.0":6692 version: 16.2.06693 resolution: "yargs@npm:16.2.0"6694 dependencies:6695 cliui: ^7.0.26696 escalade: ^3.1.16697 get-caller-file: ^2.0.56698 require-directory: ^2.1.16699 string-width: ^4.2.06700 y18n: ^5.0.56701 yargs-parser: ^20.2.26702 checksum: b14afbb51e3251a204d81937c86a7e9d4bdbf9a2bcee38226c900d00f522969ab675703bee2a6f99f8e20103f608382936034e64d921b74df82b63c07c5e8f596703 languageName: node6704 linkType: hard67056706"yargs@npm:^17.7.2":6707 version: 17.7.26708 resolution: "yargs@npm:17.7.2"6709 dependencies:6710 cliui: ^8.0.16711 escalade: ^3.1.16712 get-caller-file: ^2.0.56713 require-directory: ^2.1.16714 string-width: ^4.2.36715 y18n: ^5.0.56716 yargs-parser: ^21.1.16717 checksum: 73b572e863aa4a8cbef323dd911d79d193b772defd5a51aab0aca2d446655216f5002c42c5306033968193bdbf892a7a4c110b0d77954a7fdf563e653967b56a6718 languageName: node6719 linkType: hard67206721"yn@npm:3.1.1":6722 version: 3.1.16723 resolution: "yn@npm:3.1.1"6724 checksum: 2c487b0e149e746ef48cda9f8bad10fc83693cd69d7f9dcd8be4214e985de33a29c9e24f3c0d6bcf2288427040a8947406ab27f7af67ee9456e6b84854f02dd66725 languageName: node6726 linkType: hard67276728"yocto-queue@npm:^0.1.0":6729 version: 0.1.06730 resolution: "yocto-queue@npm:0.1.0"6731 checksum: f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc7006732 languageName: node6733 linkType: hard