From 204908ca6a0c9b36e131db4c958415e4c5c6670e Mon Sep 17 00:00:00 2001 From: open-junius Date: Thu, 4 Jun 2026 21:04:00 +0800 Subject: [PATCH 01/36] migrate contract e2e --- ts-tests/moonwall.config.json | 32 ++++++++ ts-tests/pnpm-workspace.yaml | 13 +++ .../00-evm-substrate-transfer.test.ts | 79 +++++++++++++++++++ ts-tests/utils/address.ts | 30 +++++++ ts-tests/utils/balance.ts | 5 ++ ts-tests/utils/index.ts | 13 +-- 6 files changed, 167 insertions(+), 5 deletions(-) create mode 100644 ts-tests/suites/zombienet_evm/00-evm-substrate-transfer.test.ts create mode 100644 ts-tests/utils/address.ts diff --git a/ts-tests/moonwall.config.json b/ts-tests/moonwall.config.json index cc5667af9f..0b37cf37af 100644 --- a/ts-tests/moonwall.config.json +++ b/ts-tests/moonwall.config.json @@ -120,6 +120,38 @@ "endpoints": ["ws://127.0.0.1:9947"] } ] + }, { + "name": "zombienet_evm", + "timeout": 600000, + "testFileDir": ["suites/zombienet_evm"], + "runScripts": [ + "generate-types.sh", + "build-spec.sh" + ], + "foundation": { + "type": "zombie", + "zombieSpec": { + "configPath": "./configs/zombie_node.json", + "skipBlockCheck": [] + } + }, + "vitestArgs": { + "bail": 1 + }, + "connections": [ + { + "name": "Node", + "type": "papi", + "endpoints": ["ws://127.0.0.1:9947"], + "descriptor": "subtensor" + }, + { + "name": "EVM", + "type": "ethers", + "endpoints": ["http://127.0.0.1:9947"], + "descriptor": "evm" + } + ] }, { "name": "zombienet_subnets", "timeout": 600000, diff --git a/ts-tests/pnpm-workspace.yaml b/ts-tests/pnpm-workspace.yaml index 856299a3ed..85e8725741 100644 --- a/ts-tests/pnpm-workspace.yaml +++ b/ts-tests/pnpm-workspace.yaml @@ -13,3 +13,16 @@ onlyBuiltDependencies: - protobufjs - sqlite3 - ssh2 + +# Allow exotic subdependencies (needed for toml dependency) +allowExoticSubdeps: true + +allowBuilds: + '@biomejs/biome': set this to true or false + '@parcel/watcher': set this to true or false + cpu-features: set this to true or false + esbuild: set this to true or false + msgpackr-extract: set this to true or false + protobufjs: set this to true or false + sqlite3: set this to true or false + ssh2: set this to true or false diff --git a/ts-tests/suites/zombienet_evm/00-evm-substrate-transfer.test.ts b/ts-tests/suites/zombienet_evm/00-evm-substrate-transfer.test.ts new file mode 100644 index 0000000000..bf3ce87726 --- /dev/null +++ b/ts-tests/suites/zombienet_evm/00-evm-substrate-transfer.test.ts @@ -0,0 +1,79 @@ +import { beforeAll, describeSuite, expect } from "@moonwall/cli"; +import { subtensor } from "@polkadot-api/descriptors"; +import { ethers } from "ethers"; +import type { TypedApi } from "polkadot-api"; +import { convertH160ToSS58, forceSetBalance, raoToEth, tao, waitForFinalizedBlocks } from "../../utils"; + +function createEthersWallet(provider: ethers.JsonRpcProvider): ethers.Wallet { + const account = ethers.Wallet.createRandom(); + return new ethers.Wallet(account.privateKey, provider); +} + +async function estimateTransactionCost( + provider: ethers.Provider, + tx: ethers.TransactionRequest, +): Promise { + const feeData = await provider.getFeeData(); + const estimatedGas = await provider.estimateGas(tx); + const gasPrice = feeData.gasPrice ?? feeData.maxFeePerGas; + if (gasPrice == null) { + return estimatedGas; + } + return estimatedGas * gasPrice; +} + +describeSuite({ + id: "evm-substrate-transfer-basic", + title: "Basic EVM-Substrate Transfer Tests", + foundationMethods: "zombie", + testCases: ({ it, context }) => { + let api: TypedApi; + let ethWallet: ethers.Wallet; + let ethWallet2: ethers.Wallet; + + beforeAll(async () => { + api = context.papi("Node").getTypedApi(subtensor); + + const provider = context.ethers("EVM").provider as ethers.JsonRpcProvider; + ethWallet = createEthersWallet(provider); + ethWallet2 = createEthersWallet(provider); + + await forceSetBalance(api, convertH160ToSS58(ethWallet.address)); + await forceSetBalance(api, convertH160ToSS58(ethWallet2.address)); + await waitForFinalizedBlocks(api, 1); + }, 120000); + + it({ + id: "T01", + title: "Can transfer token from EVM to EVM", + test: async () => { + const provider = ethWallet.provider; + if (provider == null) { + throw new Error("ethWallet has no provider"); + } + + const senderBalanceBefore = await provider.getBalance(ethWallet.address); + const receiverBalanceBefore = await provider.getBalance(ethWallet2.address); + + const transferAmount = raoToEth(tao(1)); + const tx: ethers.TransactionRequest = { + to: ethWallet2.address, + value: transferAmount, + }; + + const txFee = await estimateTransactionCost(provider, tx); + + const txResponse = await ethWallet.sendTransaction(tx); + const receipt = await txResponse.wait(); + expect(receipt).toBeDefined(); + expect(receipt!.status).toEqual(1); + + const senderBalanceAfter = await provider.getBalance(ethWallet.address); + const receiverBalanceAfter = await provider.getBalance(ethWallet2.address); + + expect(senderBalanceAfter).toEqual(senderBalanceBefore - transferAmount - txFee); + expect(receiverBalanceAfter).toEqual(receiverBalanceBefore + transferAmount); + }, + }); + }, +}); diff --git a/ts-tests/utils/address.ts b/ts-tests/utils/address.ts new file mode 100644 index 0000000000..8e7909c20f --- /dev/null +++ b/ts-tests/utils/address.ts @@ -0,0 +1,30 @@ +import { hexToU8a } from "@polkadot/util"; +import { blake2AsU8a, encodeAddress } from "@polkadot/util-crypto"; + +const SS58_PREFIX = 42; + +export function convertH160ToPublicKey(ethAddress: string) { + const prefix = "evm:"; + const prefixBytes = new TextEncoder().encode(prefix); + const addressBytes = hexToU8a( + ethAddress.startsWith("0x") ? ethAddress : `0x${ethAddress}` + ); + const combined = new Uint8Array(prefixBytes.length + addressBytes.length); + + // Concatenate prefix and Ethereum address + combined.set(prefixBytes); + combined.set(addressBytes, prefixBytes.length); + + // Hash the combined data (the public key) + const hash = blake2AsU8a(combined); + return hash; +} + +export function convertH160ToSS58(ethAddress: string) { + // get the public key + const hash = convertH160ToPublicKey(ethAddress); + + // Convert the hash to SS58 format + const ss58Address = encodeAddress(hash, SS58_PREFIX); + return ss58Address; +} \ No newline at end of file diff --git a/ts-tests/utils/balance.ts b/ts-tests/utils/balance.ts index f6fe83d3b0..9794f2d9cb 100644 --- a/ts-tests/utils/balance.ts +++ b/ts-tests/utils/balance.ts @@ -9,6 +9,11 @@ export function tao(value: number): bigint { return TAO * BigInt(value); } +/** Convert RAO to the EVM native balance unit (1 RAO → 1 gwei on-chain). */ +export function raoToEth(rao: bigint): bigint { + return TAO * rao; +} + export async function getBalance(api: TypedApi, ss58Address: string): Promise { const account = await api.query.System.Account.getValue(ss58Address); return account.data.free; diff --git a/ts-tests/utils/index.ts b/ts-tests/utils/index.ts index b3aa36d528..499d4ea469 100644 --- a/ts-tests/utils/index.ts +++ b/ts-tests/utils/index.ts @@ -1,7 +1,10 @@ -export * from "./transactions.js"; -export * from "./balance.js"; -export * from "./subnet.js"; -export * from "./staking.js"; -export * from "./shield_helpers.ts"; export * from "./account.ts"; +export * from "./address.ts"; +export * from "./balance.js"; export * from "./coldkey_swap.ts"; +export * from "./config.js"; +export * from "./shield_helpers.ts"; +export * from "./staking.js"; +export * from "./subnet.js"; +export * from "./transactions.js"; + From 8959e8f5aaa989438ec5ed57af3d22fe0f125665 Mon Sep 17 00:00:00 2001 From: "subtensor-ai-review[bot]" Date: Thu, 4 Jun 2026 13:13:15 +0000 Subject: [PATCH 02/36] chore: auditor auto-fix --- ts-tests/utils/address.ts | 2 +- ts-tests/utils/index.ts | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/ts-tests/utils/address.ts b/ts-tests/utils/address.ts index 8e7909c20f..858cf06833 100644 --- a/ts-tests/utils/address.ts +++ b/ts-tests/utils/address.ts @@ -27,4 +27,4 @@ export function convertH160ToSS58(ethAddress: string) { // Convert the hash to SS58 format const ss58Address = encodeAddress(hash, SS58_PREFIX); return ss58Address; -} \ No newline at end of file +} diff --git a/ts-tests/utils/index.ts b/ts-tests/utils/index.ts index 499d4ea469..9e5c56527a 100644 --- a/ts-tests/utils/index.ts +++ b/ts-tests/utils/index.ts @@ -7,4 +7,3 @@ export * from "./shield_helpers.ts"; export * from "./staking.js"; export * from "./subnet.js"; export * from "./transactions.js"; - From faaf2732d5c15a9f9553f2df7d6aada6f21b1927 Mon Sep 17 00:00:00 2001 From: open-junius Date: Thu, 4 Jun 2026 22:36:18 +0800 Subject: [PATCH 03/36] update ci configure --- .github/workflows/typescript-e2e.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/typescript-e2e.yml b/.github/workflows/typescript-e2e.yml index 82c63e1356..d2b1182640 100644 --- a/.github/workflows/typescript-e2e.yml +++ b/.github/workflows/typescript-e2e.yml @@ -107,6 +107,8 @@ jobs: binary: fast - test: zombienet_subnets binary: fast + - test: zombienet_evm + binary: fast name: "typescript-e2e-${{ matrix.test }}" From 5ed2219fc86cbce5a208d037991318147208ae6e Mon Sep 17 00:00:00 2001 From: open-junius Date: Thu, 4 Jun 2026 23:43:50 +0800 Subject: [PATCH 04/36] fmt file --- ts-tests/utils/address.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ts-tests/utils/address.ts b/ts-tests/utils/address.ts index 858cf06833..fb9c171c33 100644 --- a/ts-tests/utils/address.ts +++ b/ts-tests/utils/address.ts @@ -7,7 +7,7 @@ export function convertH160ToPublicKey(ethAddress: string) { const prefix = "evm:"; const prefixBytes = new TextEncoder().encode(prefix); const addressBytes = hexToU8a( - ethAddress.startsWith("0x") ? ethAddress : `0x${ethAddress}` + ethAddress.startsWith("0x") ? ethAddress : `0x${ethAddress}`, ); const combined = new Uint8Array(prefixBytes.length + addressBytes.length); From 62e1210707a24cafa53af45224c18242b94d1977 Mon Sep 17 00:00:00 2001 From: open-junius Date: Fri, 5 Jun 2026 09:29:21 +0800 Subject: [PATCH 05/36] fix format --- .../suites/zombienet_evm/00-evm-substrate-transfer.test.ts | 5 +---- ts-tests/utils/address.ts | 4 +--- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/ts-tests/suites/zombienet_evm/00-evm-substrate-transfer.test.ts b/ts-tests/suites/zombienet_evm/00-evm-substrate-transfer.test.ts index bf3ce87726..ffb92bcbf9 100644 --- a/ts-tests/suites/zombienet_evm/00-evm-substrate-transfer.test.ts +++ b/ts-tests/suites/zombienet_evm/00-evm-substrate-transfer.test.ts @@ -9,10 +9,7 @@ function createEthersWallet(provider: ethers.JsonRpcProvider): ethers.Wallet { return new ethers.Wallet(account.privateKey, provider); } -async function estimateTransactionCost( - provider: ethers.Provider, - tx: ethers.TransactionRequest, -): Promise { +async function estimateTransactionCost(provider: ethers.Provider, tx: ethers.TransactionRequest): Promise { const feeData = await provider.getFeeData(); const estimatedGas = await provider.estimateGas(tx); const gasPrice = feeData.gasPrice ?? feeData.maxFeePerGas; diff --git a/ts-tests/utils/address.ts b/ts-tests/utils/address.ts index fb9c171c33..fa603e675e 100644 --- a/ts-tests/utils/address.ts +++ b/ts-tests/utils/address.ts @@ -6,9 +6,7 @@ const SS58_PREFIX = 42; export function convertH160ToPublicKey(ethAddress: string) { const prefix = "evm:"; const prefixBytes = new TextEncoder().encode(prefix); - const addressBytes = hexToU8a( - ethAddress.startsWith("0x") ? ethAddress : `0x${ethAddress}`, - ); + const addressBytes = hexToU8a(ethAddress.startsWith("0x") ? ethAddress : `0x${ethAddress}`); const combined = new Uint8Array(prefixBytes.length + addressBytes.length); // Concatenate prefix and Ethereum address From 5ffa34474d56e2a0db50a6069b0287cf8b01a9b2 Mon Sep 17 00:00:00 2001 From: open-junius Date: Fri, 5 Jun 2026 10:08:28 +0800 Subject: [PATCH 06/36] commit Cargo.lock --- pallets/subtensor/src/staking/order_swap.rs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/pallets/subtensor/src/staking/order_swap.rs b/pallets/subtensor/src/staking/order_swap.rs index 98643caae6..bac78742eb 100644 --- a/pallets/subtensor/src/staking/order_swap.rs +++ b/pallets/subtensor/src/staking/order_swap.rs @@ -47,10 +47,7 @@ impl OrderSwapInterface for Pallet { ); } let alpha_out = - Self::stake_into_subnet(hotkey, coldkey, netuid, tao_amount, amm_limit, false, false)?; - if validate { - Self::set_stake_operation_limit(hotkey, coldkey, netuid); - } + Self::stake_into_subnet(hotkey, coldkey, netuid, tao_amount, amm_limit, false)?; Ok(alpha_out) } @@ -136,7 +133,6 @@ impl OrderSwapInterface for Pallet { TaoBalance::from(tao_equiv) >= DefaultMinStake::::get(), Error::::AmountTooLow ); - Self::ensure_stake_operation_limit_not_exceeded(from_hotkey, from_coldkey, netuid)?; Self::ensure_available_to_unstake(from_coldkey, netuid, amount)?; } @@ -145,7 +141,6 @@ impl OrderSwapInterface for Pallet { Self::hotkey_account_exists(to_hotkey), Error::::HotKeyAccountNotExists ); - Self::set_stake_operation_limit(to_hotkey, to_coldkey, netuid); } let available = From b1718a84f72bda5c9cea89fd0c7fd73b0dd819f2 Mon Sep 17 00:00:00 2001 From: open-junius Date: Fri, 5 Jun 2026 10:39:10 +0800 Subject: [PATCH 07/36] remove config import --- ts-tests/utils/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ts-tests/utils/index.ts b/ts-tests/utils/index.ts index 9e5c56527a..3a91d860a0 100644 --- a/ts-tests/utils/index.ts +++ b/ts-tests/utils/index.ts @@ -2,8 +2,8 @@ export * from "./account.ts"; export * from "./address.ts"; export * from "./balance.js"; export * from "./coldkey_swap.ts"; -export * from "./config.js"; export * from "./shield_helpers.ts"; export * from "./staking.js"; export * from "./subnet.js"; export * from "./transactions.js"; + From 86ffee76f706cbbbcf5f5d3635d9f21447e8de76 Mon Sep 17 00:00:00 2001 From: open-junius Date: Fri, 5 Jun 2026 21:21:12 +0800 Subject: [PATCH 08/36] migrate whole evm substrate transfer test --- .../test/eth.substrate-transfer.test.ts | 407 --------------- .../00-evm-substrate-transfer.test.ts | 486 +++++++++++++++++- ts-tests/utils/address.ts | 42 +- ts-tests/utils/balance.ts | 15 +- ts-tests/utils/evm-config.ts | 46 ++ ts-tests/utils/evm.ts | 29 ++ ts-tests/utils/index.ts | 2 + ts-tests/utils/transactions.ts | 6 +- 8 files changed, 587 insertions(+), 446 deletions(-) delete mode 100644 contract-tests/test/eth.substrate-transfer.test.ts create mode 100644 ts-tests/utils/evm-config.ts create mode 100644 ts-tests/utils/evm.ts diff --git a/contract-tests/test/eth.substrate-transfer.test.ts b/contract-tests/test/eth.substrate-transfer.test.ts deleted file mode 100644 index fc8073585c..0000000000 --- a/contract-tests/test/eth.substrate-transfer.test.ts +++ /dev/null @@ -1,407 +0,0 @@ -import * as assert from "assert"; - -import { getDevnetApi, waitForTransactionCompletion, getRandomSubstrateSigner, waitForTransactionWithRetry } from "../src/substrate" -import { getPublicClient } from "../src/utils"; -import { ETH_LOCAL_URL, IBALANCETRANSFER_ADDRESS, IBalanceTransferABI } from "../src/config"; -import { devnet, MultiAddress } from "@polkadot-api/descriptors" -import { PublicClient } from "viem"; -import { TypedApi, Binary, FixedSizeBinary } from "polkadot-api"; -import { generateRandomEthersWallet } from "../src/utils"; -import { tao, raoToEth, bigintToRao, compareEthBalanceWithTxFee } from "../src/balance-math"; -import { toViemAddress, convertPublicKeyToSs58, convertH160ToSS58, ss58ToH160, ss58ToEthAddress, ethAddressToH160 } from "../src/address-utils" -import { ethers } from "ethers" -import { estimateTransactionCost, getContract } from "../src/eth" - -import { WITHDRAW_CONTRACT_ABI, WITHDRAW_CONTRACT_BYTECODE } from "../src/contracts/withdraw" - -import { forceSetBalanceToEthAddress, forceSetBalanceToSs58Address, disableWhiteListCheck } from "../src/subtensor"; - -describe("Balance transfers between substrate and EVM", () => { - const gwei = BigInt("1000000000"); - // init eth part - const wallet = generateRandomEthersWallet(); - const wallet2 = generateRandomEthersWallet(); - let publicClient: PublicClient; - const provider = new ethers.JsonRpcProvider(ETH_LOCAL_URL); - // init substrate part - const signer = getRandomSubstrateSigner(); - let api: TypedApi - - before(async () => { - - publicClient = await getPublicClient(ETH_LOCAL_URL) - api = await getDevnetApi() - - await forceSetBalanceToEthAddress(api, wallet.address) - await forceSetBalanceToEthAddress(api, wallet2.address) - await forceSetBalanceToSs58Address(api, convertPublicKeyToSs58(signer.publicKey)) - await disableWhiteListCheck(api, true) - }); - - it("Can transfer token from EVM to EVM", async () => { - const senderBalance = await publicClient.getBalance({ address: toViemAddress(wallet.address) }) - const receiverBalance = await publicClient.getBalance({ address: toViemAddress(wallet2.address) }) - const transferBalance = raoToEth(tao(1)) - const tx = { - to: wallet2.address, - value: transferBalance.toString() - } - const txFee = await estimateTransactionCost(provider, tx) - - const txResponse = await wallet.sendTransaction(tx) - await txResponse.wait(); - - - const senderBalanceAfterTransfer = await publicClient.getBalance({ address: toViemAddress(wallet.address) }) - const receiverBalanceAfterTranser = await publicClient.getBalance({ address: toViemAddress(wallet2.address) }) - - assert.equal(senderBalanceAfterTransfer, senderBalance - transferBalance - txFee) - assert.equal(receiverBalance, receiverBalanceAfterTranser - transferBalance) - }); - - it("Can transfer token from Substrate to EVM", async () => { - const ss58Address = convertH160ToSS58(wallet.address) - const senderBalance = (await api.query.System.Account.getValue(ss58Address)).data.free - const receiverBalance = await publicClient.getBalance({ address: toViemAddress(wallet.address) }) - const transferBalance = tao(1) - - const tx = api.tx.Balances.transfer_keep_alive({ value: transferBalance, dest: MultiAddress.Id(ss58Address) }) - await waitForTransactionWithRetry(api, tx, signer) - - const senderBalanceAfterTransfer = (await api.query.System.Account.getValue(ss58Address)).data.free - const receiverBalanceAfterTranser = await publicClient.getBalance({ address: toViemAddress(wallet.address) }) - - assert.equal(senderBalanceAfterTransfer, senderBalance + transferBalance) - assert.equal(receiverBalance, receiverBalanceAfterTranser - raoToEth(transferBalance)) - }); - - it("Can transfer token from EVM to Substrate", async () => { - const contract = getContract(IBALANCETRANSFER_ADDRESS, IBalanceTransferABI, wallet) - const senderBalance = await publicClient.getBalance({ address: toViemAddress(wallet.address) }) - const receiverBalance = (await api.query.System.Account.getValue(convertPublicKeyToSs58(signer.publicKey))).data.free - const transferBalance = raoToEth(tao(1)) - - const tx = await contract.transfer(signer.publicKey, { value: transferBalance.toString() }) - await tx.wait() - - - const senderBalanceAfterTransfer = await publicClient.getBalance({ address: toViemAddress(wallet.address) }) - const receiverBalanceAfterTranser = (await api.query.System.Account.getValue(convertPublicKeyToSs58(signer.publicKey))).data.free - - compareEthBalanceWithTxFee(senderBalanceAfterTransfer, senderBalance - transferBalance) - assert.equal(receiverBalance, receiverBalanceAfterTranser - tao(1)) - }); - - it("Transfer from EVM to substrate using evm::withdraw", async () => { - const ss58Address = convertPublicKeyToSs58(signer.publicKey) - const senderBalance = (await api.query.System.Account.getValue(ss58Address)).data.free - const ethAddresss = ss58ToH160(ss58Address); - - // transfer token to mirror eth address - const ethTransfer = { - to: ss58ToEthAddress(ss58Address), - value: raoToEth(tao(2)).toString() - } - - const txResponse = await wallet.sendTransaction(ethTransfer) - await txResponse.wait(); - - const tx = api.tx.EVM.withdraw({ address: ethAddresss, value: tao(1) }) - const txFee = (await tx.getPaymentInfo(ss58Address)).partial_fee - - await waitForTransactionWithRetry(api, tx, signer) - - const senderBalanceAfterWithdraw = (await api.query.System.Account.getValue(ss58Address)).data.free - - assert.equal(senderBalance, senderBalanceAfterWithdraw - tao(1) + txFee) - }); - - it("Transfer from EVM to substrate using evm::call", async () => { - const ss58Address = convertPublicKeyToSs58(signer.publicKey) - const ethAddresss = ss58ToH160(ss58Address); - - // transfer token to mirror eth address - const ethTransfer = { - to: ss58ToEthAddress(ss58Address), - value: raoToEth(tao(2)).toString() - } - - const txResponse = await wallet.sendTransaction(ethTransfer) - await txResponse.wait(); - - const source: FixedSizeBinary<20> = ethAddresss; - const target = ethAddressToH160(wallet.address) - const receiverBalance = await publicClient.getBalance({ address: toViemAddress(wallet.address) }) - - // all these parameter value are tricky, any change could make the call failed - const tx = api.tx.EVM.call({ - source: source, - target: target, - // it is U256 in the extrinsic. - value: [raoToEth(tao(1)), tao(0), tao(0), tao(0)], - gas_limit: BigInt(1000000), - // it is U256 in the extrinsic. - max_fee_per_gas: [BigInt(10e9), BigInt(0), BigInt(0), BigInt(0)], - max_priority_fee_per_gas: undefined, - input: Binary.fromText(""), - nonce: undefined, - access_list: [], - authorization_list: [] - }) - // txFee not accurate - const txFee = (await tx.getPaymentInfo(ss58Address)).partial_fee - - await waitForTransactionWithRetry(api, tx, signer) - - const receiverBalanceAfterCall = await publicClient.getBalance({ address: toViemAddress(wallet.address) }) - assert.equal(receiverBalanceAfterCall, receiverBalance + raoToEth(tao(1))) - }); - - it("Forward value in smart contract", async () => { - - - const contractFactory = new ethers.ContractFactory(WITHDRAW_CONTRACT_ABI, WITHDRAW_CONTRACT_BYTECODE, wallet) - const contract = await contractFactory.deploy() - await contract.waitForDeployment() - - const code = await publicClient.getCode({ address: toViemAddress(contract.target.toString()) }) - if (code === undefined) { - throw new Error("code length is wrong for deployed contract") - } - assert.ok(code.length > 100) - - // transfer 2 TAO to contract - const ethTransfer = { - to: contract.target.toString(), - value: raoToEth(tao(2)).toString() - } - - const txResponse = await wallet.sendTransaction(ethTransfer) - await txResponse.wait(); - - const contractBalance = await publicClient.getBalance({ address: toViemAddress(contract.target.toString()) }) - const callerBalance = await publicClient.getBalance({ address: toViemAddress(wallet.address) }) - - const contractForCall = new ethers.Contract(contract.target.toString(), WITHDRAW_CONTRACT_ABI, wallet) - - const withdrawTx = await contractForCall.withdraw( - raoToEth(tao(1)).toString() - ); - - await withdrawTx.wait(); - - const contractBalanceAfterWithdraw = await publicClient.getBalance({ address: toViemAddress(contract.target.toString()) }) - const callerBalanceAfterWithdraw = await publicClient.getBalance({ address: toViemAddress(wallet.address) }) - - compareEthBalanceWithTxFee(callerBalanceAfterWithdraw, callerBalance + raoToEth(tao(1))) - assert.equal(contractBalance, contractBalanceAfterWithdraw + raoToEth(tao(1))) - }); - - it("Transfer full balance", async () => { - const ethBalance = await publicClient.getBalance({ address: toViemAddress(wallet.address) }) - const receiverBalance = await publicClient.getBalance({ address: toViemAddress(wallet2.address) }) - const tx = { - to: wallet2.address, - value: ethBalance.toString(), - }; - const txPrice = await estimateTransactionCost(provider, tx); - const finalTx = { - to: wallet2.address, - value: (ethBalance - txPrice).toString(), - }; - try { - // transfer should be failed since substrate requires existial balance to keep account - const txResponse = await wallet.sendTransaction(finalTx) - await txResponse.wait(); - } catch (error) { - if (error instanceof Error) { - assert.equal((error as any).code, "INSUFFICIENT_FUNDS") - assert.equal(error.toString().includes("insufficient funds"), true) - } - } - - const receiverBalanceAfterTransfer = await publicClient.getBalance({ address: toViemAddress(wallet2.address) }) - assert.equal(receiverBalance, receiverBalanceAfterTransfer) - }) - - it("Transfer more than owned balance should fail", async () => { - const ethBalance = await publicClient.getBalance({ address: toViemAddress(wallet.address) }) - const receiverBalance = await publicClient.getBalance({ address: toViemAddress(wallet2.address) }) - const tx = { - to: wallet2.address, - value: (ethBalance + raoToEth(tao(1))).toString(), - }; - - try { - // transfer should be failed since substrate requires existial balance to keep account - const txResponse = await wallet.sendTransaction(tx) - await txResponse.wait(); - } catch (error) { - if (error instanceof Error) { - assert.equal((error as any).code, "INSUFFICIENT_FUNDS") - assert.equal(error.toString().includes("insufficient funds"), true) - } - } - - const receiverBalanceAfterTransfer = await publicClient.getBalance({ address: toViemAddress(wallet2.address) }) - assert.equal(receiverBalance, receiverBalanceAfterTransfer) - }); - - it("Transfer more than u64::max in substrate equivalent should receive error response", async () => { - const receiverBalance = await publicClient.getBalance({ address: toViemAddress(wallet2.address) }) - try { - const tx = { - to: wallet2.address, - value: raoToEth(BigInt(2) ** BigInt(64)).toString(), - }; - // transfer should be failed since substrate requires existial balance to keep account - const txResponse = await wallet.sendTransaction(tx) - await txResponse.wait(); - } catch (error) { - if (error instanceof Error) { - assert.equal((error as any).code, "INSUFFICIENT_FUNDS") - assert.equal(error.toString().includes("insufficient funds"), true) - } - } - - const contract = getContract(IBALANCETRANSFER_ADDRESS, IBalanceTransferABI, wallet) - try { - const tx = await contract.transfer(signer.publicKey, { value: raoToEth(BigInt(2) ** BigInt(64)).toString() }) - await tx.await() - } catch (error) { - if (error instanceof Error) { - console.log(error.toString()) - assert.equal(error.toString().includes("revert data"), true) - } - } - - try { - const dest = convertH160ToSS58(wallet2.address) - const tx = api.tx.Balances.transfer_keep_alive({ value: bigintToRao(BigInt(2) ** BigInt(64)), dest: MultiAddress.Id(dest) }) - await waitForTransactionCompletion(api, tx, signer) - .then(() => { }) - .catch((error) => { console.log(`transaction error ${error}`) }); - } catch (error) { - if (error instanceof Error) { - console.log(error.toString()) - assert.equal(error.toString().includes("Cannot convert"), true) - } - } - - try { - const dest = ethAddressToH160(wallet2.address) - const tx = api.tx.EVM.withdraw({ value: bigintToRao(BigInt(2) ** BigInt(64)), address: dest }) - await waitForTransactionCompletion(api, tx, signer) - .then(() => { }) - .catch((error) => { console.log(`transaction error ${error}`) }); - } catch (error) { - if (error instanceof Error) { - assert.equal(error.toString().includes("Cannot convert"), true) - } - } - - try { - const source = ethAddressToH160(wallet.address) - const target = ethAddressToH160(wallet2.address) - const tx = api.tx.EVM.call({ - source: source, - target: target, - // it is U256 in the extrinsic, the value is more than u64::MAX - value: [raoToEth(tao(1)), tao(0), tao(0), tao(1)], - gas_limit: BigInt(1000000), - // it is U256 in the extrinsic. - max_fee_per_gas: [BigInt(10e9), BigInt(0), BigInt(0), BigInt(0)], - max_priority_fee_per_gas: undefined, - input: Binary.fromText(""), - nonce: undefined, - access_list: [], - authorization_list: [] - }) - await waitForTransactionCompletion(api, tx, signer) - .then(() => { }) - .catch((error) => { console.log(`transaction error ${error}`) }); - } catch (error) { - if (error instanceof Error) { - console.log(error.toString()) - assert.equal((error as any).code, "INSUFFICIENT_FUNDS") - assert.equal(error.toString().includes("insufficient funds"), true) - } - } - - const receiverBalanceAfterTransfer = await publicClient.getBalance({ address: toViemAddress(wallet2.address) }) - assert.equal(receiverBalance, receiverBalanceAfterTransfer) - }); - - it("Gas price should be 10 GWei", async () => { - const feeData = await provider.getFeeData(); - assert.equal(feeData.gasPrice, BigInt(10000000000)); - }); - - - it("max_fee_per_gas and max_priority_fee_per_gas affect transaction fee properly", async () => { - - const testCases = [ - [10, 0, 21000 * 10 * 1e9], - [10, 10, 21000 * 10 * 1e9], - [11, 0, 21000 * 10 * 1e9], - // max_priority_fee_per_gas is disabled - // [11, 1, (21000 * 10 + 21000) * 1e9], - // [11, 2, (21000 * 10 + 21000) * 1e9], - ]; - - for (let i in testCases) { - const tc = testCases[i]; - const actualFee = await transferAndGetFee( - wallet, wallet2, publicClient, - gwei * BigInt(tc[0]), - gwei * BigInt(tc[1]) - ); - assert.equal(actualFee, BigInt(tc[2])) - } - }); - - it("Low max_fee_per_gas gets transaction rejected", async () => { - try { - await transferAndGetFee(wallet, wallet2, publicClient, gwei * BigInt(9), BigInt(0)) - } catch (error) { - if (error instanceof Error) { - console.log(error.toString()) - assert.equal(error.toString().includes("gas price less than block base fee"), true) - } - } - }); - - it("max_fee_per_gas lower than max_priority_fee_per_gas gets transaction rejected", async () => { - try { - await transferAndGetFee(wallet, wallet2, publicClient, gwei * BigInt(10), gwei * BigInt(11)) - } catch (error) { - if (error instanceof Error) { - assert.equal(error.toString().includes("priorityFee cannot be more than maxFee"), true) - } - } - }); -}); - -async function transferAndGetFee(wallet: ethers.Wallet, wallet2: ethers.Wallet, client: PublicClient, max_fee_per_gas: BigInt, max_priority_fee_per_gas: BigInt) { - - const ethBalanceBefore = await client.getBalance({ address: toViemAddress(wallet.address) }) - // Send TAO - const tx = { - to: wallet2.address, - value: raoToEth(tao(1)).toString(), - // EIP-1559 transaction parameters - maxPriorityFeePerGas: max_priority_fee_per_gas.toString(), - maxFeePerGas: max_fee_per_gas.toString(), - gasLimit: 21000, - }; - - // Send the transaction - const txResponse = await wallet.sendTransaction(tx); - await txResponse.wait() - - // Check balances - const ethBalanceAfter = await client.getBalance({ address: toViemAddress(wallet.address) }) - const fee = ethBalanceBefore - ethBalanceAfter - raoToEth(tao(1)) - - return fee; -} \ No newline at end of file diff --git a/ts-tests/suites/zombienet_evm/00-evm-substrate-transfer.test.ts b/ts-tests/suites/zombienet_evm/00-evm-substrate-transfer.test.ts index ffb92bcbf9..36980228e7 100644 --- a/ts-tests/suites/zombienet_evm/00-evm-substrate-transfer.test.ts +++ b/ts-tests/suites/zombienet_evm/00-evm-substrate-transfer.test.ts @@ -1,15 +1,39 @@ import { beforeAll, describeSuite, expect } from "@moonwall/cli"; -import { subtensor } from "@polkadot-api/descriptors"; +import { MultiAddress, subtensor } from "@polkadot-api/descriptors"; +import type { KeyringPair } from "@polkadot/keyring/types"; import { ethers } from "ethers"; import type { TypedApi } from "polkadot-api"; -import { convertH160ToSS58, forceSetBalance, raoToEth, tao, waitForFinalizedBlocks } from "../../utils"; +import { Binary } from "polkadot-api"; +import { + bigintToRao, + convertH160ToSS58, + convertPublicKeyToSs58, + createEthersWallet, + disableWhiteListCheck, + ethAddressToH160, + forceSetBalance, + generateKeyringPair, + getBalance, + getEthBalance, + GWEI, + IBALANCETRANSFER_ADDRESS, + IBalanceTransferABI, + MAX_TX_FEE, + raoToEth, + sendTransaction, + ss58ToEthAddress, + ss58ToH160, + tao, + waitForFinalizedBlocks, + waitForTransactionWithRetry, + WITHDRAW_CONTRACT_ABI, WITHDRAW_CONTRACT_BYTECODE +} from "../../utils"; -function createEthersWallet(provider: ethers.JsonRpcProvider): ethers.Wallet { - const account = ethers.Wallet.createRandom(); - return new ethers.Wallet(account.privateKey, provider); -} -async function estimateTransactionCost(provider: ethers.Provider, tx: ethers.TransactionRequest): Promise { +async function estimateTransactionCost( + provider: ethers.Provider, + tx: ethers.TransactionRequest, +): Promise { const feeData = await provider.getFeeData(); const estimatedGas = await provider.estimateGas(tx); const gasPrice = feeData.gasPrice ?? feeData.maxFeePerGas; @@ -19,6 +43,35 @@ async function estimateTransactionCost(provider: ethers.Provider, tx: ethers.Tra return estimatedGas * gasPrice; } +function expectWithinTxFee(actual: bigint, expected: bigint): void { + const diff = actual > expected ? actual - expected : expected - actual; + expect(diff).toBeLessThan(MAX_TX_FEE); +} + +async function transferAndGetFee( + wallet: ethers.Wallet, + wallet2: ethers.Wallet, + provider: ethers.Provider, + maxFeePerGas: bigint, + maxPriorityFeePerGas: bigint, +): Promise { + const ethBalanceBefore = await getEthBalance(provider, wallet.address); + const tx = { + to: wallet2.address, + value: raoToEth(tao(1)).toString(), + maxPriorityFeePerGas: maxPriorityFeePerGas.toString(), + maxFeePerGas: maxFeePerGas.toString(), + gasLimit: 21000, + }; + + const txResponse = await wallet.sendTransaction(tx); + const receipt = await txResponse.wait(); + expect(receipt?.status).toEqual(1); + + const ethBalanceAfter = await getEthBalance(provider, wallet.address); + return ethBalanceBefore - ethBalanceAfter - raoToEth(tao(1)); +} + describeSuite({ id: "evm-substrate-transfer-basic", title: "Basic EVM-Substrate Transfer Tests", @@ -27,30 +80,30 @@ describeSuite({ let api: TypedApi; let ethWallet: ethers.Wallet; let ethWallet2: ethers.Wallet; + let signer: KeyringPair; + let provider: ethers.JsonRpcProvider; beforeAll(async () => { api = context.papi("Node").getTypedApi(subtensor); - const provider = context.ethers("EVM").provider as ethers.JsonRpcProvider; + provider = context.ethers("EVM").provider as ethers.JsonRpcProvider; ethWallet = createEthersWallet(provider); ethWallet2 = createEthersWallet(provider); + signer = generateKeyringPair("sr25519"); + await forceSetBalance(api, convertPublicKeyToSs58(signer.publicKey)); await forceSetBalance(api, convertH160ToSS58(ethWallet.address)); await forceSetBalance(api, convertH160ToSS58(ethWallet2.address)); + await disableWhiteListCheck(api, true); await waitForFinalizedBlocks(api, 1); - }, 120000); + }, 300000); it({ id: "T01", title: "Can transfer token from EVM to EVM", test: async () => { - const provider = ethWallet.provider; - if (provider == null) { - throw new Error("ethWallet has no provider"); - } - - const senderBalanceBefore = await provider.getBalance(ethWallet.address); - const receiverBalanceBefore = await provider.getBalance(ethWallet2.address); + const senderBalanceBefore = await getEthBalance(provider, ethWallet.address); + const receiverBalanceBefore = await getEthBalance(provider, ethWallet2.address); const transferAmount = raoToEth(tao(1)); const tx: ethers.TransactionRequest = { @@ -65,12 +118,409 @@ describeSuite({ expect(receipt).toBeDefined(); expect(receipt!.status).toEqual(1); - const senderBalanceAfter = await provider.getBalance(ethWallet.address); - const receiverBalanceAfter = await provider.getBalance(ethWallet2.address); + const senderBalanceAfter = await getEthBalance(provider, ethWallet.address); + const receiverBalanceAfter = await getEthBalance(provider, ethWallet2.address); expect(senderBalanceAfter).toEqual(senderBalanceBefore - transferAmount - txFee); expect(receiverBalanceAfter).toEqual(receiverBalanceBefore + transferAmount); }, }); + + it({ + id: "T02", + title: "Can transfer token from Substrate to EVM", + test: async () => { + const ss58Address = convertH160ToSS58(ethWallet.address); + const receiverBalance = await getEthBalance(provider, ethWallet.address); + const transferBalance = tao(1); + + const tx = api.tx.Balances.transfer_keep_alive({ + value: transferBalance, + dest: MultiAddress.Id(ss58Address), + }); + await waitForTransactionWithRetry(api, tx, signer, "substrate_to_evm"); + + const receiverBalanceAfter = await getEthBalance(provider, ethWallet.address); + expect(receiverBalanceAfter).toEqual(receiverBalance + raoToEth(transferBalance)); + }, + }); + + it({ + id: "T03", + title: "Can transfer token from EVM to Substrate", + test: async () => { + const contract = new ethers.Contract( + IBALANCETRANSFER_ADDRESS, + IBalanceTransferABI, + ethWallet, + ); + const signerSs58 = convertPublicKeyToSs58(signer.publicKey); + + const senderBalance = await getEthBalance(provider, ethWallet.address); + const receiverBalance = await getBalance(api, signerSs58); + const transferBalance = raoToEth(tao(1)); + + const tx = await contract.transfer(signer.publicKey, { value: transferBalance.toString() }); + const receipt = await tx.wait(); + expect(receipt?.status).toEqual(1); + + await waitForFinalizedBlocks(api, 2); + + const senderBalanceAfter = await getEthBalance(provider, ethWallet.address); + const receiverBalanceAfter = await getBalance(api, signerSs58); + + expectWithinTxFee(senderBalanceAfter, senderBalance - transferBalance); + expect(receiverBalance).toEqual(receiverBalanceAfter - tao(1)); + }, + }); + + it({ + id: "T04", + title: "Transfer from EVM to substrate using evm::withdraw", + test: async () => { + const ss58Address = convertPublicKeyToSs58(signer.publicKey); + const senderBalance = await getBalance(api, ss58Address); + const ethAddress = ss58ToH160(ss58Address); + + const ethTransfer = { + to: ss58ToEthAddress(ss58Address), + value: raoToEth(tao(2)).toString(), + }; + const fundReceipt = await (await ethWallet.sendTransaction(ethTransfer)).wait(); + expect(fundReceipt?.status).toEqual(1); + + const tx = api.tx.EVM.withdraw({ address: ethAddress, value: tao(1) }); + const txFee = (await tx.getPaymentInfo(ss58Address)).partial_fee; + + await waitForTransactionWithRetry(api, tx, signer, "evm_withdraw", 5); + + const senderBalanceAfterWithdraw = await getBalance(api, ss58Address); + expect(senderBalance).toEqual(senderBalanceAfterWithdraw - tao(1) + txFee); + }, + }); + + it({ + id: "T05", + title: "Transfer from EVM to substrate using evm::call", + test: async () => { + const ss58Address = convertPublicKeyToSs58(signer.publicKey); + const ethAddress = ss58ToH160(ss58Address); + + const ethTransfer = { + to: ss58ToEthAddress(ss58Address), + value: raoToEth(tao(2)).toString(), + }; + const fundReceipt = await (await ethWallet.sendTransaction(ethTransfer)).wait(); + expect(fundReceipt?.status).toEqual(1); + + const source = ethAddress; + const target = ethAddressToH160(ethWallet.address); + const receiverBalance = await getEthBalance(provider, ethWallet.address); + + const tx = api.tx.EVM.call({ + source, + target, + value: [raoToEth(tao(1)), tao(0), tao(0), tao(0)], + gas_limit: BigInt(1000000), + max_fee_per_gas: [BigInt(10e9), BigInt(0), BigInt(0), BigInt(0)], + max_priority_fee_per_gas: undefined, + // PAPI encodes this field with the Binary codec despite the Uint8Array annotation. + input: Binary.fromText("") as unknown as Uint8Array, + nonce: undefined, + access_list: [], + authorization_list: [], + }); + + await waitForTransactionWithRetry(api, tx, signer, "evm_call", 5); + + const receiverBalanceAfterCall = await getEthBalance(provider, ethWallet.address); + expect(receiverBalanceAfterCall).toEqual(receiverBalance + raoToEth(tao(1))); + }, + }); + + it({ + id: "T06", + title: "Forward value in smart contract", + test: async () => { + const contractFactory = new ethers.ContractFactory( + WITHDRAW_CONTRACT_ABI, + WITHDRAW_CONTRACT_BYTECODE, + ethWallet, + ); + const contract = await contractFactory.deploy(); + await contract.waitForDeployment(); + + const contractAddress = contract.target.toString(); + const code = await provider.getCode(contractAddress); + expect(code).toBeDefined(); + expect(code.length).toBeGreaterThan(100); + + const ethTransfer = { + to: contractAddress, + value: raoToEth(tao(2)).toString(), + }; + const fundReceipt = await (await ethWallet.sendTransaction(ethTransfer)).wait(); + expect(fundReceipt?.status).toEqual(1); + + const contractBalance = await getEthBalance(provider, contractAddress); + const callerBalance = await getEthBalance(provider, ethWallet.address); + + const contractForCall = new ethers.Contract(contractAddress, WITHDRAW_CONTRACT_ABI, ethWallet); + const withdrawTx = await contractForCall.withdraw(raoToEth(tao(1)).toString()); + const withdrawReceipt = await withdrawTx.wait(); + expect(withdrawReceipt?.status).toEqual(1); + + const contractBalanceAfterWithdraw = await getEthBalance(provider, contractAddress); + const callerBalanceAfterWithdraw = await getEthBalance(provider, ethWallet.address); + + expectWithinTxFee(callerBalanceAfterWithdraw, callerBalance + raoToEth(tao(1))); + expect(contractBalance).toEqual(contractBalanceAfterWithdraw + raoToEth(tao(1))); + }, + }); + + it({ + id: "T07", + title: "Transfer full balance", + test: async () => { + const ethBalance = await getEthBalance(provider, ethWallet.address); + const receiverBalance = await getEthBalance(provider, ethWallet2.address); + const txPrice = await estimateTransactionCost(provider, { + to: ethWallet2.address, + value: ethBalance.toString(), + }); + const finalTx = { + to: ethWallet2.address, + value: (ethBalance - txPrice).toString(), + }; + + let rejected = false; + try { + const txResponse = await ethWallet.sendTransaction(finalTx); + await txResponse.wait(); + } catch (error) { + rejected = true; + if (error instanceof Error) { + expect( + (error as { code?: string }).code === "INSUFFICIENT_FUNDS" || + error.message.includes("insufficient funds"), + ).toBe(true); + } + } + expect(rejected).toBe(true); + + const receiverBalanceAfterTransfer = await getEthBalance(provider, ethWallet2.address); + expect(receiverBalanceAfterTransfer).toEqual(receiverBalance); + }, + }); + + it({ + id: "T08", + title: "Transfer more than owned balance should fail", + test: async () => { + const ethBalance = await getEthBalance(provider, ethWallet.address); + const receiverBalance = await getEthBalance(provider, ethWallet2.address); + const tx = { + to: ethWallet2.address, + value: (ethBalance + raoToEth(tao(1))).toString(), + }; + + let rejected = false; + try { + const txResponse = await ethWallet.sendTransaction(tx); + await txResponse.wait(); + } catch (error) { + rejected = true; + if (error instanceof Error) { + expect( + (error as { code?: string }).code === "INSUFFICIENT_FUNDS" || + error.message.includes("insufficient funds"), + ).toBe(true); + } + } + expect(rejected).toBe(true); + + const receiverBalanceAfterTransfer = await getEthBalance(provider, ethWallet2.address); + expect(receiverBalanceAfterTransfer).toEqual(receiverBalance); + }, + }); + + it({ + id: "T09", + title: "Transfer more than u64::max in substrate equivalent should receive error response", + test: async () => { + const receiverBalance = await getEthBalance(provider, ethWallet2.address); + const oversize = raoToEth(BigInt(2) ** BigInt(64)); + + let ethRejected = false; + try { + const txResponse = await ethWallet.sendTransaction({ + to: ethWallet2.address, + value: oversize.toString(), + }); + await txResponse.wait(); + } catch (error) { + ethRejected = true; + if (error instanceof Error) { + expect( + (error as { code?: string }).code === "INSUFFICIENT_FUNDS" || + error.message.includes("insufficient funds"), + ).toBe(true); + } + } + expect(ethRejected).toBe(true); + + const contract = new ethers.Contract( + IBALANCETRANSFER_ADDRESS, + IBalanceTransferABI, + ethWallet, + ); + let precompileRejected = false; + try { + const tx = await contract.transfer(signer.publicKey, { value: oversize.toString() }); + await tx.wait(); + } catch (error) { + precompileRejected = true; + if (error instanceof Error) { + expect( + error.message.includes("revert") || + error.message.includes("CALL_EXCEPTION"), + ).toBe(true); + } + } + expect(precompileRejected).toBe(true); + + let balanceTxRejected = false; + try { + const dest = convertH160ToSS58(ethWallet2.address); + const tx = api.tx.Balances.transfer_keep_alive({ + value: bigintToRao(BigInt(2) ** BigInt(64)), + dest: MultiAddress.Id(dest), + }); + const result = await sendTransaction(tx, signer); + balanceTxRejected = !result.success; + } catch { + balanceTxRejected = true; + } + expect(balanceTxRejected).toBe(true); + + let withdrawRejected = false; + try { + const dest = ethAddressToH160(ethWallet2.address); + const tx = api.tx.EVM.withdraw({ + value: bigintToRao(BigInt(2) ** BigInt(64)), + address: dest, + }); + const result = await sendTransaction(tx, signer); + withdrawRejected = !result.success; + } catch { + withdrawRejected = true; + } + expect(withdrawRejected).toBe(true); + + let evmCallRejected = false; + try { + const source = ethAddressToH160(ethWallet.address); + const target = ethAddressToH160(ethWallet2.address); + const tx = api.tx.EVM.call({ + source, + target, + value: [raoToEth(tao(1)), tao(0), tao(0), tao(1)], + gas_limit: BigInt(1000000), + max_fee_per_gas: [BigInt(10e9), BigInt(0), BigInt(0), BigInt(0)], + max_priority_fee_per_gas: undefined, + input: Binary.fromText("") as unknown as Uint8Array, + nonce: undefined, + access_list: [], + authorization_list: [], + }); + const result = await sendTransaction(tx, signer); + evmCallRejected = !result.success; + } catch { + evmCallRejected = true; + } + expect(evmCallRejected).toBe(true); + + const receiverBalanceAfter = await getEthBalance(provider, ethWallet2.address); + expect(receiverBalanceAfter).toEqual(receiverBalance); + }, + }); + + it({ + id: "T10", + title: "Gas price should be 10 GWei", + test: async () => { + const feeData = await provider.getFeeData(); + expect(feeData.gasPrice).toEqual(BigInt(10000000000)); + }, + }); + + it({ + id: "T11", + title: "max_fee_per_gas and max_priority_fee_per_gas affect transaction fee properly", + test: async () => { + const testCases: [number, number, bigint][] = [ + [10, 0, BigInt(21000 * 10) * BigInt(1e9)], + [10, 10, BigInt(21000 * 10) * BigInt(1e9)], + [11, 0, BigInt(21000 * 10) * BigInt(1e9)], + ]; + + for (const [maxFeeGwei, maxPriorityGwei, expectedFee] of testCases) { + const actualFee = await transferAndGetFee( + ethWallet, + ethWallet2, + provider, + GWEI * BigInt(maxFeeGwei), + GWEI * BigInt(maxPriorityGwei), + ); + expect(actualFee).toEqual(expectedFee); + } + }, + }); + + it({ + id: "T12", + title: "Low max_fee_per_gas gets transaction rejected", + test: async () => { + let rejected = false; + try { + await transferAndGetFee( + ethWallet, + ethWallet2, + provider, + GWEI * BigInt(9), + BigInt(0), + ); + } catch (error) { + rejected = true; + if (error instanceof Error) { + expect(error.message.includes("gas price less than block base fee")).toBe(true); + } + } + expect(rejected).toBe(true); + }, + }); + + it({ + id: "T13", + title: "max_fee_per_gas lower than max_priority_fee_per_gas gets transaction rejected", + test: async () => { + let rejected = false; + try { + await transferAndGetFee( + ethWallet, + ethWallet2, + provider, + GWEI * BigInt(10), + GWEI * BigInt(11), + ); + } catch (error) { + rejected = true; + if (error instanceof Error) { + expect(error.message.includes("priorityFee cannot be more than maxFee")).toBe(true); + } + } + expect(rejected).toBe(true); + }, + }); }, }); diff --git a/ts-tests/utils/address.ts b/ts-tests/utils/address.ts index fa603e675e..be22200091 100644 --- a/ts-tests/utils/address.ts +++ b/ts-tests/utils/address.ts @@ -1,28 +1,44 @@ import { hexToU8a } from "@polkadot/util"; -import { blake2AsU8a, encodeAddress } from "@polkadot/util-crypto"; +import { blake2AsU8a, decodeAddress, encodeAddress } from "@polkadot/util-crypto"; +import { Binary } from "polkadot-api"; +import type { Address } from "viem"; -const SS58_PREFIX = 42; +const SS58_PREFIX = 42 + +export function toViemAddress(address: string): Address { + const addressNoPrefix = address.replace("0x", ""); + return `0x${addressNoPrefix}`; +} export function convertH160ToPublicKey(ethAddress: string) { const prefix = "evm:"; const prefixBytes = new TextEncoder().encode(prefix); const addressBytes = hexToU8a(ethAddress.startsWith("0x") ? ethAddress : `0x${ethAddress}`); const combined = new Uint8Array(prefixBytes.length + addressBytes.length); - - // Concatenate prefix and Ethereum address combined.set(prefixBytes); combined.set(addressBytes, prefixBytes.length); + return blake2AsU8a(combined); +} - // Hash the combined data (the public key) - const hash = blake2AsU8a(combined); - return hash; +export function convertH160ToSS58(ethAddress: string): string { + return encodeAddress(convertH160ToPublicKey(ethAddress), SS58_PREFIX); } -export function convertH160ToSS58(ethAddress: string) { - // get the public key - const hash = convertH160ToPublicKey(ethAddress); +export function convertPublicKeyToSs58(publicKey: Uint8Array): string { + return encodeAddress(publicKey, SS58_PREFIX); +} + +export function ss58ToEthAddress(ss58Address: string): string { + const publicKey = decodeAddress(ss58Address); + const ethereumAddressBytes = publicKey.slice(0, 20); + return `0x${Buffer.from(ethereumAddressBytes).toString("hex")}`; +} - // Convert the hash to SS58 format - const ss58Address = encodeAddress(hash, SS58_PREFIX); - return ss58Address; +export function ss58ToH160(ss58Address: string): Binary { + const publicKey = decodeAddress(ss58Address); + return new Binary(publicKey.slice(0, 20)); } + +export function ethAddressToH160(ethAddress: string): Binary { + return new Binary(hexToU8a(ethAddress.startsWith("0x") ? ethAddress : `0x${ethAddress}`)); +} \ No newline at end of file diff --git a/ts-tests/utils/balance.ts b/ts-tests/utils/balance.ts index 0ad7e701fa..53f8218e66 100644 --- a/ts-tests/utils/balance.ts +++ b/ts-tests/utils/balance.ts @@ -1,9 +1,10 @@ -import { waitForTransactionWithRetry } from "./transactions.js"; -import type { TypedApi } from "polkadot-api"; import type { subtensor } from "@polkadot-api/descriptors"; import { Keyring } from "@polkadot/keyring"; - +import type { TypedApi } from "polkadot-api"; +import { waitForTransactionWithRetry } from "./transactions.js"; export const TAO = BigInt(1000000000); // 10^9 RAO per TAO +export const GWEI = BigInt(1000000000); +export const MAX_TX_FEE = BigInt(21000000) * GWEI; export function tao(value: number): bigint { return TAO * BigInt(value); @@ -11,7 +12,11 @@ export function tao(value: number): bigint { /** Convert RAO to the EVM native balance unit (1 RAO → 1 gwei on-chain). */ export function raoToEth(rao: bigint): bigint { - return TAO * rao; + return GWEI * rao; +} + +export function bigintToRao(value: bigint): bigint { + return TAO * value; } export async function getBalance(api: TypedApi, ss58Address: string): Promise { @@ -32,5 +37,5 @@ export async function forceSetBalance( new_free: amount, }); const tx = api.tx.Sudo.sudo({ call: internalCall.decodedCall }); - await waitForTransactionWithRetry(api, tx, alice, "force_set_balance"); + await waitForTransactionWithRetry(api, tx, alice, "force_set_balance", 5); } diff --git a/ts-tests/utils/evm-config.ts b/ts-tests/utils/evm-config.ts new file mode 100644 index 0000000000..1d6a882f79 --- /dev/null +++ b/ts-tests/utils/evm-config.ts @@ -0,0 +1,46 @@ +/** Balance transfer precompile (same address as contract-tests). */ +export const IBALANCETRANSFER_ADDRESS = "0x0000000000000000000000000000000000000800"; + +export const IBalanceTransferABI = [ + { + inputs: [ + { + internalType: "bytes32", + name: "data", + type: "bytes32", + }, + ], + name: "transfer", + outputs: [], + stateMutability: "payable", + type: "function", + }, +] as const; + +export const WITHDRAW_CONTRACT_ABI = [ + { + inputs: [], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [ + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "withdraw", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + stateMutability: "payable", + type: "receive", + }, +] as const; + +export const WITHDRAW_CONTRACT_BYTECODE = + "6080604052348015600e575f80fd5b506101148061001c5f395ff3fe608060405260043610601e575f3560e01c80632e1a7d4d146028576024565b36602457005b5f80fd5b603e6004803603810190603a919060b8565b6040565b005b3373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156082573d5f803e3d5ffd5b5050565b5f80fd5b5f819050919050565b609a81608a565b811460a3575f80fd5b50565b5f8135905060b2816093565b92915050565b5f6020828403121560ca5760c96086565b5b5f60d58482850160a6565b9150509291505056fea2646970667358221220f43400858bfe4fcc0bf3c1e2e06d3a9e6ced86454a00bd7e4866b3d4d64e46bb64736f6c634300081a0033"; diff --git a/ts-tests/utils/evm.ts b/ts-tests/utils/evm.ts new file mode 100644 index 0000000000..442fc030ca --- /dev/null +++ b/ts-tests/utils/evm.ts @@ -0,0 +1,29 @@ +import { subtensor } from "@polkadot-api/descriptors"; +import { Keyring } from "@polkadot/keyring"; +import { ethers } from "ethers"; +import type { TypedApi } from "polkadot-api"; +import { waitForTransactionWithRetry } from "./transactions.js"; + +export async function disableWhiteListCheck( + api: TypedApi, + disabled: boolean, +): Promise { + const value = await api.query.EVM.DisableWhitelistCheck.getValue(); + if (value === disabled) { + return; + } + + const alice = new Keyring({ type: "sr25519" }).addFromUri("//Alice"); + const internalCall = api.tx.EVM.disable_whitelist({ disabled }); + const tx = api.tx.Sudo.sudo({ call: internalCall.decodedCall }); + await waitForTransactionWithRetry(api, tx, alice, "disable_whitelist", 5); +} + +export function createEthersWallet(provider: ethers.JsonRpcProvider): ethers.Wallet { + const account = ethers.Wallet.createRandom(); + return new ethers.Wallet(account.privateKey, provider); +} + +export async function getEthBalance(provider: ethers.Provider, address: string): Promise { + return provider.getBalance(address); +} \ No newline at end of file diff --git a/ts-tests/utils/index.ts b/ts-tests/utils/index.ts index 3a91d860a0..956a2ce7a6 100644 --- a/ts-tests/utils/index.ts +++ b/ts-tests/utils/index.ts @@ -2,6 +2,8 @@ export * from "./account.ts"; export * from "./address.ts"; export * from "./balance.js"; export * from "./coldkey_swap.ts"; +export * from "./evm-config.ts"; +export * from "./evm.ts"; export * from "./shield_helpers.ts"; export * from "./staking.js"; export * from "./subnet.js"; diff --git a/ts-tests/utils/transactions.ts b/ts-tests/utils/transactions.ts index f64c772f79..53b9185828 100644 --- a/ts-tests/utils/transactions.ts +++ b/ts-tests/utils/transactions.ts @@ -1,10 +1,10 @@ -import { log } from "./logger.js"; import type { KeyringPair } from "@moonwall/util"; +import type { subtensor } from "@polkadot-api/descriptors"; import { sleep } from "@zombienet/utils"; -import { waitForBlocks } from "./staking.ts"; import type { Transaction, TypedApi } from "polkadot-api"; -import type { subtensor } from "@polkadot-api/descriptors"; import { getPolkadotSigner } from "polkadot-api/signer"; +import { log } from "./logger.js"; +import { waitForBlocks } from "./staking.ts"; export async function waitForTransactionWithRetry( api: TypedApi, From d4903cd3d9bb510f1d3a539e430473caf7f87b66 Mon Sep 17 00:00:00 2001 From: "subtensor-ai-review[bot]" Date: Fri, 5 Jun 2026 15:09:45 +0000 Subject: [PATCH 09/36] chore: auditor auto-fix --- ts-tests/utils/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/ts-tests/utils/index.ts b/ts-tests/utils/index.ts index 956a2ce7a6..c05e5dd280 100644 --- a/ts-tests/utils/index.ts +++ b/ts-tests/utils/index.ts @@ -8,4 +8,3 @@ export * from "./shield_helpers.ts"; export * from "./staking.js"; export * from "./subnet.js"; export * from "./transactions.js"; - From 519d0e48cbc77aa10c3aa75df4591f1612ba4ae9 Mon Sep 17 00:00:00 2001 From: open-junius Date: Fri, 5 Jun 2026 23:11:41 +0800 Subject: [PATCH 10/36] format code --- .../00-evm-substrate-transfer.test.ts | 54 +++++-------------- ts-tests/utils/address.ts | 4 +- ts-tests/utils/evm.ts | 7 +-- 3 files changed, 18 insertions(+), 47 deletions(-) diff --git a/ts-tests/suites/zombienet_evm/00-evm-substrate-transfer.test.ts b/ts-tests/suites/zombienet_evm/00-evm-substrate-transfer.test.ts index 36980228e7..93e245d276 100644 --- a/ts-tests/suites/zombienet_evm/00-evm-substrate-transfer.test.ts +++ b/ts-tests/suites/zombienet_evm/00-evm-substrate-transfer.test.ts @@ -26,14 +26,11 @@ import { tao, waitForFinalizedBlocks, waitForTransactionWithRetry, - WITHDRAW_CONTRACT_ABI, WITHDRAW_CONTRACT_BYTECODE + WITHDRAW_CONTRACT_ABI, + WITHDRAW_CONTRACT_BYTECODE, } from "../../utils"; - -async function estimateTransactionCost( - provider: ethers.Provider, - tx: ethers.TransactionRequest, -): Promise { +async function estimateTransactionCost(provider: ethers.Provider, tx: ethers.TransactionRequest): Promise { const feeData = await provider.getFeeData(); const estimatedGas = await provider.estimateGas(tx); const gasPrice = feeData.gasPrice ?? feeData.maxFeePerGas; @@ -53,7 +50,7 @@ async function transferAndGetFee( wallet2: ethers.Wallet, provider: ethers.Provider, maxFeePerGas: bigint, - maxPriorityFeePerGas: bigint, + maxPriorityFeePerGas: bigint ): Promise { const ethBalanceBefore = await getEthBalance(provider, wallet.address); const tx = { @@ -149,11 +146,7 @@ describeSuite({ id: "T03", title: "Can transfer token from EVM to Substrate", test: async () => { - const contract = new ethers.Contract( - IBALANCETRANSFER_ADDRESS, - IBalanceTransferABI, - ethWallet, - ); + const contract = new ethers.Contract(IBALANCETRANSFER_ADDRESS, IBalanceTransferABI, ethWallet); const signerSs58 = convertPublicKeyToSs58(signer.publicKey); const senderBalance = await getEthBalance(provider, ethWallet.address); @@ -245,7 +238,7 @@ describeSuite({ const contractFactory = new ethers.ContractFactory( WITHDRAW_CONTRACT_ABI, WITHDRAW_CONTRACT_BYTECODE, - ethWallet, + ethWallet ); const contract = await contractFactory.deploy(); await contract.waitForDeployment(); @@ -302,7 +295,7 @@ describeSuite({ if (error instanceof Error) { expect( (error as { code?: string }).code === "INSUFFICIENT_FUNDS" || - error.message.includes("insufficient funds"), + error.message.includes("insufficient funds") ).toBe(true); } } @@ -333,7 +326,7 @@ describeSuite({ if (error instanceof Error) { expect( (error as { code?: string }).code === "INSUFFICIENT_FUNDS" || - error.message.includes("insufficient funds"), + error.message.includes("insufficient funds") ).toBe(true); } } @@ -363,17 +356,13 @@ describeSuite({ if (error instanceof Error) { expect( (error as { code?: string }).code === "INSUFFICIENT_FUNDS" || - error.message.includes("insufficient funds"), + error.message.includes("insufficient funds") ).toBe(true); } } expect(ethRejected).toBe(true); - const contract = new ethers.Contract( - IBALANCETRANSFER_ADDRESS, - IBalanceTransferABI, - ethWallet, - ); + const contract = new ethers.Contract(IBALANCETRANSFER_ADDRESS, IBalanceTransferABI, ethWallet); let precompileRejected = false; try { const tx = await contract.transfer(signer.publicKey, { value: oversize.toString() }); @@ -381,10 +370,7 @@ describeSuite({ } catch (error) { precompileRejected = true; if (error instanceof Error) { - expect( - error.message.includes("revert") || - error.message.includes("CALL_EXCEPTION"), - ).toBe(true); + expect(error.message.includes("revert") || error.message.includes("CALL_EXCEPTION")).toBe(true); } } expect(precompileRejected).toBe(true); @@ -470,7 +456,7 @@ describeSuite({ ethWallet2, provider, GWEI * BigInt(maxFeeGwei), - GWEI * BigInt(maxPriorityGwei), + GWEI * BigInt(maxPriorityGwei) ); expect(actualFee).toEqual(expectedFee); } @@ -483,13 +469,7 @@ describeSuite({ test: async () => { let rejected = false; try { - await transferAndGetFee( - ethWallet, - ethWallet2, - provider, - GWEI * BigInt(9), - BigInt(0), - ); + await transferAndGetFee(ethWallet, ethWallet2, provider, GWEI * BigInt(9), BigInt(0)); } catch (error) { rejected = true; if (error instanceof Error) { @@ -506,13 +486,7 @@ describeSuite({ test: async () => { let rejected = false; try { - await transferAndGetFee( - ethWallet, - ethWallet2, - provider, - GWEI * BigInt(10), - GWEI * BigInt(11), - ); + await transferAndGetFee(ethWallet, ethWallet2, provider, GWEI * BigInt(10), GWEI * BigInt(11)); } catch (error) { rejected = true; if (error instanceof Error) { diff --git a/ts-tests/utils/address.ts b/ts-tests/utils/address.ts index be22200091..eb4b1fe905 100644 --- a/ts-tests/utils/address.ts +++ b/ts-tests/utils/address.ts @@ -3,7 +3,7 @@ import { blake2AsU8a, decodeAddress, encodeAddress } from "@polkadot/util-crypto import { Binary } from "polkadot-api"; import type { Address } from "viem"; -const SS58_PREFIX = 42 +const SS58_PREFIX = 42; export function toViemAddress(address: string): Address { const addressNoPrefix = address.replace("0x", ""); @@ -41,4 +41,4 @@ export function ss58ToH160(ss58Address: string): Binary { export function ethAddressToH160(ethAddress: string): Binary { return new Binary(hexToU8a(ethAddress.startsWith("0x") ? ethAddress : `0x${ethAddress}`)); -} \ No newline at end of file +} diff --git a/ts-tests/utils/evm.ts b/ts-tests/utils/evm.ts index 442fc030ca..f8d9f6f251 100644 --- a/ts-tests/utils/evm.ts +++ b/ts-tests/utils/evm.ts @@ -4,10 +4,7 @@ import { ethers } from "ethers"; import type { TypedApi } from "polkadot-api"; import { waitForTransactionWithRetry } from "./transactions.js"; -export async function disableWhiteListCheck( - api: TypedApi, - disabled: boolean, -): Promise { +export async function disableWhiteListCheck(api: TypedApi, disabled: boolean): Promise { const value = await api.query.EVM.DisableWhitelistCheck.getValue(); if (value === disabled) { return; @@ -26,4 +23,4 @@ export function createEthersWallet(provider: ethers.JsonRpcProvider): ethers.Wal export async function getEthBalance(provider: ethers.Provider, address: string): Promise { return provider.getBalance(address); -} \ No newline at end of file +} From 79f0ac76da32de8b5ddfbe21aeb65c8bd36f5053 Mon Sep 17 00:00:00 2001 From: open-junius Date: Tue, 9 Jun 2026 22:20:22 +0800 Subject: [PATCH 11/36] add bittensor ink artifact --- ts-tests/ink/bittensor.json | 2196 +++++++++++++++++++++++++++++++++++ ts-tests/ink/bittensor.wasm | Bin 0 -> 18724 bytes 2 files changed, 2196 insertions(+) create mode 100644 ts-tests/ink/bittensor.json create mode 100644 ts-tests/ink/bittensor.wasm diff --git a/ts-tests/ink/bittensor.json b/ts-tests/ink/bittensor.json new file mode 100644 index 0000000000..1a543547bc --- /dev/null +++ b/ts-tests/ink/bittensor.json @@ -0,0 +1,2196 @@ +{ + "source": { + "hash": "0x69edf9f009ca08b785fad0aacb75a1d8ddad6d231848c8ca12b75f0bfc943b86", + "language": "ink! 5.1.1", + "compiler": "rustc 1.89.0", + "build_info": { + "build_mode": "Release", + "cargo_contract_version": "5.0.3", + "rust_toolchain": "stable-x86_64-unknown-linux-gnu", + "wasm_opt_settings": { + "keep_debug_symbols": false, + "optimization_passes": "Z" + } + } + }, + "contract": { + "name": "bittensor", + "version": "0.1.0", + "authors": [ + "[your_name] <[your_email]>" + ] + }, + "image": null, + "spec": { + "constructors": [ + { + "args": [], + "default": false, + "docs": [ + "Constructor" + ], + "label": "new", + "payable": false, + "returnType": { + "displayName": [ + "ink_primitives", + "ConstructorResult" + ], + "type": 1 + }, + "selector": "0x9bae9d5e" + }, + { + "args": [], + "default": false, + "docs": [ + "Constructor" + ], + "label": "default", + "payable": false, + "returnType": { + "displayName": [ + "ink_primitives", + "ConstructorResult" + ], + "type": 1 + }, + "selector": "0xed4b9d1b" + } + ], + "docs": [], + "environment": { + "accountId": { + "displayName": [ + "AccountId" + ], + "type": 11 + }, + "balance": { + "displayName": [ + "Balance" + ], + "type": 14 + }, + "blockNumber": { + "displayName": [ + "BlockNumber" + ], + "type": 23 + }, + "chainExtension": { + "displayName": [ + "ChainExtension" + ], + "type": 24 + }, + "hash": { + "displayName": [ + "Hash" + ], + "type": 22 + }, + "maxEventTopics": 4, + "staticBufferSize": 16384, + "timestamp": { + "displayName": [ + "Timestamp" + ], + "type": 14 + } + }, + "events": [], + "lang_error": { + "displayName": [ + "ink", + "LangError" + ], + "type": 3 + }, + "messages": [ + { + "args": [ + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "coldkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + } + ], + "default": false, + "docs": [], + "label": "get_stake_info_for_hotkey_coldkey_netuid", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 7 + }, + "selector": "0x5b73b8b9" + }, + { + "args": [ + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "amount", + "type": { + "displayName": [ + "u64" + ], + "type": 14 + } + } + ], + "default": false, + "docs": [], + "label": "add_stake", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0x3a656e31" + }, + { + "args": [ + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "amount", + "type": { + "displayName": [ + "u64" + ], + "type": 14 + } + } + ], + "default": false, + "docs": [], + "label": "remove_stake", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0x7758d434" + }, + { + "args": [ + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + } + ], + "default": false, + "docs": [], + "label": "unstake_all", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0x3f525cc7" + }, + { + "args": [ + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + } + ], + "default": false, + "docs": [], + "label": "unstake_all_alpha", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0xab74c422" + }, + { + "args": [ + { + "label": "origin_hotkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "destination_hotkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "origin_netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "destination_netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "amount", + "type": { + "displayName": [ + "u64" + ], + "type": 14 + } + } + ], + "default": false, + "docs": [], + "label": "move_stake", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0xa06b0c55" + }, + { + "args": [ + { + "label": "destination_coldkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "origin_netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "destination_netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "amount", + "type": { + "displayName": [ + "u64" + ], + "type": 14 + } + } + ], + "default": false, + "docs": [], + "label": "transfer_stake", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0x3528ef5e" + }, + { + "args": [ + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "origin_netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "destination_netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "amount", + "type": { + "displayName": [ + "u64" + ], + "type": 14 + } + } + ], + "default": false, + "docs": [], + "label": "swap_stake", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0x04f7ca30" + }, + { + "args": [ + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "amount", + "type": { + "displayName": [ + "u64" + ], + "type": 14 + } + }, + { + "label": "limit_price", + "type": { + "displayName": [ + "u64" + ], + "type": 14 + } + }, + { + "label": "allow_partial", + "type": { + "displayName": [ + "bool" + ], + "type": 15 + } + } + ], + "default": false, + "docs": [], + "label": "add_stake_limit", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0x30013b98" + }, + { + "args": [ + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "amount", + "type": { + "displayName": [ + "u64" + ], + "type": 14 + } + }, + { + "label": "limit_price", + "type": { + "displayName": [ + "u64" + ], + "type": 14 + } + }, + { + "label": "allow_partial", + "type": { + "displayName": [ + "bool" + ], + "type": 15 + } + } + ], + "default": false, + "docs": [], + "label": "remove_stake_limit", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0xc3ce39c8" + }, + { + "args": [ + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "origin_netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "destination_netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "amount", + "type": { + "displayName": [ + "u64" + ], + "type": 14 + } + }, + { + "label": "limit_price", + "type": { + "displayName": [ + "u64" + ], + "type": 14 + } + }, + { + "label": "allow_partial", + "type": { + "displayName": [ + "bool" + ], + "type": 15 + } + } + ], + "default": false, + "docs": [], + "label": "swap_stake_limit", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0x212ef7ad" + }, + { + "args": [ + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "limit_price", + "type": { + "displayName": [ + "Option" + ], + "type": 19 + } + } + ], + "default": false, + "docs": [], + "label": "remove_stake_full_limit", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0xa6d6ea64" + }, + { + "args": [ + { + "label": "netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + } + ], + "default": false, + "docs": [], + "label": "set_coldkey_auto_stake_hotkey", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0xe24f0d8a" + }, + { + "args": [ + { + "label": "delegate", + "type": { + "displayName": [], + "type": 4 + } + } + ], + "default": false, + "docs": [], + "label": "add_proxy", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0x528b6757" + }, + { + "args": [ + { + "label": "delegate", + "type": { + "displayName": [], + "type": 4 + } + } + ], + "default": false, + "docs": [], + "label": "remove_proxy", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0x129d4f75" + }, + { + "args": [ + { + "label": "netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + } + ], + "default": false, + "docs": [], + "label": "get_alpha_price", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 20 + }, + "selector": "0x08adc2e2" + }, + { + "args": [ + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "amount", + "type": { + "displayName": [ + "u64" + ], + "type": 14 + } + } + ], + "default": false, + "docs": [], + "label": "recycle_alpha", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 20 + }, + "selector": "0xb82d0b9a" + }, + { + "args": [ + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "amount", + "type": { + "displayName": [ + "u64" + ], + "type": 14 + } + } + ], + "default": false, + "docs": [], + "label": "burn_alpha", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 20 + }, + "selector": "0x84ccc19d" + }, + { + "args": [ + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "amount", + "type": { + "displayName": [ + "u64" + ], + "type": 14 + } + } + ], + "default": false, + "docs": [], + "label": "add_stake_recycle", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 20 + }, + "selector": "0xb144245c" + }, + { + "args": [ + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "amount", + "type": { + "displayName": [ + "u64" + ], + "type": 14 + } + } + ], + "default": false, + "docs": [], + "label": "add_stake_burn", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 20 + }, + "selector": "0x13160cf7" + }, + { + "args": [ + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "amount", + "type": { + "displayName": [ + "u64" + ], + "type": 14 + } + } + ], + "default": false, + "docs": [], + "label": "caller_add_stake", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0xa5b8d094" + }, + { + "args": [ + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "amount", + "type": { + "displayName": [ + "u64" + ], + "type": 14 + } + } + ], + "default": false, + "docs": [], + "label": "caller_remove_stake", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0xf4ed2209" + }, + { + "args": [ + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + } + ], + "default": false, + "docs": [], + "label": "caller_unstake_all", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0xa662dec6" + }, + { + "args": [ + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + } + ], + "default": false, + "docs": [], + "label": "caller_unstake_all_alpha", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0x5a0863c1" + }, + { + "args": [ + { + "label": "origin_hotkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "destination_hotkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "origin_netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "destination_netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "amount", + "type": { + "displayName": [ + "u64" + ], + "type": 14 + } + } + ], + "default": false, + "docs": [], + "label": "caller_move_stake", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0x8a1a0ef3" + }, + { + "args": [ + { + "label": "destination_coldkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "origin_netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "destination_netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "amount", + "type": { + "displayName": [ + "u64" + ], + "type": 14 + } + } + ], + "default": false, + "docs": [], + "label": "caller_transfer_stake", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0x7ef3a28d" + }, + { + "args": [ + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "origin_netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "destination_netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "amount", + "type": { + "displayName": [ + "u64" + ], + "type": 14 + } + } + ], + "default": false, + "docs": [], + "label": "caller_swap_stake", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0x4a07270e" + }, + { + "args": [ + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "amount", + "type": { + "displayName": [ + "u64" + ], + "type": 14 + } + }, + { + "label": "limit_price", + "type": { + "displayName": [ + "u64" + ], + "type": 14 + } + }, + { + "label": "allow_partial", + "type": { + "displayName": [ + "bool" + ], + "type": 15 + } + } + ], + "default": false, + "docs": [], + "label": "caller_add_stake_limit", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0xd1c93224" + }, + { + "args": [ + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "amount", + "type": { + "displayName": [ + "u64" + ], + "type": 14 + } + }, + { + "label": "limit_price", + "type": { + "displayName": [ + "u64" + ], + "type": 14 + } + }, + { + "label": "allow_partial", + "type": { + "displayName": [ + "bool" + ], + "type": 15 + } + } + ], + "default": false, + "docs": [], + "label": "caller_remove_stake_limit", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0xeb3c2a2c" + }, + { + "args": [ + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "origin_netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "destination_netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "amount", + "type": { + "displayName": [ + "u64" + ], + "type": 14 + } + }, + { + "label": "limit_price", + "type": { + "displayName": [ + "u64" + ], + "type": 14 + } + }, + { + "label": "allow_partial", + "type": { + "displayName": [ + "bool" + ], + "type": 15 + } + } + ], + "default": false, + "docs": [], + "label": "caller_swap_stake_limit", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0xa5d65480" + }, + { + "args": [ + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + }, + { + "label": "netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "limit_price", + "type": { + "displayName": [ + "Option" + ], + "type": 19 + } + } + ], + "default": false, + "docs": [], + "label": "caller_remove_stake_full_limit", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0x113e3cc9" + }, + { + "args": [ + { + "label": "netuid", + "type": { + "displayName": [ + "u16" + ], + "type": 6 + } + }, + { + "label": "hotkey", + "type": { + "displayName": [], + "type": 4 + } + } + ], + "default": false, + "docs": [], + "label": "caller_set_coldkey_auto_stake_hotkey", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0x30fd705d" + }, + { + "args": [ + { + "label": "delegate", + "type": { + "displayName": [], + "type": 4 + } + } + ], + "default": false, + "docs": [], + "label": "caller_add_proxy", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0xe6a20239" + }, + { + "args": [ + { + "label": "delegate", + "type": { + "displayName": [], + "type": 4 + } + } + ], + "default": false, + "docs": [], + "label": "caller_remove_proxy", + "mutates": false, + "payable": false, + "returnType": { + "displayName": [ + "ink", + "MessageResult" + ], + "type": 17 + }, + "selector": "0x59392a8e" + } + ] + }, + "storage": { + "root": { + "layout": { + "struct": { + "fields": [], + "name": "Bittensor" + } + }, + "root_key": "0x00000000", + "ty": 0 + } + }, + "types": [ + { + "id": 0, + "type": { + "def": { + "composite": {} + }, + "path": [ + "bittensor", + "bittensor", + "Bittensor" + ] + } + }, + { + "id": 1, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 2 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 3 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 2 + }, + { + "name": "E", + "type": 3 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 2, + "type": { + "def": { + "tuple": [] + } + } + }, + { + "id": 3, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 1, + "name": "CouldNotReadInput" + } + ] + } + }, + "path": [ + "ink_primitives", + "LangError" + ] + } + }, + { + "id": 4, + "type": { + "def": { + "array": { + "len": 32, + "type": 5 + } + } + } + }, + { + "id": 5, + "type": { + "def": { + "primitive": "u8" + } + } + }, + { + "id": 6, + "type": { + "def": { + "primitive": "u16" + } + } + }, + { + "id": 7, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 8 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 3 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 8 + }, + { + "name": "E", + "type": 3 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 8, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 9 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 16 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 9 + }, + { + "name": "E", + "type": 16 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 9, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 10 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 10 + } + ], + "path": [ + "Option" + ] + } + }, + { + "id": 10, + "type": { + "def": { + "composite": { + "fields": [ + { + "name": "hotkey", + "type": 11, + "typeName": "AccountId" + }, + { + "name": "coldkey", + "type": 11, + "typeName": "AccountId" + }, + { + "name": "netuid", + "type": 12, + "typeName": "Compact" + }, + { + "name": "stake", + "type": 13, + "typeName": "Compact" + }, + { + "name": "locked", + "type": 13, + "typeName": "Compact" + }, + { + "name": "emission", + "type": 13, + "typeName": "Compact" + }, + { + "name": "tao_emission", + "type": 13, + "typeName": "Compact" + }, + { + "name": "drain", + "type": 13, + "typeName": "Compact" + }, + { + "name": "is_registered", + "type": 15, + "typeName": "bool" + } + ] + } + }, + "params": [ + { + "name": "AccountId", + "type": 11 + } + ], + "path": [ + "bittensor", + "StakeInfo" + ] + } + }, + { + "id": 11, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 4, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": [ + "ink_primitives", + "types", + "AccountId" + ] + } + }, + { + "id": 12, + "type": { + "def": { + "compact": { + "type": 6 + } + } + } + }, + { + "id": 13, + "type": { + "def": { + "compact": { + "type": 14 + } + } + } + }, + { + "id": 14, + "type": { + "def": { + "primitive": "u64" + } + } + }, + { + "id": 15, + "type": { + "def": { + "primitive": "bool" + } + } + }, + { + "id": 16, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "ReadFailed" + }, + { + "index": 1, + "name": "WriteFailed" + } + ] + } + }, + "path": [ + "bittensor", + "ReadWriteErrorCode" + ] + } + }, + { + "id": 17, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 18 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 3 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 18 + }, + { + "name": "E", + "type": 3 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 18, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 2 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 16 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 2 + }, + { + "name": "E", + "type": 16 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 19, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 14 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 14 + } + ], + "path": [ + "Option" + ] + } + }, + { + "id": 20, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 21 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 3 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 21 + }, + { + "name": "E", + "type": 3 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 21, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 14 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 16 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 14 + }, + { + "name": "E", + "type": 16 + } + ], + "path": [ + "Result" + ] + } + }, + { + "id": 22, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 4, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": [ + "ink_primitives", + "types", + "Hash" + ] + } + }, + { + "id": 23, + "type": { + "def": { + "primitive": "u32" + } + } + }, + { + "id": 24, + "type": { + "def": { + "variant": {} + }, + "path": [ + "bittensor", + "RuntimeReadWrite" + ] + } + } + ], + "version": 5 +} \ No newline at end of file diff --git a/ts-tests/ink/bittensor.wasm b/ts-tests/ink/bittensor.wasm new file mode 100644 index 0000000000000000000000000000000000000000..5d54ecf3d648c672aaffd8ab5484bd4ee12e8461 GIT binary patch literal 18724 zcmds8Yj9n~ec#=4&b?PU_ew{$UVhJ%Nj{`; zf4|-HxOyREJt#GUcF+Ip`S1U||NZY?apd%UQV1aj>JO{QNx?sI@~|^$8W&CSC=Ls} z{WOMngc2Tbs@k1jIjE@{Yeea3m!lLZK2S<(_8XFnEf9$w$Ey|{eBggI^IW#_Y zvKl!>>HGc(j8%geA%D|F6FJUcsP>fbZ78RW4kbU5q0(|RQbpklKNRd^ zARB2v!~i>)N+z53fq(Pdw9TMuw^Wk`pF5~UqaROdD8hUKghg&b5QwNo;3;&6OQ6XO zol*baUFA;7Pj3;rXSA$31Q3LfK;VN_)g?l*IwboX0U4;l`TyhKsO)Ix6j*FHpg zz524$*RAX=K}8>o{qj0yv>5B>#TdjGOQEW$fEe@aH521?$Eeey1W_`^R!4HzejNIB zwOfrm4UHGUgRCeQe7gHekSm6`qrHkfzyOSAzLv0ie}3oO8aa88BZ{t^wZ-KdZ{Y2O14s%>K3&~^DR z207z;=c&tQ!`zuDhsVUaGh|_IXi`_ev@<@+q37-dqw!Q;I;orXAd>j4N_$Yf7!oiV zcuTI&DbOr?svW|=9X3r5q6}eo;9S96rU_75&SAJ-DE)pRF<$L~)%&~fG3+!*>{JZM z27{rYs#VYckHg4r*)Sj#=NOQ9)B&fR^<}RrnlFo0?IvGVRFQ<>OKLFw^0Npqptwu8 z^d^m%;L-;|hhh~}IsU*NLS+?cK;SCKt%t*44t(m-Wv7h=&t-fdjbqwZ_8Z6z?x~DK zKuD-44EnW}{s=rB?1zSZElCeY1c5uLB_o%Dwe$&0sn^lo+pFdoQ|l%^2ibESp9}G` z7LYO-4k@a~r1YQ{Xb&(6BxRNKgKF7H`h{xQwSB|Cr^9{aoRLY0eymX|jD!kc3yp3W zkCMq5JTuDR3MtusnDgt&Ay^L9`2FBs8Icz#ZA>3J`$~vU6rcNX^f+4_P$7ND!|hdt zMg-r_N$F5>X@En3kwG&>2#iULfdmj^7%Yvff`BL~)1Xga61~yJkc1oE%;zwZX_3#F z%tIGu$e3YNYHiWDz#xbLV(S80?JGObA8j3wtW=ZdP#S`JAT-Fd5=Rz>l-C6< z_Nz)clZq=?Dv=tQK#R*L31Xv_zye`HpaEg3B-9`#L{~N_DG&vXh+K`>E+GeWrboCe zwnw=k88N8FVuQt5X=L16X~E7C>6q0Kb{0P~zEU(^p99f^u#k{}M+_+dG9j&}G0UJS z6x}jJr#%#%_&^5h{EtiztKsypx(4DiF?7~2#C32-ThWCe9rkBRx^%Ww7iP?=S!a!Q znyD(JJf~)xuRDkNs>sIB#C+#b+fvNe8<4kH9nH4lzf;PaVa3xVr&Yh$PR%Z(HB&Gt z-q>iZU#CzbPX;H7qnxW*so~y?=4vp^(b8dhaMLJnh6b_0J1`wCrg&9|U@gH$CMiga z6cSKK!Ul^Qv3jJ6+kpTQrSTW6@#p&-Yy5`%%=noj!z7V7NF=yid_n=|Mb=)2bQnz` z;>tra*T_dS(g!VvH)s&HAygauH=QI$KF@`_gG|%%gV{0n-vonM1uG?_VWaFn8BmB7 zD+T?;fUvfD35c;b=yMLthxeSU8Ub6BQ+Ud-{Q}r#B06at6B0LGz$AK_7c9+9=8b74 z@l+b@F+62!4n&Xw%&G)2rGTB37P+p$8vXYq1P@ywbsEo#w@&45|X znS7?ebL^b?Ih`|K!Wbh%tv=*K00f8=@*U0 z85*lvX3NX0Vbe1CbQQWop{&7_06s6^^T}>R7dV~)r&tXT?~(KCy8Z4Tcjz##NaBqN z1D-}AcwmG7wK#W7HXTD#Q?gGLXrNQbFKxEy!rig7%5DTB2TLnD+ij=Q3DH>x>vSr% z(UK4#uzjhh3L-c{o{_H+b74Pr+7xllC8}EvCDh%4jur3nQ8$qqy{TKxqu1@z!YHuTY-5z7$0f-PmqG=}kJ7?mL{>77J|d>(r(i^rr?g}AE0MXm$&6XCBF zBt?HlVGqq5FX$Hj9k3t+r5kG%Ir=kGq=SVW$_NYMa?R#dl_9mwIg|9=xcXi83l0ePfWwOFfes**{dV^bj!@;LB?^6p3;Q(;B51UXwCY`>B^LWo zo|?eQioL>w*)kL+V!cAMM!%T+M*p)`hbev}MjPrII?TVDT2b)s=l$YIez*Y zitPE8BFA_!$Q^C)3V06U=eID#D*>-w118kiKPB(w8(k% zJ80LVeOK;9Rj_XF7-9e&>p$?UOs~9mY^<~eLhr$rOkb1Lpv5Q$i?;zk4NVLE0yYPB zHzo8119`Oua?wCg3*s074I-5jyZW5-FrO~5lQ!1r9E^at(>WY9>lPH?Z}vgZcR+?E z=w|}7S&FU#m`62pYz*rE6{&qm45QmIYJjD(ess!(3r9+yopLKuL_RGB=}=U!U$mXI z`nywZCm^l*Tej1z|HO7ch5jD$hG+4JIMBvTlF+XJ@>PS@#1#Ekc)nzC4Ui!SxT>GD zU$omVD44iQiNtuG2SrNsidSL1+REi+?3!Y^=njOz4Dmc=#24vKJFBEf&nB>11`mLd?4=@fwuTQfKv^~zT>^ja(v z*^UI+Pcme0NFWQRAxjYvJOdFROE(bgsVqS+rv~z)jH166iGh?hTLSb`kfyT79h_c2 zSM&V2xPM+z=+;E?iXt?!3Dc+Q#Y3!Gf|sh1PUoI-TWpDKu_d;}me>|s;#_{s z%I3)kOHa2Pi`I~&@u24wve35 zDLJ>Ls-qUMSl7r0A)!kgE$2xNUo1O0#NT6=(*t%nJs34pc88-nBMPh$7;<-1)b)_$ z`b^1hA(3c?mjBjh`Cl?E|CC&`)pF5lR_k)}koqn2Vu@UII)}>(t!vZSGOL^q`qxqP zkEWu3Eu*>wqCsaC0W;GicqL4;2!h&4(2vt#^;l+_Z)a-~6ATdWo@-LNFqpiC`7J(L z#4G7vW<|idDXJPb}-pMCO@At33ik4 z@fCV1@`TK}GBydG!KPkke0OmUwpy$f!HB0D64T13Ol}2_^|d@^$soZqcm!l|{LPgN zu7}idjnC5^2|2H3Lf;O0kXU3guT8l4!cw$~PKwlqeta~_>kXhBH7ifwnoxdwD#%+v zI8vdx3FnIslJJcn95*FB4N1q*<<~(kE<~D&%+OP zZA9|2(h;bL3xuA2Jf#dTjC%U1l#16GQ<-_Dg@i1ZBG^i;cK5XO zc+(6rcq1>Hvv$A1Qri-Bb%Xnjn?RTHgIiglUwT+25?rb?%*0nFaEX!tNH7I#B>)@J z&a7;TDj;uF2zz>iGkg}!Sv#j>dT@g!K+Ub9cHpcN&CarCD(1+4aabxs8G5*3gW)*6 z@%TS3sRRTwL&m`yP6)iuG=p)qJ$ zv$naVwXJ>K`VAX5-LyH3jBMY)RT81QswlhhPNvYi`J7#+(=VF=p%D`|==wDSs3dpv z0jh}3UU>ivuN{!b(KPqTPoQb(lXs%Qu~07>zt>!TsJ9oCPJ@=1iabBtBX*AWtS*`8MQf)xy%PHRLO@S~i#a zcqJ0&Fij!K^1S0$QQwy3Jlm_XjPs3%-77M}mtj8S)%EAumFBGN06?5Iir-YEP+5To)`ZWo~hQ-QY3@HJ5P0W{*aAY$bRx5(Q%%(tuLf zioS%_4X_XB5?64JXRH0cz_li!ziTVjrZ7HbYWpwNKpruWSIKaV;finJCkodveV6#A zM2W(I<;_5T2_M>9Ld_!-FC1_GN%#<1*k4cewU*heH3ui-dW_z@xS>K-6s4CFDW5t-g? zZ9E1Q8VtudE$`lYIPmQk z;3#yAQ<&>B9)1TS_z~YydPE+y(|!#EN5=+&BL}w=hs5#RJ$&N55z{%4bPgt+!=}@O zznd*NlnD-W6%jjO06K8)iCY8RI3|Y1cF|61B0Vw-0BRyVuNexxH8r+a>9hs}?`>9f z2hrdf`T@+vKuMDbDkgJQdl?Bd4o)`&T`Mu;LkrJ{tCIFExp+^9b(4#n9Q6U}%>3W9{GvTfYtQ8|Qi?oA@Kk zCdpY7*A2+Sn6c0=?m|;zB>G%7|1BTH{GXjMKO&3TiDoZ zjE@b-yKvtjwd(T9$s(3MwGR>&n8w~sNMSRX%d^nxKcgXi}Qzy>7U>Z9y4{{u?!AO;H+uzI^+_nPCEHEPh*XL7V zlykvHdCIZe8ALqM7p6~yt6Y(D5awlI;rBkd{^7X}qXIvI% z|NU&96?OJMSa_ZfSFZAO#?b$dYFvGugx+Nb>b;Hvb2bd_A|C^S_@A z>`NIz|CckcKg!5lr3~zkvl&-31G|vTv!X%y%kMdlDPyo+YARAlMz5k?#mopPQB7u) zV_Nitl3x6qSJ5GCxqOaW@h+=Jz<_!TQY!wciN81Ct$0)iQ7=|}pI&_Dop4-y=T&iB zd`FcE9eaxpH@bPVUq37Nq8j9yZ1@{E>9Lno;)_AJXE}x+H1HhAj`)l88cRH415Sh- zqzlQfN8&=aYtA1)V@MiN3uRNlFFuS!NHxf1YKY%s1!_HM)-3O9{HBAy&fvMq{{qln B#)1F< literal 0 HcmV?d00001 From 1b9e601e47a4923f51901727d11f09a85c843165 Mon Sep 17 00:00:00 2001 From: open-junius Date: Tue, 9 Jun 2026 22:49:28 +0800 Subject: [PATCH 12/36] add ink package to the test suite --- .../test/crowdloan.precompile.test.ts | 204 - .../test/eth.incremental.deploy.test.ts | 61 - .../test/leasing.precompile.test.ts | 139 - ts-tests/moonwall.config.json | 4 +- ts-tests/package.json | 5 +- ts-tests/pnpm-lock.yaml | 3610 +++++++++++------ ts-tests/pnpm-workspace.yaml | 8 +- 7 files changed, 2277 insertions(+), 1754 deletions(-) delete mode 100644 contract-tests/test/crowdloan.precompile.test.ts delete mode 100644 contract-tests/test/eth.incremental.deploy.test.ts delete mode 100644 contract-tests/test/leasing.precompile.test.ts diff --git a/contract-tests/test/crowdloan.precompile.test.ts b/contract-tests/test/crowdloan.precompile.test.ts deleted file mode 100644 index 2a0655bc63..0000000000 --- a/contract-tests/test/crowdloan.precompile.test.ts +++ /dev/null @@ -1,204 +0,0 @@ -import * as assert from "assert"; - -import { ethers } from "ethers"; -import { Binary, TypedApi } from "polkadot-api"; -import { devnet } from "@polkadot-api/descriptors"; -import { ICROWDLOAN_ADDRESS, ICrowdloanABI } from "../src/contracts/crowdloan"; -import { convertH160ToSS58 } from "../src/address-utils"; -import { generateRandomEthersWallet } from "../src/utils"; -import { - getAliceSigner, - getDevnetApi, - waitForFinalizedBlock, -} from "../src/substrate"; -import { forceSetBalanceToEthAddress } from "../src/subtensor"; - -describe("Crowdloan precompile E2E balance smoke", () => { - let api: TypedApi; - - const alice = getAliceSigner(); - const wallet1 = generateRandomEthersWallet(); - const wallet2 = generateRandomEthersWallet(); - const wallet3 = generateRandomEthersWallet(); - const wallet4 = generateRandomEthersWallet(); - - const crowdloanContract = new ethers.Contract( - ICROWDLOAN_ADDRESS, - ICrowdloanABI, - wallet1, - ); - - before(async () => { - api = await getDevnetApi(); - - await forceSetBalanceToEthAddress(api, wallet1.address); - await forceSetBalanceToEthAddress(api, wallet2.address); - await forceSetBalanceToEthAddress(api, wallet3.address); - await forceSetBalanceToEthAddress(api, wallet4.address); - }); - - it("charges and refunds balances through create, contribute, withdraw, refund, and dissolve", async () => { - const deposit = BigInt(20_000_000_000); - const minContribution = BigInt(2_000_000_000); - const cap = BigInt(100_000_000_000); - const end = (await api.query.System.Number.getValue()) + 100; - const targetAddress = generateRandomEthersWallet(); - const nextId = await api.query.Crowdloan.NextCrowdloanId.getValue(); - - const creatorBalanceBeforeCreate = await api.query.System.Account.getValue( - convertH160ToSS58(wallet1.address), - ); - let tx = await crowdloanContract.create( - deposit, - minContribution, - cap, - end, - targetAddress, - ); - await tx.wait(); - - const creatorBalanceAfterCreate = await api.query.System.Account.getValue( - convertH160ToSS58(wallet1.address), - ); - assert.ok( - Number( - creatorBalanceBeforeCreate.data.free - - creatorBalanceAfterCreate.data.free, - ) - - Number(deposit) < - 1_000_000, - ); - - const contribution = BigInt(20_000_000_000); - const crowdloanContract2 = new ethers.Contract( - ICROWDLOAN_ADDRESS, - ICrowdloanABI, - wallet2, - ); - const contributorBalanceBefore = await api.query.System.Account.getValue( - convertH160ToSS58(wallet2.address), - ); - tx = await crowdloanContract2.contribute(nextId, contribution); - await tx.wait(); - - let contributorBalanceAfter = await api.query.System.Account.getValue( - convertH160ToSS58(wallet2.address), - ); - assert.ok( - Number( - contributorBalanceBefore.data.free - contributorBalanceAfter.data.free, - ) - - Number(contribution) < - 1_000_000, - ); - - tx = await crowdloanContract2.withdraw(nextId); - await tx.wait(); - - contributorBalanceAfter = await api.query.System.Account.getValue( - convertH160ToSS58(wallet2.address), - ); - assert.ok( - Number( - contributorBalanceBefore.data.free - contributorBalanceAfter.data.free, - ) < 1_000_000, - ); - - const crowdloanContract3 = new ethers.Contract( - ICROWDLOAN_ADDRESS, - ICrowdloanABI, - wallet3, - ); - const crowdloanContract4 = new ethers.Contract( - ICROWDLOAN_ADDRESS, - ICrowdloanABI, - wallet4, - ); - const refundBalanceBefore3 = await api.query.System.Account.getValue( - convertH160ToSS58(wallet3.address), - ); - const refundBalanceBefore4 = await api.query.System.Account.getValue( - convertH160ToSS58(wallet4.address), - ); - tx = await crowdloanContract3.contribute(nextId, contribution); - await tx.wait(); - tx = await crowdloanContract4.contribute(nextId, contribution); - await tx.wait(); - - await waitForFinalizedBlock(api, end); - - tx = await crowdloanContract.refund(nextId); - await tx.wait(); - - const refundBalanceAfter3 = await api.query.System.Account.getValue( - convertH160ToSS58(wallet3.address), - ); - const refundBalanceAfter4 = await api.query.System.Account.getValue( - convertH160ToSS58(wallet4.address), - ); - assert.ok( - Number(refundBalanceBefore3.data.free - refundBalanceAfter3.data.free) < - 1_000_000, - ); - assert.ok( - Number(refundBalanceBefore4.data.free - refundBalanceAfter4.data.free) < - 1_000_000, - ); - - tx = await crowdloanContract.dissolve(nextId); - await tx.wait(); - - const creatorBalanceAfterDissolve = await api.query.System.Account.getValue( - convertH160ToSS58(wallet1.address), - ); - assert.ok( - Number( - creatorBalanceBeforeCreate.data.free - - creatorBalanceAfterDissolve.data.free, - ) < 2_000_000, - ); - }); - - it("contributes and withdraws against a crowdloan created on substrate side", async () => { - const nextId = await api.query.Crowdloan.NextCrowdloanId.getValue(); - const deposit = BigInt(15_000_000_000); - const end = (await api.query.System.Number.getValue()) + 100; - - await api.tx.Crowdloan.create({ - deposit, - min_contribution: BigInt(1_000_000_000), - cap: BigInt(100_000_000_000), - end, - target_address: undefined, - call: api.tx.System.remark({ remark: Binary.fromText("foo") }) - .decodedCall, - }).signAndSubmit(alice); - - const balanceBefore = await api.query.System.Account.getValue( - convertH160ToSS58(wallet1.address), - ); - - const contribution = BigInt(5_000_000_000); - const tx = await crowdloanContract.contribute(nextId, contribution); - await tx.wait(); - - let balanceAfter = await api.query.System.Account.getValue( - convertH160ToSS58(wallet1.address), - ); - assert.ok( - Number(balanceBefore.data.free - balanceAfter.data.free) - - Number(contribution) < - 1_000_000, - ); - - const tx2 = await crowdloanContract.withdraw(nextId); - await tx2.wait(); - - balanceAfter = await api.query.System.Account.getValue( - convertH160ToSS58(wallet1.address), - ); - assert.ok( - Number(balanceBefore.data.free - balanceAfter.data.free) < 1_000_000, - ); - }); -}); diff --git a/contract-tests/test/eth.incremental.deploy.test.ts b/contract-tests/test/eth.incremental.deploy.test.ts deleted file mode 100644 index 49571b508a..0000000000 --- a/contract-tests/test/eth.incremental.deploy.test.ts +++ /dev/null @@ -1,61 +0,0 @@ - - -import * as assert from "assert"; -import * as chai from "chai"; - -import { getDevnetApi } from "../src/substrate" -import { generateRandomEthersWallet, getPublicClient } from "../src/utils"; -import { ETH_LOCAL_URL } from "../src/config"; -import { devnet } from "@polkadot-api/descriptors" -import { PublicClient } from "viem"; -import { TypedApi } from "polkadot-api"; -import { INCREMENTAL_CONTRACT_ABI, INCREMENTAL_CONTRACT_BYTECODE } from "../src/contracts/incremental"; -import { toViemAddress } from "../src/address-utils"; -import { ethers } from "ethers" -import { disableWhiteListCheck, forceSetBalanceToEthAddress } from "../src/subtensor"; - -describe("incremental smart contract deployment", () => { - // init eth part - const wallet = generateRandomEthersWallet(); - let publicClient: PublicClient; - - // init substrate part - let api: TypedApi - - before(async () => { - publicClient = await getPublicClient(ETH_LOCAL_URL) - api = await getDevnetApi() - - await forceSetBalanceToEthAddress(api, wallet.address) - await disableWhiteListCheck(api, true) - }); - - it("Can deploy incremental smart contract", async () => { - const contractFactory = new ethers.ContractFactory(INCREMENTAL_CONTRACT_ABI, INCREMENTAL_CONTRACT_BYTECODE, wallet) - const contract = await contractFactory.deploy() - await contract.waitForDeployment() - - const value = await publicClient.readContract({ - abi: INCREMENTAL_CONTRACT_ABI, - address: toViemAddress(contract.target.toString()), - functionName: "retrieve", - args: [] - }) - assert.equal(value, 0) - - const newValue = 1234 - - const deployContract = new ethers.Contract(contract.target.toString(), INCREMENTAL_CONTRACT_ABI, wallet) - const storeTx = await deployContract.store(newValue) - await storeTx.wait() - - const newValueAfterStore = await publicClient.readContract({ - abi: INCREMENTAL_CONTRACT_ABI, - address: toViemAddress(contract.target.toString()), - functionName: "retrieve", - args: [] - }) - - assert.equal(newValue, newValueAfterStore) - }); -}); diff --git a/contract-tests/test/leasing.precompile.test.ts b/contract-tests/test/leasing.precompile.test.ts deleted file mode 100644 index 7205a8ed4a..0000000000 --- a/contract-tests/test/leasing.precompile.test.ts +++ /dev/null @@ -1,139 +0,0 @@ -import * as assert from "assert"; - -import { ethers } from "ethers"; -import { TypedApi } from "polkadot-api"; -import { devnet } from "@polkadot-api/descriptors"; -import { ICROWDLOAN_ADDRESS, ICrowdloanABI } from "../src/contracts/crowdloan"; -import { ILEASING_ADDRESS, ILeasingABI } from "../src/contracts/leasing"; -import { INEURON_ADDRESS, INeuronABI } from "../src/contracts/neuron"; -import { - convertH160ToPublicKey, - convertH160ToSS58, -} from "../src/address-utils"; -import { generateRandomEthersWallet } from "../src/utils"; -import { getDevnetApi, waitForFinalizedBlock } from "../src/substrate"; -import { forceSetBalanceToEthAddress } from "../src/subtensor"; - -describe("Leasing precompile E2E smoke", () => { - let api: TypedApi; - let wallet1: ethers.Wallet; - let wallet2: ethers.Wallet; - let leaseContract: ethers.Contract; - let crowdloanContract: ethers.Contract; - let neuronContract: ethers.Contract; - - beforeEach(async () => { - api = await getDevnetApi(); - - wallet1 = generateRandomEthersWallet(); - wallet2 = generateRandomEthersWallet(); - leaseContract = new ethers.Contract(ILEASING_ADDRESS, ILeasingABI, wallet1); - crowdloanContract = new ethers.Contract( - ICROWDLOAN_ADDRESS, - ICrowdloanABI, - wallet1, - ); - neuronContract = new ethers.Contract(INEURON_ADDRESS, INeuronABI, wallet1); - - await forceSetBalanceToEthAddress(api, wallet1.address); - await forceSetBalanceToEthAddress(api, wallet2.address); - }); - - it("creates, reads, and terminates a lease through RPC", async () => { - const hotkey = generateRandomEthersWallet(); - let tx = await neuronContract.burnedRegister( - 1, - convertH160ToPublicKey(hotkey.address), - ); - await tx.wait(); - - const nextCrowdloanId = - await api.query.Crowdloan.NextCrowdloanId.getValue(); - const crowdloanDeposit = BigInt(100_000_000_000); - const crowdloanMinContribution = BigInt(1_000_000_000); - const crowdloanCap = - (await api.query.SubtensorModule.NetworkLastLockCost.getValue()) * - BigInt(2); - const crowdloanEnd = (await api.query.System.Number.getValue()) + 100; - const leasingEmissionsShare = 15; - const leasingEndBlock = (await api.query.System.Number.getValue()) + 200; - - tx = await leaseContract.createLeaseCrowdloan( - crowdloanDeposit, - crowdloanMinContribution, - crowdloanCap, - crowdloanEnd, - leasingEmissionsShare, - true, - leasingEndBlock, - ); - await tx.wait(); - - const crowdloanContract2 = new ethers.Contract( - ICROWDLOAN_ADDRESS, - ICrowdloanABI, - wallet2, - ); - tx = await crowdloanContract2.contribute( - nextCrowdloanId, - crowdloanCap - crowdloanDeposit, - ); - await tx.wait(); - - await waitForFinalizedBlock(api, crowdloanEnd); - - const nextLeaseId = - await api.query.SubtensorModule.NextSubnetLeaseId.getValue(); - tx = await crowdloanContract.finalize(nextCrowdloanId); - await tx.wait(); - - const lease = - await api.query.SubtensorModule.SubnetLeases.getValue(nextLeaseId); - assert.ok(lease); - assert.equal(lease.beneficiary, convertH160ToSS58(wallet1.address)); - assert.equal(lease.emissions_share, leasingEmissionsShare); - assert.equal(lease.end_block, leasingEndBlock); - - const leaseInfo = await leaseContract.getLease(nextLeaseId); - assert.equal(leaseInfo[3], lease.emissions_share); - assert.equal(leaseInfo[4], true); - assert.equal(leaseInfo[5], lease.end_block); - assert.equal(leaseInfo[6], lease.netuid); - assert.equal(leaseInfo[7], lease.cost); - - const leaseId = await leaseContract.getLeaseIdForSubnet(lease.netuid); - assert.equal(leaseId, nextLeaseId); - - const beneficiaryShare = await leaseContract.getContributorShare( - nextLeaseId, - convertH160ToPublicKey(wallet1.address), - ); - assert.deepEqual(beneficiaryShare, [BigInt(0), BigInt(0)]); - - const contributorShare = await leaseContract.getContributorShare( - nextLeaseId, - convertH160ToPublicKey(wallet2.address), - ); - assert.notDeepEqual(contributorShare, [BigInt(0), BigInt(0)]); - - await waitForFinalizedBlock(api, leasingEndBlock); - - tx = await leaseContract.terminateLease( - nextLeaseId, - convertH160ToPublicKey(hotkey.address), - ); - await tx.wait(); - - const terminatedLease = - await api.query.SubtensorModule.SubnetLeases.getValue(nextLeaseId); - assert.equal(terminatedLease, undefined); - - const ownerColdkey = await api.query.SubtensorModule.SubnetOwner.getValue( - lease.netuid, - ); - const ownerHotkey = - await api.query.SubtensorModule.SubnetOwnerHotkey.getValue(lease.netuid); - assert.equal(ownerColdkey, convertH160ToSS58(wallet1.address)); - assert.equal(ownerHotkey, convertH160ToSS58(hotkey.address)); - }); -}); diff --git a/ts-tests/moonwall.config.json b/ts-tests/moonwall.config.json index 0b37cf37af..ceaf8cca81 100644 --- a/ts-tests/moonwall.config.json +++ b/ts-tests/moonwall.config.json @@ -126,6 +126,7 @@ "testFileDir": ["suites/zombienet_evm"], "runScripts": [ "generate-types.sh", + "generate-ink-types.sh", "build-spec.sh" ], "foundation": { @@ -136,7 +137,8 @@ } }, "vitestArgs": { - "bail": 1 + "hookTimeout": 900000, + "testTimeout": 300000 }, "connections": [ { diff --git a/ts-tests/package.json b/ts-tests/package.json index 75b5506cf8..6098bc580c 100644 --- a/ts-tests/package.json +++ b/ts-tests/package.json @@ -12,7 +12,8 @@ "fmt:fix": "biome format --write .", "lint": "biome lint . && tsc --noEmit", "lint:fix": "biome lint --write .", - "generate-types": "polkadot-api add subtensor --wsUrl ws://localhost:9944 --skip-codegen && polkadot-api" + "generate-types": "polkadot-api add subtensor --wsUrl ws://localhost:9944 --skip-codegen && polkadot-api", + "generate-ink-types": "polkadot-api ink add ./ink/bittensor.json && polkadot-api" }, "keywords": [], "author": "", @@ -23,6 +24,8 @@ "dependencies": { "@inquirer/prompts": "7.3.1", "@noble/ciphers": "^2.1.1", + "@polkadot-api/ink-contracts": "^0.4.1", + "@polkadot-api/sdk-ink": "^0.5.1", "polkadot-api": "1.19.2", "@polkadot-api/merkleize-metadata": "^1.1.15", "@polkadot-api/substrate-bindings": "^0.17.0", diff --git a/ts-tests/pnpm-lock.yaml b/ts-tests/pnpm-lock.yaml index d92a6b9cd6..c402126c8e 100644 --- a/ts-tests/pnpm-lock.yaml +++ b/ts-tests/pnpm-lock.yaml @@ -10,37 +10,43 @@ importers: dependencies: '@inquirer/prompts': specifier: 7.3.1 - version: 7.3.1(@types/node@25.3.5) + version: 7.3.1(@types/node@25.9.2) '@noble/ciphers': specifier: ^2.1.1 - version: 2.1.1 + version: 2.2.0 + '@polkadot-api/ink-contracts': + specifier: ^0.4.1 + version: 0.4.6 '@polkadot-api/merkleize-metadata': specifier: ^1.1.15 - version: 1.1.29 + version: 1.2.3 + '@polkadot-api/sdk-ink': + specifier: ^0.5.1 + version: 0.5.1(@polkadot-api/ink-contracts@0.4.6)(polkadot-api@1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.9.0))(rxjs@7.8.2)(typescript@5.8.3)(zod@3.25.76) '@polkadot-api/substrate-bindings': specifier: ^0.17.0 version: 0.17.0 '@polkadot/api': specifier: '*' - version: 16.5.4 + version: 16.5.6 '@polkadot/keyring': specifier: '*' - version: 14.0.1(@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1))(@polkadot/util@14.0.1) + version: 14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3) '@polkadot/types': specifier: '*' - version: 16.5.4 + version: 16.5.6 '@polkadot/types-codec': specifier: '*' - version: 16.5.4 + version: 16.5.6 '@polkadot/util': specifier: '*' - version: 14.0.1 + version: 14.0.3 '@polkadot/util-crypto': specifier: '*' - version: 14.0.1(@polkadot/util@14.0.1) + version: 14.0.3(@polkadot/util@14.0.3) '@zombienet/orchestrator': specifier: 0.0.105 - version: 0.0.105(@polkadot/util@14.0.1)(@types/node@25.3.5)(chokidar@3.6.0) + version: 0.0.105(@polkadot/util@14.0.3)(@types/node@25.9.2)(chokidar@3.6.0) ethereum-cryptography: specifier: 3.1.0 version: 3.1.0 @@ -49,26 +55,26 @@ importers: version: 2.7.0 polkadot-api: specifier: 1.19.2 - version: 1.19.2(postcss@8.5.8)(rxjs@7.8.2)(tsx@4.21.0)(yaml@2.8.2) + version: 1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.9.0) ps-node: specifier: 0.1.6 version: 0.1.6 devDependencies: '@acala-network/chopsticks': specifier: 1.2.3 - version: 1.2.3(debug@4.3.7)(ts-node@10.9.2(@types/node@25.3.5)(typescript@5.8.3)) + version: 1.2.3(debug@4.3.7)(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3)) '@biomejs/biome': specifier: 1.9.4 version: 1.9.4 '@moonwall/cli': specifier: 5.18.3 - version: 5.18.3(@polkadot/api-base@16.5.4)(@polkadot/api-derive@16.5.4)(@polkadot/api@16.5.4)(@polkadot/keyring@14.0.1(@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1))(@polkadot/util@14.0.1))(@polkadot/rpc-provider@16.5.4)(@polkadot/types-codec@16.5.4)(@polkadot/types@16.5.4)(@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1))(@polkadot/util@14.0.1)(@types/debug@4.1.12)(@types/node@25.3.5)(chokidar@3.6.0)(debug@4.3.7)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.8)(rxjs@7.8.2)(ts-node@10.9.2(@types/node@25.3.5)(typescript@5.8.3))(tsx@4.21.0)(typescript@5.8.3)(zod@3.25.76) + version: 5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api-derive@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/rpc-provider@16.5.6)(@polkadot/types-codec@16.5.6)(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@types/node@25.9.2)(chokidar@3.6.0)(debug@4.3.7)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3))(tsx@4.22.4)(typescript@5.8.3)(zod@3.25.76) '@moonwall/util': specifier: 5.18.3 - version: 5.18.3(@polkadot/api-base@16.5.4)(@polkadot/api-derive@16.5.4)(@polkadot/api@16.5.4)(@polkadot/keyring@14.0.1(@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1))(@polkadot/util@14.0.1))(@polkadot/rpc-provider@16.5.4)(@polkadot/types-codec@16.5.4)(@polkadot/types@16.5.4)(@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1))(@polkadot/util@14.0.1)(@types/debug@4.1.12)(@types/node@25.3.5)(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.8)(rxjs@7.8.2)(tsx@4.21.0)(typescript@5.8.3)(yaml@2.8.2)(zod@3.25.76) + version: 5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api-derive@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/rpc-provider@16.5.6)(@polkadot/types-codec@16.5.6)(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@types/node@25.9.2)(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(typescript@5.8.3)(yaml@2.9.0)(zod@3.25.76) '@polkadot/wasm-crypto': specifier: ^7.4.1 - version: 7.5.4(@polkadot/util@14.0.1)(@polkadot/x-randomvalues@14.0.1(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1))) + version: 7.5.4(@polkadot/util@14.0.3)(@polkadot/x-randomvalues@14.0.3(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3))) '@types/debug': specifier: 4.1.12 version: 4.1.12 @@ -77,7 +83,7 @@ importers: version: 1.0.4 '@types/node': specifier: '*' - version: 25.3.5 + version: 25.9.2 '@types/ps-node': specifier: 0.1.3 version: 0.1.3 @@ -89,7 +95,7 @@ importers: version: 3.1.3(vitest@3.2.4) '@zombienet/utils': specifier: ^0.0.28 - version: 0.0.28(@types/node@25.3.5)(chokidar@3.6.0)(typescript@5.8.3) + version: 0.0.28(@types/node@25.9.2)(chokidar@3.6.0)(typescript@5.8.3) bottleneck: specifier: 2.19.5 version: 2.19.5 @@ -116,7 +122,7 @@ importers: version: 3.0.0 tsx: specifier: '*' - version: 4.21.0 + version: 4.22.4 typescript: specifier: 5.8.3 version: 5.8.3 @@ -125,7 +131,7 @@ importers: version: 2.38.0(typescript@5.8.3)(zod@3.25.76) vitest: specifier: 3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@25.3.5)(@vitest/ui@3.1.3)(jsdom@23.2.0)(tsx@4.21.0)(yaml@2.8.2) + version: 3.2.4(@types/debug@4.1.12)(@types/node@25.9.2)(@vitest/ui@3.1.3)(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.9.0) web3: specifier: 4.15.0 version: 4.15.0(encoding@0.1.13)(typescript@5.8.3)(zod@3.25.76) @@ -138,7 +144,7 @@ importers: optionalDependencies: '@polkadot-api/descriptors': specifier: file:.papi/descriptors - version: file:.papi/descriptors(polkadot-api@1.19.2(postcss@8.5.8)(rxjs@7.8.2)(tsx@4.21.0)(yaml@2.8.2)) + version: file:.papi/descriptors(polkadot-api@1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.9.0)) packages: @@ -146,31 +152,31 @@ packages: resolution: {integrity: sha512-BHKo0FjnTktOFFeJqydByn2btwMKedRp2xC2zT1+Hr8cpZ1UTfLGW+XWbfg8/RwfXRYt5IWQwxqPyXGpCquCcw==} engines: {node: '>=v22'} - '@acala-network/chopsticks-core@1.2.7': - resolution: {integrity: sha512-TU//5U2Mx4YAQYjew+05i95j+YsfusuUJAST8Oy7Jkeaflc5CdzGXGc2Tjcn7J6VOSQA1/ngbDjdDIyf4Xjjlw==} + '@acala-network/chopsticks-core@1.4.2': + resolution: {integrity: sha512-pFqTC21htLrv8xrmE5ue+PiNnyJOSAk4IWXdQjjT0FkM32lyfK7LrWvvjVDGRQZ/sAdrN7acZTDOJExidSXQQA==} engines: {node: '>=v22'} '@acala-network/chopsticks-db@1.2.3': resolution: {integrity: sha512-Wn3n7Xmuo/523NP4COSYDB75xI1h3r2AhY99ioO26mCEkv8RAH053f/yVgUGPQDTX1ov3DygKj47zxP4szwEiQ==} engines: {node: '>=v22'} - '@acala-network/chopsticks-db@1.2.7': - resolution: {integrity: sha512-QVF22l8kehU4SxSdIHd8VsRZyxQGNQjR92fFzybS+zDJXN1B7cIItMfHMe0giiH1aEoA4V1DW9Y6eC4PV7JVGg==} + '@acala-network/chopsticks-db@1.4.2': + resolution: {integrity: sha512-TpoLP0nfUjf0Fx/3iV42ixJ8FbDYEaJUx+VMgTkRD6BN63/nPToKkAkCUURpyXHPP+jjgBkNgI5kAw5SuhSUWw==} engines: {node: '>=v22'} '@acala-network/chopsticks-executor@1.2.3': resolution: {integrity: sha512-FcO3NtCfgkAh07P4eHsKcYr2JmImI95xs7xQjEICfyRRNTAonBfJFR8D2voRcoatxkNz6VCVVRgCvILBAuER9Q==} - '@acala-network/chopsticks-executor@1.2.7': - resolution: {integrity: sha512-pDptKUkKpy74b0Ui29QYsm4Gr7BFa3ehZ6VKbe8Chgveye7bMEIMJYpiXSbzovHwz47NGMJD0+d4v8NzWi7V9g==} + '@acala-network/chopsticks-executor@1.4.2': + resolution: {integrity: sha512-hG+hjK9x1pIxCWL9CG5dSvsbz7gEsR4/ayW+P4ldGw0uFckQhzp+Gak57FYuka/PjQx09l4blv1BWDS/Lxq9fg==} '@acala-network/chopsticks@1.2.3': resolution: {integrity: sha512-roD+7fyjU3kHEO1czUF9vBIBabFN4VFfYv4tBLA2fg+Hc/GMM3OJ98oHrCMSusp0UgpPpyo4sHKAT0gS418n2g==} engines: {node: '>=v22'} hasBin: true - '@acala-network/chopsticks@1.2.7': - resolution: {integrity: sha512-kqahze0KrCqb0zX9OUW003iNux2g6WZF+WEU2uayPGJ7pIx1PE9Dq4+8cCMR99MKo6OwmCsslFDueUG4BwyZyQ==} + '@acala-network/chopsticks@1.4.2': + resolution: {integrity: sha512-vPEZNEBsyKzXPvDy7YIoNEGdvJRVc7Wkseg+47MsXnKYjUmoBqxh4pVIRGRQhl8KrRkKy0Nk27hSzCCwlCXKfg==} engines: {node: '>=v22'} hasBin: true @@ -255,12 +261,12 @@ packages: resolution: {integrity: sha512-hJA62OeBKUQT68DD2gDyhOqJxZxycqg8wLxbqjgqSzYttCMSDL9tiAQ9abgekBYNHudbJosm9sWOEbmCDfpX2A==} engines: {node: '>= 10'} - '@babel/code-frame@7.29.0': - resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + '@babel/code-frame@7.29.7': + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.28.5': - resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} engines: {node: '>=6.9.0'} '@balena/dockerignore@1.0.2': @@ -433,162 +439,323 @@ packages: '@effect/rpc': ^0.72.2 effect: ^3.19.10 - '@esbuild/aix-ppc64@0.27.3': - resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} + '@esbuild/aix-ppc64@0.27.7': + resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.27.3': - resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} + '@esbuild/aix-ppc64@0.28.0': + resolution: {integrity: sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.27.7': + resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.28.0': + resolution: {integrity: sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.27.3': - resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} + '@esbuild/android-arm@0.27.7': + resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.27.3': - resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} + '@esbuild/android-arm@0.28.0': + resolution: {integrity: sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.27.7': + resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.28.0': + resolution: {integrity: sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.27.3': - resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} + '@esbuild/darwin-arm64@0.27.7': + resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.27.3': - resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} + '@esbuild/darwin-arm64@0.28.0': + resolution: {integrity: sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.7': + resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.28.0': + resolution: {integrity: sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.27.3': - resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} + '@esbuild/freebsd-arm64@0.27.7': + resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.3': - resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} + '@esbuild/freebsd-arm64@0.28.0': + resolution: {integrity: sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.7': + resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.28.0': + resolution: {integrity: sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.27.3': - resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} + '@esbuild/linux-arm64@0.27.7': + resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.27.3': - resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} + '@esbuild/linux-arm64@0.28.0': + resolution: {integrity: sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.27.7': + resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.28.0': + resolution: {integrity: sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.27.3': - resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} + '@esbuild/linux-ia32@0.27.7': + resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.27.3': - resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} + '@esbuild/linux-ia32@0.28.0': + resolution: {integrity: sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.27.7': + resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.28.0': + resolution: {integrity: sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.27.3': - resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} + '@esbuild/linux-mips64el@0.27.7': + resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.27.3': - resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} + '@esbuild/linux-mips64el@0.28.0': + resolution: {integrity: sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.27.7': + resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.28.0': + resolution: {integrity: sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.27.3': - resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} + '@esbuild/linux-riscv64@0.27.7': + resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.27.3': - resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} + '@esbuild/linux-riscv64@0.28.0': + resolution: {integrity: sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.27.7': + resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.28.0': + resolution: {integrity: sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.27.3': - resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} + '@esbuild/linux-x64@0.27.7': + resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.27.3': - resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} + '@esbuild/linux-x64@0.28.0': + resolution: {integrity: sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.27.7': + resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-arm64@0.28.0': + resolution: {integrity: sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.3': - resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} + '@esbuild/netbsd-x64@0.27.7': + resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.27.3': - resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} + '@esbuild/netbsd-x64@0.28.0': + resolution: {integrity: sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.27.7': + resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-arm64@0.28.0': + resolution: {integrity: sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.3': - resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} + '@esbuild/openbsd-x64@0.27.7': + resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.27.3': - resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} + '@esbuild/openbsd-x64@0.28.0': + resolution: {integrity: sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.27.7': + resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/openharmony-arm64@0.28.0': + resolution: {integrity: sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.27.3': - resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} + '@esbuild/sunos-x64@0.27.7': + resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.27.3': - resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} + '@esbuild/sunos-x64@0.28.0': + resolution: {integrity: sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.27.7': + resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.28.0': + resolution: {integrity: sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.27.3': - resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} + '@esbuild/win32-ia32@0.27.7': + resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.27.3': - resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} + '@esbuild/win32-ia32@0.28.0': + resolution: {integrity: sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.27.7': + resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.28.0': + resolution: {integrity: sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==} engines: {node: '>=18'} cpu: [x64] os: [win32] + '@ethereumjs/rlp@10.1.2': + resolution: {integrity: sha512-T5Zt6C2pd02Wd88Q9A5/UX+He1Q2Y1LntHxz/038tfbUMiqby4fYSSTLEDx+TEfJqw1BsJSBY/TSu6goUzlk+w==} + engines: {node: '>=20'} + hasBin: true + '@ethereumjs/rlp@4.0.1': resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} engines: {node: '>=14'} @@ -602,8 +769,8 @@ packages: '@gar/promisify@1.1.3': resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} - '@grpc/grpc-js@1.14.3': - resolution: {integrity: sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA==} + '@grpc/grpc-js@1.14.4': + resolution: {integrity: sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ==} engines: {node: '>=12.10.0'} '@grpc/proto-loader@0.7.15': @@ -611,8 +778,8 @@ packages: engines: {node: '>=6'} hasBin: true - '@grpc/proto-loader@0.8.0': - resolution: {integrity: sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ==} + '@grpc/proto-loader@0.8.1': + resolution: {integrity: sha512-wtF6h+DY6M3YaDBPAmvuuA6jV8Sif9MjtOI5euKFWRgCDl5PeDpPsHR9u2l6St5ceY8AZgoNDww5+HvEsXFsGg==} engines: {node: '>=6'} hasBin: true @@ -620,9 +787,9 @@ packages: resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} engines: {node: '>=18'} - '@inquirer/ansi@2.0.3': - resolution: {integrity: sha512-g44zhR3NIKVs0zUesa4iMzExmZpLUdTLRMCStqX3GE5NT6VkPcxQGJ+uC8tDgBUC/vB1rUhUd55cOf++4NZcmw==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + '@inquirer/ansi@2.0.7': + resolution: {integrity: sha512-3eTuUO1vH2cZm2ZKHeQxnOqlTi9EfZDGgIe3BL3I4u+rJHocr9Fz86M4fjYABPvFnQG/gGK551HqDiIcETwU6Q==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} '@inquirer/checkbox@4.3.2': resolution: {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==} @@ -633,9 +800,9 @@ packages: '@types/node': optional: true - '@inquirer/checkbox@5.1.0': - resolution: {integrity: sha512-/HjF1LN0a1h4/OFsbGKHNDtWICFU/dqXCdym719HFTyJo9IG7Otr+ziGWc9S0iQuohRZllh+WprSgd5UW5Fw0g==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + '@inquirer/checkbox@5.2.1': + resolution: {integrity: sha512-b6xmA/VlTe0ZgDQHDui+Nav470u7u49nRd8/iuhOcQPO9Ch7lGuogydhi2VOmNlZ+zXcM8IcPuNSwQcdJaF/kw==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: @@ -651,9 +818,9 @@ packages: '@types/node': optional: true - '@inquirer/confirm@6.0.8': - resolution: {integrity: sha512-Di6dgmiZ9xCSUxWUReWTqDtbhXCuG2MQm2xmgSAIruzQzBqNf49b8E07/vbCYY506kDe8BiwJbegXweG8M1klw==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + '@inquirer/confirm@6.1.1': + resolution: {integrity: sha512-eb8DBZcz/2qHWQda4rk2JiQk5h9QV/cVHi1yjt0f69WFZMRFn0sJTye3EAP8icut8UDMjQPsaH5KbcOogefrFQ==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: @@ -669,9 +836,9 @@ packages: '@types/node': optional: true - '@inquirer/core@11.1.5': - resolution: {integrity: sha512-QQPAX+lka8GyLcZ7u7Nb1h6q72iZ/oy0blilC3IB2nSt1Qqxp7akt94Jqhi/DzARuN3Eo9QwJRvtl4tmVe4T5A==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + '@inquirer/core@11.2.1': + resolution: {integrity: sha512-Qd6GJT1yVyrZZCfN8W2qKF5ApmqryXRhRKCuip8h01x2w/esJQ2XIYc6f9abMIHgKQdBfFTSOdbHRLAhuM09UA==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: @@ -687,9 +854,9 @@ packages: '@types/node': optional: true - '@inquirer/editor@5.0.8': - resolution: {integrity: sha512-sLcpbb9B3XqUEGrj1N66KwhDhEckzZ4nI/W6SvLXyBX8Wic3LDLENlWRvkOGpCPoserabe+MxQkpiMoI8irvyA==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + '@inquirer/editor@5.2.2': + resolution: {integrity: sha512-ZRVd/oD+sYsUd5zVm0NflqEzlqfYCyHNsqkHl2oWXEUHs12tCbcSFi+wVFEvD8+LGRaMUsVrE7qeo6lSG/S1Vg==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: @@ -705,9 +872,9 @@ packages: '@types/node': optional: true - '@inquirer/expand@5.0.8': - resolution: {integrity: sha512-QieW3F1prNw3j+hxO7/NKkG1pk3oz7pOB6+5Upwu3OIwADfPX0oZVppsqlL+Vl/uBHHDSOBY0BirLctLnXwGGg==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + '@inquirer/expand@5.1.1': + resolution: {integrity: sha512-YmQpenjbFSHAK3sOd44puHh3V1KXXr+JiNpUztoSQ4drLh2rTVzTap/YtlAVu/5xavifIlBfNEzJ/neZJ1a/1g==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: @@ -723,9 +890,9 @@ packages: '@types/node': optional: true - '@inquirer/external-editor@2.0.3': - resolution: {integrity: sha512-LgyI7Agbda74/cL5MvA88iDpvdXI2KuMBCGRkbCl2Dg1vzHeOgs+s0SDcXV7b+WZJrv2+ERpWSM65Fpi9VfY3w==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + '@inquirer/external-editor@3.0.3': + resolution: {integrity: sha512-6thf5I8q7lZwzGLAxPaaGEREEkZ3nyePPDQ1oyobblxmEE8mqTLguScP7pDjUTAibiyb4hfXl+qjUEJ+di/aNA==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: @@ -736,9 +903,9 @@ packages: resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} engines: {node: '>=18'} - '@inquirer/figures@2.0.3': - resolution: {integrity: sha512-y09iGt3JKoOCBQ3w4YrSJdokcD8ciSlMIWsD+auPu+OZpfxLuyz+gICAQ6GCBOmJJt4KEQGHuZSVff2jiNOy7g==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + '@inquirer/figures@2.0.7': + resolution: {integrity: sha512-aJ8TBPOGB6f/2qziPfElISTCEd5XOYTFckA2SGjhNmiKzfK/u4ot3v0DUzGVdUnKjN10EqnnEPck36BkyfLnJw==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} '@inquirer/input@4.3.1': resolution: {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==} @@ -749,9 +916,9 @@ packages: '@types/node': optional: true - '@inquirer/input@5.0.8': - resolution: {integrity: sha512-p0IJslw0AmedLEkOU+yrEX3Aj2RTpQq7ZOf8nc1DIhjzaxRWrrgeuE5Kyh39fVRgtcACaMXx/9WNo8+GjgBOfw==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + '@inquirer/input@5.1.2': + resolution: {integrity: sha512-9K/DDBSQpOyZSkt6sOVP9Vo0TR7atX2kuILsUu0x3wVcVbe97lJwIJKMLdMw25tDYuXl/qp6erT0Xs1rfmcfZg==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: @@ -767,9 +934,9 @@ packages: '@types/node': optional: true - '@inquirer/number@4.0.8': - resolution: {integrity: sha512-uGLiQah9A0F9UIvJBX52m0CnqtLaym0WpT9V4YZrjZ+YRDKZdwwoEPz06N6w8ChE2lrnsdyhY9sL+Y690Kh9gQ==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + '@inquirer/number@4.1.1': + resolution: {integrity: sha512-XF4IXAbPnGPgw0wsbC/i2tPcyfdZgDpUlhsqU0SfT4IRIGWha6Xm9VRgN5yYxJq+jnyXlfXI/nQ3ulfk0iEICA==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: @@ -785,9 +952,9 @@ packages: '@types/node': optional: true - '@inquirer/password@5.0.8': - resolution: {integrity: sha512-zt1sF4lYLdvPqvmvHdmjOzuUUjuCQ897pdUCO8RbXMUDKXJTTyOQgtn23le+jwcb+MpHl3VAFvzIdxRAf6aPlA==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + '@inquirer/password@5.1.1': + resolution: {integrity: sha512-3XBfF7DAsp5qeDsvN5Rd1HmbNokVvEQoUM0QLrRcybC9nX96w3Pbmu7qUsb3IT3J3jBvs2+mTXaKHOUsgHMLzg==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: @@ -803,9 +970,9 @@ packages: '@types/node': optional: true - '@inquirer/prompts@8.3.0': - resolution: {integrity: sha512-JAj66kjdH/F1+B7LCigjARbwstt3SNUOSzMdjpsvwJmzunK88gJeXmcm95L9nw1KynvFVuY4SzXh/3Y0lvtgSg==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + '@inquirer/prompts@8.5.2': + resolution: {integrity: sha512-IYR/3C/paEVVQYQvdDlFZVjRCJVYHHON0XXMH91KO9GSxs0TdKYWlUdvfQl2EfAHDxUaN3IBffkE/BDTh5nJ6g==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: @@ -821,9 +988,9 @@ packages: '@types/node': optional: true - '@inquirer/rawlist@5.2.4': - resolution: {integrity: sha512-fTuJ5Cq9W286isLxwj6GGyfTjx1Zdk4qppVEPexFuA6yioCCXS4V1zfKroQqw7QdbDPN73xs2DiIAlo55+kBqg==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + '@inquirer/rawlist@5.3.1': + resolution: {integrity: sha512-QqdTqQddL3qPX/PPrjobpsO25NZ4dWXgTLenrR445L2ptLEYE6Z+PD5c5CNDJNx4ugRgELAIpSIJxZaO2jJ2Og==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: @@ -839,9 +1006,9 @@ packages: '@types/node': optional: true - '@inquirer/search@4.1.4': - resolution: {integrity: sha512-9yPTxq7LPmYjrGn3DRuaPuPbmC6u3fiWcsE9ggfLcdgO/ICHYgxq7mEy1yJ39brVvgXhtOtvDVjDh9slJxE4LQ==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + '@inquirer/search@4.2.1': + resolution: {integrity: sha512-xJj8QWKRSrfKoBIITLZK61dD3zwo0Rz11fgDImku30/Oe81zMdIdGgrLY2h6RkJ+KZ/GhNYIRMKnH/62qBTA5g==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: @@ -857,9 +1024,9 @@ packages: '@types/node': optional: true - '@inquirer/select@5.1.0': - resolution: {integrity: sha512-OyYbKnchS1u+zRe14LpYrN8S0wH1vD0p2yKISvSsJdH2TpI87fh4eZdWnpdbrGauCRWDph3NwxRmM4Pcm/hx1Q==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + '@inquirer/select@5.2.1': + resolution: {integrity: sha512-FlDndEUww8m7BfukO2nJa25vhD+H5jxxCv4oGioKqzyWz3nPHhhw4LKdYRSlXuAx7DsdWia7iyaBPKKS95Evfw==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: @@ -875,9 +1042,9 @@ packages: '@types/node': optional: true - '@inquirer/type@4.0.3': - resolution: {integrity: sha512-cKZN7qcXOpj1h+1eTTcGDVLaBIHNMT1Rz9JqJP5MnEJ0JhgVWllx7H/tahUp5YEK1qaByH2Itb8wLG/iScD5kw==} - engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + '@inquirer/type@4.0.7': + resolution: {integrity: sha512-t28inv14nMQ1PhKpsJPY+kEs/c00qzeCOS2gTNRyTjG5d6qsVA2fItxW4hkvGZ5lvanGLdtCzVIx5dwdRpN1+g==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: @@ -896,6 +1063,10 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -953,33 +1124,33 @@ packages: '@polkadot/util': ^13.0.0 '@polkadot/util-crypto': ^13.0.0 - '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': - resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==} + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.4': + resolution: {integrity: sha512-LCkGo6JDfaBhgST7UpPWgNgLINpcpabaHfyz5OBx75nUYxBsaEPxjnyNjWpeb/xBup/682QnBfRBy2/LvPutZQ==} cpu: [arm64] os: [darwin] - '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': - resolution: {integrity: sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==} + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.4': + resolution: {integrity: sha512-zExlW9zUJKZH/tOtVMttwjKa4Xm/3KcNjnE3dPN92uCktwavMxpgCA3MoJK/DOnTWsQgo224OaST27/mPNAf+w==} cpu: [x64] os: [darwin] - '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': - resolution: {integrity: sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==} + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.4': + resolution: {integrity: sha512-dgX0P/9wGPJeHFBG+ZmhgE6bmtMt7NP5CRBGyyktpopdk/mW4POnrpQsSLtKI1dwpc+pPLuXHDh6vvskyQE/sw==} cpu: [arm64] os: [linux] - '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': - resolution: {integrity: sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==} + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.4': + resolution: {integrity: sha512-Tg3yX65f5GbtXLkrYEHE5oibZG9epyYWas7FogTTEJeDEF9JlXJzKgXaNhT3UXlTOeA+AfZpYZYZ0uPj7Cfquw==} cpu: [arm] os: [linux] - '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': - resolution: {integrity: sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==} + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.4': + resolution: {integrity: sha512-8TNXMEjJc3QEy7R/x1INhgiU+XakDAFUzBhaz7+Rbrs8NH5UQeHQxxmzsSBJGyV6I1jW79undiQm8tOI+D+8FQ==} cpu: [x64] os: [linux] - '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': - resolution: {integrity: sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==} + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.4': + resolution: {integrity: sha512-CmCXPQrkbwExx3j946/PtHWHbYJiCRBRDl4BlkRQcJB/YOwQxJRTpoo7aTsortjgoJ1x7opzTSxn7C+ASSLVjQ==} cpu: [x64] os: [win32] @@ -991,8 +1162,8 @@ packages: resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==} engines: {node: ^14.21.3 || >=16} - '@noble/ciphers@2.1.1': - resolution: {integrity: sha512-bysYuiVfhxNJuldNXlFEitTVdNnYUc+XNJZd7Qm2a5j1vZHgY+fazadNFWFaMK/2vye0JVlxV3gHmC0WDfAOQw==} + '@noble/ciphers@2.2.0': + resolution: {integrity: sha512-Z6pjIZ/8IJcCGzb2S/0Px5J81yij85xASuk1teLNeg75bfT07MV3a/O2Mtn1I2se43k3lkVEcFaR10N4cgQcZA==} engines: {node: '>= 20.19.0'} '@noble/curves@1.2.0': @@ -1032,8 +1203,8 @@ packages: resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} engines: {node: ^14.21.3 || >=16} - '@noble/hashes@2.0.1': - resolution: {integrity: sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==} + '@noble/hashes@2.2.0': + resolution: {integrity: sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==} engines: {node: '>= 20.19.0'} '@noble/secp256k1@1.7.2': @@ -1088,8 +1259,8 @@ packages: resolution: {integrity: sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==} engines: {node: '>= 20'} - '@octokit/request@10.0.8': - resolution: {integrity: sha512-SJZNwY9pur9Agf7l87ywFi14W+Hd9Jg6Ifivsd33+/bGUQIjNujdFiXII2/qSlN2ybqUHfp5xpekMEjIBTjlSw==} + '@octokit/request@10.0.10': + resolution: {integrity: sha512-KxNC2pTqqhszMNrf12ZRd4PonRgyJdsM4F/jySiddQK+DsRcfBtUvqn8t7UsyZhnRJHvX46OohDt5N3VqIWC2w==} engines: {node: '>= 20'} '@octokit/rest@22.0.1': @@ -1216,6 +1387,12 @@ packages: '@polkadot-api/codegen@0.19.1': resolution: {integrity: sha512-129a0vHChzKuvQDELMYPpmqZtA5VFlJ7vo5HZh47bo67qYi1veRgDrNQVGM8yaHzi7Coo481b/SDruZbbbgd3Q==} + '@polkadot-api/common-sdk-utils@0.1.0': + resolution: {integrity: sha512-cgA9fh8dfBai9b46XaaQmj9vwzyHStQjc/xrAvQksgF6SqvZ0yAfxVqLvGrsz/Xi3dsAdKLg09PybC7MUAMv9w==} + peerDependencies: + polkadot-api: ^1.8.1 + rxjs: '>=7.8.1' + '@polkadot-api/descriptors@file:.papi/descriptors': resolution: {directory: .papi/descriptors, type: directory} peerDependencies: @@ -1224,6 +1401,9 @@ packages: '@polkadot-api/ink-contracts@0.4.0': resolution: {integrity: sha512-e2u5KhuYoiM+PyHsvjkI0O1nmFuC0rLH64uBerMqwK7hWENdM/ej9OqKawIzp6NQuYSHF5P4U8NBT0mjP9Y1yQ==} + '@polkadot-api/ink-contracts@0.4.6': + resolution: {integrity: sha512-wpFPa8CnGnmq+cFYMzuTEDmtt3ElBM0UWgTz4RpmI9E7knZ1ctWBhO7amXxOWcILqIG6sqWIE95x0cfF1PRcQg==} + '@polkadot-api/json-rpc-provider-proxy@0.1.0': resolution: {integrity: sha512-8GSFE5+EF73MCuLQm8tjrbCqlgclcHBSRaswvXziJ0ZW7iw3UEMsKkkKvELayWyBuOPa2T5i1nj6gFOeIsqvrg==} @@ -1250,8 +1430,8 @@ packages: '@polkadot-api/merkleize-metadata@1.1.25': resolution: {integrity: sha512-deNOiMY/XvyN47/N3C+GrkM0a1i7xcy4I3F3H9wW1XtyxffAmNpoj58L7Zr2RtXYhfekmhdUZlzdD1+DOYeqvg==} - '@polkadot-api/merkleize-metadata@1.1.29': - resolution: {integrity: sha512-z8ivYDdr4xlh50MQ7hLaSVw4VM6EV7gGgd+v/ej09nue0W08NG77zf7pXWeRKgOXe3+hPOSQQRSZT2OlIYRfqA==} + '@polkadot-api/merkleize-metadata@1.2.3': + resolution: {integrity: sha512-WkPbz0p2XQ9c8yXagdnwCHEB70Gnm91okcsd6IXU393//3aPgkxKgb+/Efnz7C5/KQmg02P0zXo7q/n/W/yVCA==} '@polkadot-api/metadata-builders@0.13.5': resolution: {integrity: sha512-3XqLKVv3eGDOUHEeC1KkBCeb/IjnfzdGNxydXJtonr+sbu6Ds7om5sSjqqWASf1bRSO0aHzVO3upPANveCcysg==} @@ -1259,6 +1439,9 @@ packages: '@polkadot-api/metadata-builders@0.13.9': resolution: {integrity: sha512-V2GljT6StuK40pfmO5l53CvgFNgy60Trrv20mOZDCsFU9J82F+a1HYAABDYlRgoZ9d0IDwc+u+vI+RHUJoR4xw==} + '@polkadot-api/metadata-builders@0.14.3': + resolution: {integrity: sha512-m7CACsiqHzgVEh5WBZGkTV8AQ3CBQKR1YpPQMnlsJfCr/IkgKU0UyWM6WxCmBiReLFVkOfXMtGlpN8+GxpHmww==} + '@polkadot-api/metadata-builders@0.3.2': resolution: {integrity: sha512-TKpfoT6vTb+513KDzMBTfCb/ORdgRnsS3TDFpOhAhZ08ikvK+hjHMt5plPiAX/OWkm1Wc9I3+K6W0hX5Ab7MVg==} @@ -1288,6 +1471,13 @@ packages: '@polkadot-api/raw-client@0.1.1': resolution: {integrity: sha512-HxalpNEo8JCYXfxKM5p3TrK8sEasTGMkGjBNLzD4TLye9IK2smdb5oTvp2yfkU1iuVBdmjr69uif4NaukOYo2g==} + '@polkadot-api/sdk-ink@0.5.1': + resolution: {integrity: sha512-9pRnghjigivvgq7375hzkoazstvPDbc0YB01Jzw1/MYKcX+YJn1p/H8SAQTWbKlz2ohFgi1nwU52a0bsmKqb/Q==} + peerDependencies: + '@polkadot-api/ink-contracts': '>=0.4.0' + polkadot-api: '>=1.19.0' + rxjs: '>=7.8.0' + '@polkadot-api/signer@0.2.9': resolution: {integrity: sha512-2KntINp+HlrnsRquQiDaoGU400Guh/CbbTdkq23Y14qLjjKUQbGGs7RLHuVCxagxKw4UFlQpO36Ku0lHj3rq5Q==} @@ -1305,9 +1495,15 @@ packages: '@polkadot-api/substrate-bindings@0.16.3': resolution: {integrity: sha512-KN/nghI3SM0t7WsULwLRB3s4DnWogGCi5TuvXB0yPkkiB5GJugMPuHTTUxDkWmjZ0vLUFlmkaZ/sfFf0tvo8xQ==} + '@polkadot-api/substrate-bindings@0.16.6': + resolution: {integrity: sha512-cATY7HWU5hWd09C1MUEddechq7JT7QAciKL2/N/1wv5rxGcAFyAD9ZtaKBXVI4Aui9RSeGh8KvHdgKFLoozMyQ==} + '@polkadot-api/substrate-bindings@0.17.0': resolution: {integrity: sha512-YdbkvG/27N5A94AiKE4soVjDy0Nw74Nn+KD29mUnFmIZvL3fsN/DTYkxvMDVsOuanFXyAIXmzDMoi7iky0fyIw==} + '@polkadot-api/substrate-bindings@0.20.3': + resolution: {integrity: sha512-9iqC71fx1ee9ld1NZV8PFime5vryi0kt1bKCSlvNgO6dqMc06sMZuZ8WPjOzWLCHiKHLuphdMs3rVBBaeCP3yg==} + '@polkadot-api/substrate-bindings@0.6.0': resolution: {integrity: sha512-lGuhE74NA1/PqdN7fKFdE5C1gNYX357j1tWzdlPXI0kQ7h3kN0zfxNOpPUN7dIrPcOFZ6C0tRRVrBylXkI6xPw==} @@ -1323,6 +1519,9 @@ packages: '@polkadot-api/utils@0.2.0': resolution: {integrity: sha512-nY3i5fQJoAxU4n3bD7Fs208/KR2J95SGfVc58kDjbRYN5a84kWaGEqzjBNtP9oqht49POM8Bm9mbIrkvC1Bzuw==} + '@polkadot-api/utils@0.4.0': + resolution: {integrity: sha512-9b/hwRM0UloLWV7SfpNaSD/4k8UQAHoaACAk7Xe+1MlfAm2JtnmPiB1GfGrfTyBlsrJVUIBCZpEmbmxVMaIqBA==} + '@polkadot-api/wasm-executor@0.2.3': resolution: {integrity: sha512-B2h1o+Qlo9idpASaHvMSoViB2I5ko5OAfwfhYF8LQDkTADK0B+SeStzNj1Qn+FG34wqTuv7HzBCdjaUgzYINJQ==} @@ -1333,32 +1532,32 @@ packages: resolution: {integrity: sha512-PE6DW+8kRhbnGKn7qCF7yM6eEt/kqrY8bh1i0RZcPY9QgwXW4bZZrtMK4WssX6Z70NTEoOW6xHYIjc7gFZuz8g==} engines: {node: '>=18'} - '@polkadot/api-augment@16.5.4': - resolution: {integrity: sha512-9FTohz13ih458V2JBFjRACKHPqfM6j4bmmTbcSaE7hXcIOYzm4ABFo7xq5osLyvItganjsICErL2vRn2zULycw==} + '@polkadot/api-augment@16.5.6': + resolution: {integrity: sha512-bunJF1c3nIuDtU6iwa+reTt9U47Y8iOC8Gw7PfANlZmLJmO/XVXnWc3JJLM+g9ESDn2raHJELeWBFVOXQrbtUw==} engines: {node: '>=18'} '@polkadot/api-base@14.3.1': resolution: {integrity: sha512-GZT6rTpT3HYZ/C3rLPjoX3rX3DOxNG/zgts+jKjNrCumAeZkVq5JErKIX8/3f2TVaE2Kbqniy3d1TH/AL4HBPA==} engines: {node: '>=18'} - '@polkadot/api-base@16.5.4': - resolution: {integrity: sha512-V69v3ieg5+91yRUCG1vFRSLr7V7MvHPvo/QrzleIUu8tPXWldJ0kyXbWKHVNZEpVBA9LpjGvII+MHUW7EaKMNg==} + '@polkadot/api-base@16.5.6': + resolution: {integrity: sha512-eBLIv86ZZY4t5OrobVoGC+QXbErOGlBpI2rJI5OMvTNPoVvtEoI++u+wwRScjkOZaUhXyQikd+0Uv71qr3xnsA==} engines: {node: '>=18'} '@polkadot/api-derive@14.3.1': resolution: {integrity: sha512-PhqUEJCY54vXtIaoYqGUtJY06wHd/K0cBmBz9yCLxp8UZkLoGWhfJRTruI25Jnucf9awS5cZKYqbsoDrL09Oqg==} engines: {node: '>=18'} - '@polkadot/api-derive@16.5.4': - resolution: {integrity: sha512-0JP2a6CaqTviacHsmnUKF4VLRsKdYOzQCqdL9JpwY/QBz/ZLqIKKPiSRg285EVLf8n/hWdTfxbWqQCsRa5NL+Q==} + '@polkadot/api-derive@16.5.6': + resolution: {integrity: sha512-cHdvPvhYFch18uPTcuOZJ8VceOfercod2fi4xCnHJAmattzlgj9qCgnOoxdmBS9GZ403ZyRHOjBuUwZy/IsUWQ==} engines: {node: '>=18'} '@polkadot/api@14.3.1': resolution: {integrity: sha512-ZBKSXEVJa1S1bnmpnA7KT/fX3sJDIJOdVD9Hp3X+G73yvXzuK5k1Mn5z9bD/AcMs/HAGcbuYU+b9+b9IByH9YQ==} engines: {node: '>=18'} - '@polkadot/api@16.5.4': - resolution: {integrity: sha512-mX1fwtXCBAHXEyZLSnSrMDGP+jfU2rr7GfDVQBz0cBY1nmY8N34RqPWGrZWj8o4DxVu1DQ91sGncOmlBwEl0Qg==} + '@polkadot/api@16.5.6': + resolution: {integrity: sha512-5h/X3pY8WpqGk4XTaiIUjKD6Pnk8k4bJ6EIwPKLP8/kfFWKSOenpN6ggZxANr+Qj+RgXrp4TxJVcuhXSiBh9Sg==} engines: {node: '>=18'} '@polkadot/keyring@13.5.9': @@ -1368,91 +1567,91 @@ packages: '@polkadot/util': 13.5.9 '@polkadot/util-crypto': 13.5.9 - '@polkadot/keyring@14.0.1': - resolution: {integrity: sha512-kHydQPCeTvJrMC9VQO8LPhAhTUxzxfNF1HEknhZDBPPsxP/XpkYsEy/Ln1QzJmQqD5VsgwzLDE6cExbJ2CT9CA==} + '@polkadot/keyring@14.0.3': + resolution: {integrity: sha512-ozp1dQwaHCjgX/fpTTORmHjxdUNQnyiTVJszpzUaUpvtH/IGZhSU/mSHXMqNETS/g57vQa7NatIDcWfyR9abyA==} engines: {node: '>=18'} peerDependencies: - '@polkadot/util': 14.0.1 - '@polkadot/util-crypto': 14.0.1 + '@polkadot/util': 14.0.3 + '@polkadot/util-crypto': 14.0.3 '@polkadot/networks@13.5.9': resolution: {integrity: sha512-nmKUKJjiLgcih0MkdlJNMnhEYdwEml2rv/h59ll2+rAvpsVWMTLCb6Cq6q7UC44+8kiWK2UUJMkFU+3PFFxndA==} engines: {node: '>=18'} - '@polkadot/networks@14.0.1': - resolution: {integrity: sha512-wGlBtXDkusRAj4P7uxfPz80gLO1+j99MLBaQi3bEym2xrFrFhgIWVHOZlBit/1PfaBjhX2Z8XjRxaM2w1p7w2w==} + '@polkadot/networks@14.0.3': + resolution: {integrity: sha512-/VqTLUDn+Wm8S2L/yaGFddo3oW4vRYav0Rg4pLg/semMZLaN8PJ6h927ucn9JyWdH82QfZfyiIPORt0ZF3isyw==} engines: {node: '>=18'} '@polkadot/rpc-augment@14.3.1': resolution: {integrity: sha512-Z8Hp8fFHwFCiTX0bBCDqCZ4U26wLIJl1NRSjJTsAr+SS68pYZBDGCwhKztpKGqndk1W1akRUaxrkGqYdIFmspQ==} engines: {node: '>=18'} - '@polkadot/rpc-augment@16.5.4': - resolution: {integrity: sha512-j9v3Ttqv/EYGezHtVksGJAFZhE/4F7LUWooOazh/53ATowMby3lZUdwInrK6bpYmG2whmYMw/Fo283fwDroBtQ==} + '@polkadot/rpc-augment@16.5.6': + resolution: {integrity: sha512-vlrNvl2VtU09jZV/AvH7jBb/cNUO+dWu8Xj9pId5ctSUnZHm8o8wRk9ekyieKP57OUoKMd8+VScwMKd624SxTw==} engines: {node: '>=18'} '@polkadot/rpc-core@14.3.1': resolution: {integrity: sha512-FV2NPhFwFxmX8LqibDcGc6IKTBqmvwr7xwF2OA60Br4cX+AQzMSVpFlfQcETll+0M+LnRhqGKGkP0EQWXaSowA==} engines: {node: '>=18'} - '@polkadot/rpc-core@16.5.4': - resolution: {integrity: sha512-92LOSTWujPjtmKOPvfCPs8rAaPFU+18wTtkIzwPwKxvxkN/SWsYSGIxmsoags9ramyHB6jp7Lr59TEuGMxIZzQ==} + '@polkadot/rpc-core@16.5.6': + resolution: {integrity: sha512-l6od++WlvKH4mw5mtsIh2AhiBs3H+TtdOoUHVLCx/R9il7+gl+arltzZ8vBuffyh/O+uQ36lI8yUoD1g4gi1tA==} engines: {node: '>=18'} '@polkadot/rpc-provider@14.3.1': resolution: {integrity: sha512-NF/Z/7lzT+jp5LZzC49g+YIjRzXVI0hFag3+B+4zh6E/kKADdF59EHj2Im4LDhRGOnEO9AE4H6/UjNEbZ94JtA==} engines: {node: '>=18'} - '@polkadot/rpc-provider@16.5.4': - resolution: {integrity: sha512-mNAIBRA3jMvpnHsuqAX4InHSIqBdgxFD6ayVUFFAzOX8Fh6Xpd4RdI1dqr6a1pCzjnPSby4nbg+VuadWwauVtg==} + '@polkadot/rpc-provider@16.5.6': + resolution: {integrity: sha512-46sHIjKYr4aSzBCfbyqtCwuP8MMJ3jOp0xx9eggOGbKyP8Z0j0Cp+1nNkZUYzehcdGjjrmCxCbQp17wc6cj4zA==} engines: {node: '>=18'} '@polkadot/types-augment@14.3.1': resolution: {integrity: sha512-SC4M6TBlgCglNz+gRbvfoVRDz0Vyeev6v0HeAdw0H6ayEW4BXUdo5bFr0092bdS5uTrEPgiSyUry5TJs2KoXig==} engines: {node: '>=18'} - '@polkadot/types-augment@16.5.4': - resolution: {integrity: sha512-AGjXR+Q9O9UtVkGw/HuOXlbRqVpvG6H8nr+taXP71wuC6RD9gznFBFBqoNkfWHD2w89esNVQLTvXHVxlLpTXqA==} + '@polkadot/types-augment@16.5.6': + resolution: {integrity: sha512-QN5UrluUZCVgknUDW0gps/FRQ13Qgm24w53pCd2HgD0nmTtXDt9D4psjWwx5JkGTkUAvpzFWwN41bkxAeCiV6g==} engines: {node: '>=18'} '@polkadot/types-codec@14.3.1': resolution: {integrity: sha512-3y3RBGd+8ebscGbNUOjqUjnRE7hgicgid5LtofHK3O1EDcJQJnYBDkJ7fOAi96CDgHsg+f2FWWkBWEPgpOQoMQ==} engines: {node: '>=18'} - '@polkadot/types-codec@16.5.4': - resolution: {integrity: sha512-OQtT1pmJu2F3/+Vh1OiXifKoeRy+CU1+Lu7dgTcdO705dnxU4447Zup5JVCJDnxBmMITts/38vbFN2pD225AnA==} + '@polkadot/types-codec@16.5.6': + resolution: {integrity: sha512-3tzUv1LZOL97IlQmko4dqbfRC0cg9IQ2QAHRVoDIWsXrVovp1V3kPdP0o6e3I8T2XB9IlbabK91v+ZiIxhGMZw==} engines: {node: '>=18'} '@polkadot/types-create@14.3.1': resolution: {integrity: sha512-F4EBvF3Zvym0xrkAA5Yz01IAVMepMV3w2Dwd0C9IygEAQ5sYLLPHmf72/aXn+Ag+bSyT2wlJHpDc+nEBXNQ3Gw==} engines: {node: '>=18'} - '@polkadot/types-create@16.5.4': - resolution: {integrity: sha512-URQnvr/sgvgIRSxIW3lmml6HMSTRRj2hTZIm6nhMTlYSVT4rLWx0ZbYUAjoPBbaJ+BmoqZ6Bbs+tA+5cQViv5Q==} + '@polkadot/types-create@16.5.6': + resolution: {integrity: sha512-g7g3hrjpz4KgqQqei9PU0JY9fsFHBmThWALZk5pWB32vyDyDcXZiyhH3agDhqfmzQiolTW2FuvcNJxgS634J1w==} engines: {node: '>=18'} '@polkadot/types-known@14.3.1': resolution: {integrity: sha512-58b3Yc7+sxwNjs8axmrA9OCgnxmEKIq7XCH2VxSgLqTeqbohVtxwUSCW/l8NPrq1nxzj4J2sopu0PPg8/++q4g==} engines: {node: '>=18'} - '@polkadot/types-known@16.5.4': - resolution: {integrity: sha512-Dd59y4e3AFCrH9xiqMU4xlG5+Zy0OTy7GQvqJVYXZFyAH+4HYDlxXjJGcSidGAmJcclSYfS3wyEkfw+j1EOVEw==} + '@polkadot/types-known@16.5.6': + resolution: {integrity: sha512-c78NcVO3LIvi4xzxB39WewE+80I4jOYUtPBaB4AzSMespEwIr92VTeX3KzFWuutxDXLSPqeVfXhaAhBB0NssiQ==} engines: {node: '>=18'} '@polkadot/types-support@14.3.1': resolution: {integrity: sha512-MfVe4iIOJIfBr+gj8Lu8gwIvhnO6gDbG5LeaKAjY6vS6Oh0y5Ztr8NdMIl8ccSpoyt3LqIXjfApeGzHiLzr6bw==} engines: {node: '>=18'} - '@polkadot/types-support@16.5.4': - resolution: {integrity: sha512-Ra6keCaO73ibxN6MzA56jFq9EReje7jjE4JQfzV5IpyDZdXcmPyJiEfa2Yps/YSP13Gc2e38t9FFyVau0V+SFQ==} + '@polkadot/types-support@16.5.6': + resolution: {integrity: sha512-Hqpa/hCvXZXUTUiJMAE55UXpzAeCVLaFlzzXQXLkne0vhmv3/JkWcBnX755a/b9+C4b3MKEz2i0tSKLsa3DldA==} engines: {node: '>=18'} '@polkadot/types@14.3.1': resolution: {integrity: sha512-O748XgCLDQYxS5nQ6TJSqW88oC4QNIoNVlWZC2Qq4SmEXuSzaNHQwSVtdyPRJCCc4Oi1DCQvGui4O+EukUl7HA==} engines: {node: '>=18'} - '@polkadot/types@16.5.4': - resolution: {integrity: sha512-8Oo1QWaL0DkIc/n2wKBIozPWug/0b2dPVhL+XrXHxJX7rIqS0x8sXDRbM9r166sI0nTqJiUho7pRIkt2PR/DMQ==} + '@polkadot/types@16.5.6': + resolution: {integrity: sha512-X/sfMHJS4RkRhnsc4CQqzUy7BM/s2y71TrBFHPYAjs2q/rbZ/BwvBk70SrUiSa0+iRRn3RewbBZm+AB8CbkdKw==} engines: {node: '>=18'} '@polkadot/util-crypto@13.5.9': @@ -1461,18 +1660,18 @@ packages: peerDependencies: '@polkadot/util': 13.5.9 - '@polkadot/util-crypto@14.0.1': - resolution: {integrity: sha512-Cu7AKUzBTsUkbOtyuNzXcTpDjR9QW0fVR56o3gBmzfUCmvO1vlsuGzmmPzqpHymQQ3rrfqV78CPs62EGhw0R+A==} + '@polkadot/util-crypto@14.0.3': + resolution: {integrity: sha512-V00BI6XnZLCkrAmV8uN0eSB6fy48CkxdDZT29cgSMSwHPtY6oKUNgd1ST07PGCL5x8XflwjoA7CTlhdbp1Y9gw==} engines: {node: '>=18'} peerDependencies: - '@polkadot/util': 14.0.1 + '@polkadot/util': 14.0.3 '@polkadot/util@13.5.9': resolution: {integrity: sha512-pIK3XYXo7DKeFRkEBNYhf3GbCHg6dKQisSvdzZwuyzA6m7YxQq4DFw4IE464ve4Z7WsJFt3a6C9uII36hl9EWw==} engines: {node: '>=18'} - '@polkadot/util@14.0.1': - resolution: {integrity: sha512-764HhxkPV3x5rM0/p6QdynC2dw26n+SaE+jisjx556ViCd4E28Ke4xSPef6C0Spy4aoXf2gt0PuLEcBvd6fVZg==} + '@polkadot/util@14.0.3': + resolution: {integrity: sha512-mg1NR7ixHlNiz2zbvdcdy1OXZmca2tVA4DpewGpY/qFkW/gq9HdDrHLu7g0k90QnunDcFW4emb7NB60sGJQ0bw==} engines: {node: '>=18'} '@polkadot/wasm-bridge@7.5.4': @@ -1518,24 +1717,24 @@ packages: resolution: {integrity: sha512-JVW6vw3e8fkcRyN9eoc6JIl63MRxNQCP/tuLdHWZts1tcAYao0hpWUzteqJY93AgvmQ91KPsC1Kf3iuuZCi74g==} engines: {node: '>=18'} - '@polkadot/x-bigint@14.0.1': - resolution: {integrity: sha512-gfozjGnebr2rqURs31KtaWumbW4rRZpbiluhlmai6luCNrf5u8pB+oLA35kPEntrsLk9PnIG9OsC/n4hEtx4OQ==} + '@polkadot/x-bigint@14.0.3': + resolution: {integrity: sha512-U0al6BKgldFrEbmSObRAlzv9VDs5SMa/rbvZKvvkVec0sWTzYPWQZU1ZC/biXLYdjdKML89BeuCKmXZtCcGhUQ==} engines: {node: '>=18'} '@polkadot/x-fetch@13.5.9': resolution: {integrity: sha512-urwXQZtT4yYROiRdJS6zHu18J/jCoAGpbgPIAjwdqjT11t9XIq4SjuPMxD19xBRhbYe9ocWV8i1KHuoMbZgKbA==} engines: {node: '>=18'} - '@polkadot/x-fetch@14.0.1': - resolution: {integrity: sha512-yFsnO0xfkp3bIcvH70ZvmeUINYH1YnjOIS1B430f3w6axkqKhAOWCgzzKGMSRgn4dtm3YgwMBKPQ4nyfIsGOJQ==} + '@polkadot/x-fetch@14.0.3': + resolution: {integrity: sha512-695c5aPBPtYcnn2zM+u0mXgyNHINlO0qGlGcJq3/0t5NVRZv5KZhk7NNm6antOay9uUjGG40F/r+LPzDT3QamA==} engines: {node: '>=18'} '@polkadot/x-global@13.5.9': resolution: {integrity: sha512-zSRWvELHd3Q+bFkkI1h2cWIqLo1ETm+MxkNXLec3lB56iyq/MjWBxfXnAFFYFayvlEVneo7CLHcp+YTFd9aVSA==} engines: {node: '>=18'} - '@polkadot/x-global@14.0.1': - resolution: {integrity: sha512-aCI44DJU4fU0XXqrrSGIpi7JrZXK2kpe0jaQ2p6oDVXOOYEnZYXnMhTTmBE1lF/xtxzX50MnZrrU87jziU0qbA==} + '@polkadot/x-global@14.0.3': + resolution: {integrity: sha512-MzMEynJ7HMTy/plLmdyP8rv14RS/6s29HZodUG9aCOscBnEiEDxVEax/ztRJqxhhQuHeYdx0LYDwVbdQDTkqNw==} engines: {node: '>=18'} '@polkadot/x-randomvalues@13.5.9': @@ -1545,35 +1744,35 @@ packages: '@polkadot/util': 13.5.9 '@polkadot/wasm-util': '*' - '@polkadot/x-randomvalues@14.0.1': - resolution: {integrity: sha512-/XkQcvshzJLHITuPrN3zmQKuFIPdKWoaiHhhVLD6rQWV60lTXA3ajw3ocju8ZN7xRxnweMS9Ce0kMPYa0NhRMg==} + '@polkadot/x-randomvalues@14.0.3': + resolution: {integrity: sha512-qTPcrk0nIHL2tIu5e0cLj3puQvjCK7onehnqO2fvlmWeIlvDel66fwWs06Ipsib+CwLJdmE6WgNy+8Jv74r6YA==} engines: {node: '>=18'} peerDependencies: - '@polkadot/util': 14.0.1 + '@polkadot/util': 14.0.3 '@polkadot/wasm-util': '*' '@polkadot/x-textdecoder@13.5.9': resolution: {integrity: sha512-W2HhVNUbC/tuFdzNMbnXAWsIHSg9SC9QWDNmFD3nXdSzlXNgL8NmuiwN2fkYvCQBtp/XSoy0gDLx0C+Fo19cfw==} engines: {node: '>=18'} - '@polkadot/x-textdecoder@14.0.1': - resolution: {integrity: sha512-CcWiPCuPVJsNk4Vq43lgFHqLRBQHb4r9RD7ZIYgmwoebES8TNm4g2ew9ToCzakFKSpzKu6I07Ne9wv/dt5zLuw==} + '@polkadot/x-textdecoder@14.0.3': + resolution: {integrity: sha512-4RJYDG00iUzQ7YAuS/yvkWRZlkjYU8PUNdJHRfqtJ+SjrSPB7LYYxFhLgw43TZUtHmIueNTsml2Ukv3xXTr2kA==} engines: {node: '>=18'} '@polkadot/x-textencoder@13.5.9': resolution: {integrity: sha512-SG0MHnLUgn1ZxFdm0KzMdTHJ47SfqFhdIPMcGA0Mg/jt2rwrfrP3jtEIJMsHfQpHvfsNPfv55XOMmoPWuQnP/Q==} engines: {node: '>=18'} - '@polkadot/x-textencoder@14.0.1': - resolution: {integrity: sha512-VY51SpQmF1ccmAGLfxhYnAe95Spfz049WZ/+kK4NfsGF9WejxVdU53Im5C80l45r8qHuYQsCWU3+t0FNunh2Kg==} + '@polkadot/x-textencoder@14.0.3': + resolution: {integrity: sha512-9HH6o2L+r99wEfXhPb5g+Xwn7qouqD32PsMux7B0dFGR2KNqP4KwO19Hu+gdij6wsEhy7delhZwzHenrWwDfhQ==} engines: {node: '>=18'} '@polkadot/x-ws@13.5.9': resolution: {integrity: sha512-NKVgvACTIvKT8CjaQu9d0dERkZsWIZngX/4NVSjc01WHmln4F4y/zyBdYn/Z2V0Zw28cISx+lB4qxRmqTe7gbg==} engines: {node: '>=18'} - '@polkadot/x-ws@14.0.1': - resolution: {integrity: sha512-Q18hoSuOl7F4aENNGNt9XYxkrjwZlC6xye9OQrPDeHam1SrvflGv9mSZHyo+mwJs0z1PCz2STpPEN9PKfZvHng==} + '@polkadot/x-ws@14.0.3': + resolution: {integrity: sha512-tOPdkMye3iuXnuFtdNg5+iSu7Cz9LRL8z5psMuZpUpThMYChGsS2pDFtNvXOKU8ohhO+frY9VdJ9VBg1WL9Iug==} engines: {node: '>=18'} '@protobufjs/aspromise@1.1.2': @@ -1582,20 +1781,20 @@ packages: '@protobufjs/base64@1.1.2': resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - '@protobufjs/codegen@2.0.4': - resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + '@protobufjs/codegen@2.0.5': + resolution: {integrity: sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==} - '@protobufjs/eventemitter@1.1.0': - resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + '@protobufjs/eventemitter@1.1.1': + resolution: {integrity: sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==} - '@protobufjs/fetch@1.1.0': - resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + '@protobufjs/fetch@1.1.1': + resolution: {integrity: sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==} '@protobufjs/float@1.0.2': resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - '@protobufjs/inquire@1.1.0': - resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + '@protobufjs/inquire@1.1.2': + resolution: {integrity: sha512-pa0vFRuws4wkvaXKK1uXZMAwAX4/t8ANaJo45iw/oQHNQ9q5xUzwgFmVJGXiga2BeN+zpX7Vf9vmsiIa2J+MUw==} '@protobufjs/path@1.1.2': resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} @@ -1603,144 +1802,144 @@ packages: '@protobufjs/pool@1.1.0': resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - '@protobufjs/utf8@1.1.0': - resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + '@protobufjs/utf8@1.1.1': + resolution: {integrity: sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==} - '@rollup/rollup-android-arm-eabi@4.59.0': - resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==} + '@rollup/rollup-android-arm-eabi@4.61.1': + resolution: {integrity: sha512-JnBB8MdXj45cajvTuO5FmPlvFVJRQgvrz1uSEl3NwqFnReAPGwb8EanbGi4z2nRaqLzjJSv5/JmycoTKlRZxHA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.59.0': - resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==} + '@rollup/rollup-android-arm64@4.61.1': + resolution: {integrity: sha512-Jx2g7iSjw4AOT0HDPHM9RV3GNjRXwybWtSFZiZAYUTjUwjVrYIwq3kBf+LnhqJlzXFAqTAh2F7IGI+O568exPw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.59.0': - resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==} + '@rollup/rollup-darwin-arm64@4.61.1': + resolution: {integrity: sha512-0F1L/Z3Eqv8mT2n3dCpeO8GcTvHvVqkP5/t6DMsn0KzhYVcg+s7Ncl5DS8qjKYEeio6Az0Gt6nyBORay5qIlCA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.59.0': - resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==} + '@rollup/rollup-darwin-x64@4.61.1': + resolution: {integrity: sha512-qLttcH871ujY4YcVfUSShhOw+CsoTatYz8gRbHO7Bb92QH059/P0y5do1KMs41fY0BpD2x4AJH/gID0zFiqVKQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.59.0': - resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==} + '@rollup/rollup-freebsd-arm64@4.61.1': + resolution: {integrity: sha512-fUI4RapGE0Oh3mb8mgfvC1O2nU1RpDZUKnDQm3xB1Ipg7C2wTs5Kstz7G2uWK99a8S2yTMq8/P4uycwNa0nJyw==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.59.0': - resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==} + '@rollup/rollup-freebsd-x64@4.61.1': + resolution: {integrity: sha512-H5YrdvJaDtI/U9/emrD4b++xkvp3y/JvOe4rizHbxvkyMfRS/CiRYdji+Pl8D0brEaNFWUh1drQxgAGIl6Xudw==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.59.0': - resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} + '@rollup/rollup-linux-arm-gnueabihf@4.61.1': + resolution: {integrity: sha512-Q8CBCCQtDFrYtXoeUXSrnFXKOnyUhx6bz+SkL6A0E7V8kAiCJ5pamq1WtbfpVGhR5TSpXY6ak3avmDc5fHTyJA==} cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.59.0': - resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} + '@rollup/rollup-linux-arm-musleabihf@4.61.1': + resolution: {integrity: sha512-nwnhk1581l0FBVellGcVCAT0Oi06onEA3WB53sf01VO3I0UPBkMH9sXONYME2K0ovXcNayJfNtHfm6mpJElatQ==} cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.59.0': - resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} + '@rollup/rollup-linux-arm64-gnu@4.61.1': + resolution: {integrity: sha512-x5Xr49hwt3hdW75UOZm3395YwwzPyauktslv29KpWL/T+vVAzoT3azLcTWv0eMciBNrx+DYjH4paehHoLpPvpg==} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.59.0': - resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} + '@rollup/rollup-linux-arm64-musl@4.61.1': + resolution: {integrity: sha512-unMS3H73DpaoPyyEVPjGKleM/s0mkmsauTENpw4INQY8y4+IuLNjkueQ5QCtC0D3N38Y38yhAU8OoZ20S2Tm6w==} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.59.0': - resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} + '@rollup/rollup-linux-loong64-gnu@4.61.1': + resolution: {integrity: sha512-zNZzGRnAhwjFEYmvphJRV5XaQGjs62cCmeYYHUT//NbvEnHauw+I85nGG+SiVg5ld4GX8D1IbKIX+ozITQnhMQ==} cpu: [loong64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-loong64-musl@4.59.0': - resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} + '@rollup/rollup-linux-loong64-musl@4.61.1': + resolution: {integrity: sha512-LdpWGL8X209B2SIvWjqlc8VZgM6PKfontSerGepuldQmHYrAOtnMCXeJkxXGbC+PPZVOuu5czJo7fNV6aeW8rQ==} cpu: [loong64] os: [linux] libc: [musl] - '@rollup/rollup-linux-ppc64-gnu@4.59.0': - resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} + '@rollup/rollup-linux-ppc64-gnu@4.61.1': + resolution: {integrity: sha512-EC5kTtNaNGOmbMGqar8dvJy6y/hg99GAwjfBz++pxZhQATXGcRjd6c5en5wcbru0vkRmiMGsQKdMJOOf6sza4g==} cpu: [ppc64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-musl@4.59.0': - resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} + '@rollup/rollup-linux-ppc64-musl@4.61.1': + resolution: {integrity: sha512-8hiwp6D4acEcNK78I4rP0/XtS1sknWIAMJBPdR4l6zUtyTm5KiTDr5bXmWt4foY7nAN7AThDHgkLIEZOWKbzWw==} cpu: [ppc64] os: [linux] libc: [musl] - '@rollup/rollup-linux-riscv64-gnu@4.59.0': - resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} + '@rollup/rollup-linux-riscv64-gnu@4.61.1': + resolution: {integrity: sha512-10dh/h/BqA7DuMPWSxkR8uks18FRwnwOEqr5zOTEl+NOwP/OMzKX8OFR/Of9xxDA7D5qef1Nzar5WDD2kCCr1g==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.59.0': - resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} + '@rollup/rollup-linux-riscv64-musl@4.61.1': + resolution: {integrity: sha512-YKJ5lg35DP17gcAOggnihe+APw9HLyj1Xn7gsmGumBJAUDa6NGXNixJzmkWLhcK9TOuuyQjdamzvJefkO7qHZQ==} cpu: [riscv64] os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.59.0': - resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} + '@rollup/rollup-linux-s390x-gnu@4.61.1': + resolution: {integrity: sha512-Mlil5G2Jj6a7B3LWGctg+XPL9vdXYuzCtNXfxOQ0nPjc2m6ueUktocPGH9bnAM0bNRKb/bAWTujUU7IJQdQA+g==} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.59.0': - resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} + '@rollup/rollup-linux-x64-gnu@4.61.1': + resolution: {integrity: sha512-bVWIOIk6pV01p4CdUbPP7CJ/434z+OooYjDuFcR+44N35YvKUC66G8MGnvcWx5mWKW3g61J+t74l3Kj15Kwn2Q==} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.59.0': - resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} + '@rollup/rollup-linux-x64-musl@4.61.1': + resolution: {integrity: sha512-qy5pBvZbqNFheBz61R1rzsezjm0J7O2oNGoWtGoY89SZYLUfxAJTBAqDChqAIdB4rCiIbi9nF7yZ83GnNiLwSw==} cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-openbsd-x64@4.59.0': - resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} + '@rollup/rollup-openbsd-x64@4.61.1': + resolution: {integrity: sha512-E83TXjI4zm0+5f2qO+UOudaCYIhYwpJ5jq6YCZNIZ+6CbfhKrkAGezeiASBL9ElxAxFsRS9ZhESv8mfnj6TKeg==} cpu: [x64] os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.59.0': - resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==} + '@rollup/rollup-openharmony-arm64@4.61.1': + resolution: {integrity: sha512-fbWnKqVkjrJN38vNe3ahkbk6iejS/3b0Nt7EEtPpE6RBacZcGXNKbzfHN3GUUlXOPghUg0j6XUGrtjX9z1sIvA==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.59.0': - resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==} + '@rollup/rollup-win32-arm64-msvc@4.61.1': + resolution: {integrity: sha512-ArMl38iVAbk0New1ogihQNY6iphLi4ZaRsa037gUzv5yeKPY8TD3Dmy4x2RNC1VztU/uqm+G+/RwFrSka3Oy2g==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.59.0': - resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==} + '@rollup/rollup-win32-ia32-msvc@4.61.1': + resolution: {integrity: sha512-0mYtjHS9ucAbcATycCNK9IGBk/cCe/ma7EmSLGZdsxnOA8cjRIyU04wDpVAD9NiOfLUR9KTxdiO53uOkherqjQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.59.0': - resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==} + '@rollup/rollup-win32-x64-gnu@4.61.1': + resolution: {integrity: sha512-gK1iCEPfpoSG9wfBihXxvBMi8ZfcWffYkEsC/Eih+iFENTaewvNcrEQ69lIOWYO5pePHKLHHO7nq5AILGO/HQQ==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.59.0': - resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==} + '@rollup/rollup-win32-x64-msvc@4.61.1': + resolution: {integrity: sha512-X+zaP2x+j4RXGfbp/seSoRHWnPxzApilDszisZxbYH5C/jTxFhCtDNdPGZb9lJyYPs24wGxruPF7Y+sIXt9Gzw==} cpu: [x64] os: [win32] @@ -1755,8 +1954,8 @@ packages: '@scure/base@1.2.6': resolution: {integrity: sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==} - '@scure/base@2.0.0': - resolution: {integrity: sha512-3E1kpuZginKkek01ovG8krQ0Z44E3DHPjc5S2rjJw9lZn3KSQOs8S7wqikF/AH7iRanHypj85uGyxk0XAyC37w==} + '@scure/base@2.2.0': + resolution: {integrity: sha512-b8XEupJibegiXV+tDUseI8oLQc8ei3d/4Jkb2RpbHh3MfE054ov3uIz2dhFkB3FI8iwYkEh0gGCApkrYggkPNg==} '@scure/bip32@1.4.0': resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} @@ -1838,8 +2037,8 @@ packages: '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - '@types/estree@1.0.8': - resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} '@types/json-bigint@1.0.4': resolution: {integrity: sha512-ydHooXLbOmxBbubnA7Eh+RpBzuaIiQjh8WGJYQB50JFGFrdxW7JzVlyEV7fAXw0T2sqJ1ysTneJbiyNLqZRAag==} @@ -1853,11 +2052,11 @@ packages: '@types/node@22.7.5': resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} - '@types/node@24.12.0': - resolution: {integrity: sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==} + '@types/node@24.13.1': + resolution: {integrity: sha512-RSpUJGmvsJ1ZeBehQZFhIdpsz+bIpES0nIQXko4Ybq+N+kX6XvOq3Jo+iJ82FWLdblFq85AsMikd3m35jgezYg==} - '@types/node@25.3.5': - resolution: {integrity: sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==} + '@types/node@25.9.2': + resolution: {integrity: sha512-G05zqtJhcDLb8uslf5EjCxXg9G1KQxiV8OS0R26IC//Eoyitzqe8z37I7cqvnZlrlSfgocQRfSn/AHBZJJFyGw==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -1903,6 +2102,9 @@ packages: '@vitest/pretty-format@3.2.4': resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} + '@vitest/pretty-format@3.2.6': + resolution: {integrity: sha512-lb7XXXzmm2h2ASzFnRvQpDo6onT1NmMJA3tkGTWiBFtRJ9lxGY3d3mm/Apt36gej2bkkOVLL/yTOtufDaFa/jA==} + '@vitest/runner@3.2.4': resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} @@ -1917,10 +2119,10 @@ packages: peerDependencies: vitest: 3.1.3 - '@vitest/ui@3.2.4': - resolution: {integrity: sha512-hGISOaP18plkzbWEcP/QvtRW1xDXF2+96HbEX6byqQhAUbiS5oH6/9JwW+QsQCIYON2bI6QZBF+2PvOmrRZ9wA==} + '@vitest/ui@3.2.6': + resolution: {integrity: sha512-mATfG3zVdhobE9U1rIpvtYD3DGuSSxqZ3Aj/8ityGqKXy8YDJ9BoAjZmAz6dZ1IZ1xI5V+MerkCczvVa+3QK9Q==} peerDependencies: - vitest: 3.2.4 + vitest: 3.2.6 '@vitest/utils@3.1.3': resolution: {integrity: sha512-2Ltrpht4OmHO9+c/nmHtF09HWiyWdworqnHIwjfvDyWjuwKbdkcS9AnhsDn+8E2RM4x++foD1/tNuLPVvWG1Rg==} @@ -1928,6 +2130,9 @@ packages: '@vitest/utils@3.2.4': resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} + '@vitest/utils@3.2.6': + resolution: {integrity: sha512-lI23nIs4bnT3T8NIoh+vFaz5s2/DdP0Jgt2jxwgWljvwn82cLJtyi/If+fjFyoLMGIOz0U/fKvWE0d4jsNQEfg==} + '@zombienet/orchestrator@0.0.105': resolution: {integrity: sha512-vw+Pt1N9oChdA+2WHgwygG4wpXaKnPJPIRbm3OWbhscCwHbWlmcVVZhZN3khC4+WMo+kvFt3XhzV6hZrZI5Bug==} engines: {node: '>=18'} @@ -1954,6 +2159,10 @@ packages: abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + abbrev@4.0.0: + resolution: {integrity: sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==} + engines: {node: ^20.17.0 || >=22.9.0} + abitype@0.7.1: resolution: {integrity: sha512-VBkRHTDZf9Myaek/dO3yMmOzB/y2s3Zo6nVU7yaw1G+TvCHAjwaJzNGN9yo4K5D8bU/VZXKP1EJpRhFr862PlQ==} peerDependencies: @@ -1974,6 +2183,17 @@ packages: zod: optional: true + abitype@1.2.4: + resolution: {integrity: sha512-dpKH+N27vRjarMVTFFkeY445VTKftzGWpL0FiT7xmVmzQRKazZexzC5uHG0f6XKsVLAuUlndnbGau6lRejClxg==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3.22.0 || ^4.0.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + acorn-walk@8.3.5: resolution: {integrity: sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==} engines: {node: '>=0.4.0'} @@ -2026,8 +2246,8 @@ packages: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} - ansis@4.2.0: - resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} + ansis@4.3.1: + resolution: {integrity: sha512-BJ8/l4R5LRE7hW9WdSuGYrLSHi2ynxeFpDFbH0K/CgNeY/tyhk+vO6TYxXC5r5CpUhNVX310xzPsN/H9lCdfOA==} engines: {node: '>=14'} any-promise@1.3.0: @@ -2086,8 +2306,8 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axios@1.13.6: - resolution: {integrity: sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==} + axios@1.17.0: + resolution: {integrity: sha512-J8SwNxprqqpbfenehxWYXE7CW+wM1BB4w3+N+g+/Wx40xM4rsLrfPmHHxSWIxJLYDgSY/HqlFPIYb2/S3rxafw==} balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -2127,11 +2347,11 @@ packages: bottleneck@2.19.5: resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} - brace-expansion@1.1.12: - resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + brace-expansion@1.1.15: + resolution: {integrity: sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==} - brace-expansion@2.0.2: - resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + brace-expansion@2.1.1: + resolution: {integrity: sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} @@ -2168,8 +2388,8 @@ packages: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} - call-bind@1.0.8: - resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + call-bind@1.0.9: + resolution: {integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==} engines: {node: '>= 0.4'} call-bound@1.0.4: @@ -2230,6 +2450,10 @@ packages: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + class-is@1.1.0: resolution: {integrity: sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==} @@ -2350,6 +2574,10 @@ packages: console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + content-type@2.0.0: + resolution: {integrity: sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==} + engines: {node: '>=18'} + convert-to-spaces@2.0.1: resolution: {integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2395,8 +2623,8 @@ packages: dateformat@4.6.3: resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} - dayjs@1.11.19: - resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} + dayjs@1.11.21: + resolution: {integrity: sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==} debug@4.3.7: resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} @@ -2492,8 +2720,8 @@ packages: resolution: {integrity: sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==} engines: {node: '>=0.3.1'} - docker-modem@5.0.6: - resolution: {integrity: sha512-ens7BiayssQz/uAxGzH8zGXCtiV24rRWXdjNha5V4zSOcxmAZsfGVm/PPFbwQdqEkDnhG+SyR9E3zSHUbOKXBQ==} + docker-modem@5.0.7: + resolution: {integrity: sha512-XJgGhoR/CLpqshm4d3L7rzH6t8NgDFUIIpztYlLHIApeJjMZKYJMz2zxPsYxnejq5h3ELYSw/RBsi3t5h7gNTA==} engines: {node: '>= 8.0'} dockerode@4.0.9: @@ -2515,8 +2743,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - effect@3.19.19: - resolution: {integrity: sha512-Yc8U/SVXo2dHnaP7zNBlAo83h/nzSJpi7vph6Hzyl4ulgMBIgPmz3UzOjb9sBgpFE00gC0iETR244sfXDNLHRg==} + effect@3.21.3: + resolution: {integrity: sha512-RqwU7WnJ6CqYhyjpOVJA5vh1Sgkn6eVECO6mnD0EjlbWcC2M3LJaPglXXr13Rdo/Y+B+wTEPzGRYFNL2xKxNeQ==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -2562,22 +2790,27 @@ packages: es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} - es-object-atoms@1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + es-object-atoms@1.1.2: + resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} engines: {node: '>= 0.4'} es-set-tostringtag@2.1.0: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} - es-toolkit@1.45.1: - resolution: {integrity: sha512-/jhoOj/Fx+A+IIyDNOvO3TItGmlMKhtX8ISAHKE90c4b/k1tqaqEZ+uUqfpU8DMnW5cgNJv606zS55jGvza0Xw==} + es-toolkit@1.47.0: + resolution: {integrity: sha512-n1GuoD0WEQZMBk5tttoZSqwgyLx01oqa5XsBmCHwPyNe1S9jPBEmtR2pSgp2kJuWE3ciFZ6yRHmY4pM4C3OOkw==} es6-error@4.1.1: resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} - esbuild@0.27.3: - resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} + esbuild@0.27.7: + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} + engines: {node: '>=18'} + hasBin: true + + esbuild@0.28.0: + resolution: {integrity: sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==} engines: {node: '>=18'} hasBin: true @@ -2633,15 +2866,15 @@ packages: resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} + exponential-backoff@3.1.3: + resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} + fast-check@3.23.2: resolution: {integrity: sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==} engines: {node: '>=8.0.0'} - fast-content-type-parse@3.0.0: - resolution: {integrity: sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==} - - fast-copy@4.0.2: - resolution: {integrity: sha512-ybA6PDXIXOXivLJK/z9e+Otk7ve13I4ckBvGO5I2RRmBU1gMHLVDJYEuJYhGwez7YNlYji2M2DvVU+a9mSFDlw==} + fast-copy@4.0.3: + resolution: {integrity: sha512-58apWr0GUiDFM8+3afrO6eYwJBn9ZAhDOzG3L+/9llab/haCARS2UIfffmOurYLwbgDRs8n0rfr6qAAPEAuAQw==} fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} @@ -2652,8 +2885,8 @@ packages: fast-string-width@3.0.2: resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==} - fast-wrap-ansi@0.2.0: - resolution: {integrity: sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==} + fast-wrap-ansi@0.2.2: + resolution: {integrity: sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==} fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} @@ -2668,8 +2901,8 @@ packages: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} - fflate@0.8.2: - resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + fflate@0.8.3: + resolution: {integrity: sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==} figures@6.1.0: resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} @@ -2696,11 +2929,11 @@ packages: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true - flatted@3.3.4: - resolution: {integrity: sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA==} + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} - follow-redirects@1.15.11: - resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + follow-redirects@1.16.0: + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -2727,8 +2960,8 @@ packages: fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - fs-extra@11.3.4: - resolution: {integrity: sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==} + fs-extra@11.3.5: + resolution: {integrity: sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==} engines: {node: '>=14.14'} fs-minipass@2.1.0: @@ -2762,8 +2995,8 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-east-asian-width@1.5.0: - resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} + get-east-asian-width@1.6.0: + resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} engines: {node: '>=18'} get-func-name@2.0.2: @@ -2785,9 +3018,6 @@ packages: resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} engines: {node: '>=18'} - get-tsconfig@4.13.6: - resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==} - github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} @@ -2845,8 +3075,8 @@ packages: has-unicode@2.0.1: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} engines: {node: '>= 0.4'} he@1.2.0: @@ -2950,13 +3180,13 @@ packages: react-devtools-core: optional: true - ip-address@10.1.0: - resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} + ip-address@10.2.0: + resolution: {integrity: sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==} engines: {node: '>= 12'} - is-accessor-descriptor@1.0.1: - resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} - engines: {node: '>= 0.10'} + is-accessor-descriptor@1.0.2: + resolution: {integrity: sha512-AIbwAcazqP3R65dGvqk1V+a+vE5Fg1yu/ZKMOiBWSUIXXiwQkYmXQcVa2O0nh0tSDKDFKxG2mY7dB1Sr4hEP1g==} + engines: {node: '>= 0.4'} is-arguments@1.2.0: resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} @@ -2977,8 +3207,8 @@ packages: resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} engines: {node: '>= 0.4'} - is-descriptor@1.0.3: - resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==} + is-descriptor@1.0.4: + resolution: {integrity: sha512-bv5z95W0dDtLfKwDfkTNxaRxmISBD3eQBKJeVxv2AQ7MjuUnDNG7cIQqvFtMOUYhsILWHhMayWdoGqNqYYYjww==} engines: {node: '>= 0.4'} is-extglob@2.1.1: @@ -3062,6 +3292,10 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isexe@4.0.0: + resolution: {integrity: sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==} + engines: {node: '>=20'} + iso-random-stream@2.0.2: resolution: {integrity: sha512-yJvs+Nnelic1L2vH2JzWvvPQFA4r7kSTnpST/+LkAQjSz0hos2oqLD+qIVi9Qk38Hoe7mNDt3j0S27R58MVjLQ==} engines: {node: '>=10'} @@ -3092,8 +3326,8 @@ packages: js-tokens@9.0.1: resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - js-yaml@4.1.1: - resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + js-yaml@4.2.0: + resolution: {integrity: sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==} hasBin: true jsdom@23.2.0: @@ -3111,8 +3345,8 @@ packages: json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - json-with-bigint@3.5.7: - resolution: {integrity: sha512-7ei3MdAI5+fJPVnKlW77TKNKwQ5ppSzWvhPuSuINT/GYW9ZOC1eRKOuhV9yHG5aEsUPj9BBx5JIekkmoLHxZOw==} + json-with-bigint@3.5.8: + resolution: {integrity: sha512-eq/4KP6K34kwa7TcFdtvnftvHCD9KvHOGGICWwMFc4dOOKF5t4iYqnfLK8otCRCRv06FXOzGGyqE8h8ElMvvdw==} jsonc-parser@3.3.1: resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} @@ -3121,15 +3355,14 @@ packages: resolution: {integrity: sha512-Quz3MvAwHxVYNXsOByL7xI5EB2WYOeFswqaHIA3qOK3isRWTxiplBEocmmru6XmxDB2L7jDNYtYA4FyimoAFEw==} engines: {node: '>=8.17.0'} hasBin: true - bundledDependencies: [] - jsondiffpatch@0.7.3: - resolution: {integrity: sha512-zd4dqFiXSYyant2WgSXAZ9+yYqilNVvragVNkNRn2IFZKgjyULNrKRznqN4Zon0MkLueCg+3QaPVCnDAVP20OQ==} + jsondiffpatch@0.7.6: + resolution: {integrity: sha512-zE9+AXFq+MkTolDor2Cw1nJzLC0aleqPkYf52Kb4Kn4mJcka/gFHpGI2JBVEJCfWOvBl0OoxZS+wuLdislQcqg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true - jsonfile@6.2.0: - resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + jsonfile@6.2.1: + resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} @@ -3164,8 +3397,8 @@ packages: lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - lodash@4.17.23: - resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} @@ -3190,8 +3423,8 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.2.6: - resolution: {integrity: sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==} + lru-cache@11.5.1: + resolution: {integrity: sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==} engines: {node: 20 || >=22} lru-cache@6.0.0: @@ -3277,8 +3510,8 @@ packages: resolution: {integrity: sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==} engines: {node: '>=8'} - minipass-flush@1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + minipass-flush@1.0.7: + resolution: {integrity: sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA==} engines: {node: '>= 8'} minipass-pipeline@1.2.4: @@ -3305,6 +3538,10 @@ packages: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} + engines: {node: '>= 18'} + mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} @@ -3317,8 +3554,8 @@ packages: resolution: {integrity: sha512-I2bcB5d6jtkdan6MLGOxObpUbidqv0ej+PhbCGnXUqmcGYZ6X8F0qBpU6HE4mvYc81NSznBrVDp+Uc808Ba2RA==} engines: {node: '>=16.0.0'} - mlly@1.8.1: - resolution: {integrity: sha512-SnL6sNutTwRWWR/vcmCYHSADjiEesp5TGQQ0pXyLhW5IoeibRlF/CbSLailbB3CNqJUk9cVJ9dUDnbD7GrcHBQ==} + mlly@1.8.2: + resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} mocha@10.8.2: resolution: {integrity: sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==} @@ -3336,12 +3573,12 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - msgpackr-extract@3.0.3: - resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} + msgpackr-extract@3.0.4: + resolution: {integrity: sha512-4kmO/MdyUIkLIvTPr8VHLil4AtoKIoniWPIEk5+CDy0xnWC84azhSFmuJ7PxZdsYtiP5kEeQsORAVIeMgxT+Hw==} hasBin: true - msgpackr@1.11.8: - resolution: {integrity: sha512-bC4UGzHhVvgDNS7kn9tV8fAucIYUBuGojcaLiz7v+P63Lmtm0Xeji8B/8tYKddALXxJLpwIeBmUN3u64C4YkRA==} + msgpackr@1.11.14: + resolution: {integrity: sha512-suPZQcjFtPGp0cksn70ICfLuxsO9F2/sRrbJzeNepojZ+OPwGzA0lNdLyU4SJUKAd5ZgvUWWPojzzdlVuOYcrQ==} multiformats@9.9.0: resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} @@ -3360,11 +3597,11 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nan@2.25.0: - resolution: {integrity: sha512-0M90Ag7Xn5KMLLZ7zliPWP3rT90P6PN+IzVFS0VqmnPktBk3700xUVv8Ikm9EUaUE5SDWdp/BIxdENzVznpm1g==} + nan@2.27.0: + resolution: {integrity: sha512-hC+0LidcL3XE4rp1C4H54KujgXKzbfyTngZTwBByQxsOxCEKZT0MPQ4hOKUH2jU1OYstqdDH4onyHPDzcV0XdQ==} - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + nanoid@3.3.12: + resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -3408,13 +3645,17 @@ packages: resolution: {integrity: sha512-o2zOYiCpzRqSzPj0Zt/dQ/DqZeYoaQ7TUonc/xUPjCGl9WeHpNbxgVvOquXYAaJzI0M9BXV3HTzG0p8IUAbBTQ==} engines: {node: '>= 10.13'} - node-abi@3.87.0: - resolution: {integrity: sha512-+CGM1L1CgmtheLcBuleyYOn7NWPVu0s0EJH2C4puxgEZb9h8QpR9G2dBfZJOAUhi7VQxuBPMd0hiISWcTyiYyQ==} + node-abi@3.92.0: + resolution: {integrity: sha512-KdHvFWZjEKDf0cakgFjebl371GPsISX2oZHcuyKqM7DtogIsHrqKeLTo8wBHxaXRAQlY2PsPlZmfo+9ZCxEREQ==} engines: {node: '>=10'} node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + node-addon-api@8.8.0: + resolution: {integrity: sha512-c5Ko1fZJIJmzhFIkhRN76WTq+fC6tWnGy9CXA0fA+XygsWZmEwG8vmbkNqxMyoaa0Tin4djul49NzdVcJJcjeA==} + engines: {node: ^18 || ^20 || >= 21} + node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} @@ -3433,14 +3674,19 @@ packages: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - node-forge@1.3.3: - resolution: {integrity: sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==} + node-forge@1.4.0: + resolution: {integrity: sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==} engines: {node: '>= 6.13.0'} node-gyp-build-optional-packages@5.2.2: resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} hasBin: true + node-gyp@12.4.0: + resolution: {integrity: sha512-OMcPNvqTCFUnNaBlmdgq+lfNqY7gTiSmNRDjY3uAXRyudeKZEZxu3CLtjMQrx4zZxCX2b/mpNqTtwuCJgXhHkw==} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + node-gyp@8.4.1: resolution: {integrity: sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==} engines: {node: '>= 10.12.0'} @@ -3451,6 +3697,11 @@ packages: engines: {node: '>=6'} hasBin: true + nopt@9.0.0: + resolution: {integrity: sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + normalize-package-data@6.0.2: resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} engines: {node: ^16.14.0 || >=18.0.0} @@ -3505,8 +3756,8 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} - ora@9.3.0: - resolution: {integrity: sha512-lBX72MWFduWEf7v7uWf5DHp9Jn5BI8bNPGuFgtXMmr2uDz2Gz2749y3am3agSDdkhHPHYmmxEGSKH85ZLGzgXw==} + ora@9.4.0: + resolution: {integrity: sha512-84cglkRILFxdtA8hAvLNdMrtBpPNBTrQ9/ulg0FA7xLMnD6mifv+enAIeRmvtv+WgdCE+LPGOfQmtJRrVaIVhQ==} engines: {node: '>=20'} os-tmpdir@1.0.2: @@ -3588,12 +3839,12 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} pino-abstract-transport@2.0.0: @@ -3657,8 +3908,8 @@ packages: yaml: optional: true - postcss@8.5.8: - resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} + postcss@8.5.15: + resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} engines: {node: ^10 || ^12 || >=14} prebuild-install@7.1.3: @@ -3671,6 +3922,10 @@ packages: resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} engines: {node: '>=18'} + proc-log@6.1.0: + resolution: {integrity: sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==} + engines: {node: ^20.17.0 || >=22.9.0} + process-warning@5.0.0: resolution: {integrity: sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==} @@ -3693,16 +3948,17 @@ packages: proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} - protobufjs@6.11.4: - resolution: {integrity: sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==} + protobufjs@6.11.6: + resolution: {integrity: sha512-k8BHqgPBOtrlougZZqF2uUk5Z7bN8f0wj+3e8M3hvtSv0NBAz4VBy5f6R5Nxq/l+i7mRFTgNZb2trxqTpHNY/A==} hasBin: true - protobufjs@7.5.4: - resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==} + protobufjs@7.6.2: + resolution: {integrity: sha512-N9EiLovGEQOJSPF26Ij7qUGvahfEnq0eeYZ02aigIedkmz1qZSwjnP9SBITHJuF/6MYbIW4HDN8zdYjsjqJKXQ==} engines: {node: '>=12.0.0'} - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + proxy-from-env@2.1.0: + resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} + engines: {node: '>=10'} ps-node@0.1.6: resolution: {integrity: sha512-w7QJhUTbu70hpDso0YXDRNKCPNuchV8UTUZsAv0m7Qj5g85oHOJfr9drA1EjvK4nQK/bG8P97W4L6PJ3IQLoOA==} @@ -3739,8 +3995,8 @@ packages: peerDependencies: react: ^19.2.0 - react@19.2.4: - resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} + react@19.2.7: + resolution: {integrity: sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==} engines: {node: '>=0.10.0'} read-pkg@9.0.1: @@ -3763,6 +4019,9 @@ packages: resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} engines: {node: '>= 12.13.0'} + real-require@1.0.0: + resolution: {integrity: sha512-P4nbQYQfePJxRSmY+v/KINxVucm4NF3p3s7pJveMTtom52FR4YGltUQLB8idDXwDDWW+eYrWDFbuzUnjoWHF7g==} + reflect-metadata@0.2.2: resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} @@ -3781,9 +4040,6 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - restore-cursor@4.0.0: resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3809,8 +4065,8 @@ packages: resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} engines: {node: '>=8.0'} - rollup@4.59.0: - resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} + rollup@4.61.1: + resolution: {integrity: sha512-I4KW6iuRpuu2uHBLraZ1wNZe0DP7lnRha+VJ9tNaYVaVgKhW0aI3h4RYnoRPeql0flHm/Co55b7snEDcOfOJrA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -3857,8 +4113,8 @@ packages: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true - semver@7.7.4: - resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + semver@7.8.2: + resolution: {integrity: sha512-c8jsqUZm3omBOI66G90z1Dyw5z622G8oLG+omfsHBJf3CWQTlOcwOjvOG6wtiNfW6anKm/eA39LMwMtMez2TiQ==} engines: {node: '>=10'} hasBin: true @@ -3930,8 +4186,8 @@ packages: resolution: {integrity: sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==} engines: {node: '>= 10'} - socks@2.8.7: - resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} + socks@2.8.9: + resolution: {integrity: sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} solc@0.8.21: @@ -3983,6 +4239,10 @@ packages: sqlite3@5.1.7: resolution: {integrity: sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog==} + sqlite3@6.0.1: + resolution: {integrity: sha512-X0czUUMG2tmSqJpEQa3tCuZSHKIx8PwM53vLZzKp/o6Rpy25fiVfjdbnZ988M8+O3ZWR1ih0K255VumCb3MAnQ==} + engines: {node: '>=20.17.0'} + ssh2@1.17.0: resolution: {integrity: sha512-wPldCk3asibAjQ/kziWQQt1Wh3PgDFpC0XpwclzKcdT1vql6KeYxf5LIt4nlFkUeR8WuphYMKqUA56X4rjbfgQ==} engines: {node: '>=10.16.0'} @@ -4001,8 +4261,8 @@ packages: std-env@3.10.0: resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} - stdin-discarder@0.3.1: - resolution: {integrity: sha512-reExS1kSGoElkextOcPkel4NE99S0BWxjUHQeDFnR8S993JxpPX7KU4MNmO19NXhlJp+8dmdCbKQVNgLJh2teA==} + stdin-discarder@0.3.2: + resolution: {integrity: sha512-eCPu1qRxPVkl5605OTWF8Wz40b4Mf45NY5LQmVPQ599knfs5QhASUm9GbJ5BDMDOXgrnh0wyEdvzmL//YMlw0A==} engines: {node: '>=18'} string-width@4.2.3: @@ -4017,8 +4277,8 @@ packages: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} - string-width@8.2.0: - resolution: {integrity: sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==} + string-width@8.2.1: + resolution: {integrity: sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==} engines: {node: '>=20'} string_decoder@1.3.0: @@ -4090,6 +4350,10 @@ packages: engines: {node: '>=10'} deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + tar@7.5.16: + resolution: {integrity: sha512-56adEpPMouktRlBLXiaYFFzZ/3+JXa8P9n7WbR+ibIjtviN55mEaOkiysCnPnWm+7kkui1Dn8J9l+g6zV8731w==} + engines: {node: '>=18'} + terminal-size@4.0.1: resolution: {integrity: sha512-avMLDQpUI9I5XFrklECw1ZEUPJhqzcwSWsyyI8blhRLT+8N1jLJWLWWYQpB2q2xthq8xDvjZPISVh53T/+CLYQ==} engines: {node: '>=18'} @@ -4101,11 +4365,11 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - thread-stream@3.1.0: - resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} + thread-stream@3.2.0: + resolution: {integrity: sha512-zLBvqpwr4Esa0kRjcrzGU6zL25lePWaCLMx0RQFrmteozIfeNdaMLpG5U7PeHzvlFkAWaRKA9/KVW4F60iB+qw==} - thread-stream@4.0.0: - resolution: {integrity: sha512-4iMVL6HAINXWf1ZKZjIPcz5wYaOdPhtO8ATvZ+Xqp3BTdaqtAwQkNmKORqcIo5YkQqGXq5cwfswDwMqqQNrpJA==} + thread-stream@4.2.0: + resolution: {integrity: sha512-e2zZ96wSChazBsbENf/Pcm/4swHt2cEKQ92rhUjkL9GCKiTDJIaTBenjE/m9DXi0QBmTMDkFDdOomUy20A1tDQ==} engines: {node: '>=20'} through@2.3.8: @@ -4120,8 +4384,8 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyglobby@0.2.15: - resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} engines: {node: '>=12.0.0'} tinypool@1.1.1: @@ -4143,8 +4407,8 @@ packages: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} - tmp@0.2.5: - resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} + tmp@0.2.7: + resolution: {integrity: sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==} engines: {node: '>=14.14'} to-buffer@1.2.2: @@ -4159,7 +4423,7 @@ packages: resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} toml@https://codeload.github.com/pepoviola/toml-node/tar.gz/5e17114f1af5b5b70e4f2ec10cd007623c928988: - resolution: {tarball: https://codeload.github.com/pepoviola/toml-node/tar.gz/5e17114f1af5b5b70e4f2ec10cd007623c928988} + resolution: {gitHosted: true, tarball: https://codeload.github.com/pepoviola/toml-node/tar.gz/5e17114f1af5b5b70e4f2ec10cd007623c928988} version: 3.0.0 totalist@3.0.1: @@ -4229,8 +4493,8 @@ packages: typescript: optional: true - tsx@4.21.0: - resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} + tsx@4.22.4: + resolution: {integrity: sha512-X8EX+XV4QR5xCsrgxaED954zTDfY8KqlDtskKEL0cHhyS/P8b4IFOvGDQpsC9Q1XnLq915wEfwwY/zzskCtmhg==} engines: {node: '>=18.0.0'} hasBin: true @@ -4252,16 +4516,16 @@ packages: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} - type-fest@5.4.4: - resolution: {integrity: sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw==} + type-fest@5.7.0: + resolution: {integrity: sha512-1URUxUqfHFM1c+zfSPsa3gnkO7Aq21qyH75SIduNYz4SzY964rn1X2vCMQaHSHhktiw+0kPa2iyb6PUpXqB6Vg==} engines: {node: '>=20'} typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} - typeorm@0.3.28: - resolution: {integrity: sha512-6GH7wXhtfq2D33ZuRXYwIsl/qM5685WZcODZb7noOOcRMteM9KF2x2ap3H0EBjnSV0VO4gNAfJT5Ukp0PkOlvg==} + typeorm@0.3.30: + resolution: {integrity: sha512-8T35PzjefOdqc2ZR9mwLQj0pUGp6lQhMbK2EvVMwJVJWlaoHm0v/Q6dThNOZkFchD+0yMg8gwjKM28ePiLSXSQ==} engines: {node: '>=16.13.0'} hasBin: true peerDependencies: @@ -4325,8 +4589,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - ufo@1.6.3: - resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} + ufo@1.6.4: + resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==} uint8arrays@3.1.1: resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} @@ -4334,14 +4598,18 @@ packages: undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - undici-types@7.16.0: - resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} - undici-types@7.18.2: resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} - undici@7.22.0: - resolution: {integrity: sha512-RqslV2Us5BrllB+JeiZnK4peryVTndy9Dnqq62S3yYRRTj0tFQCwEniUy2167skdGOy3vqRzEvl1Dm4sV2ReDg==} + undici-types@7.24.6: + resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==} + + undici@6.26.0: + resolution: {integrity: sha512-4yqz8a3n5HmGTlsbADNtr/dJlhkh/55Rq798G6ibiULcXbDtaLpTl1pvdqcbFfeoj3iSi52lePFM7h9H21cw/A==} + engines: {node: '>=18.17'} + + undici@7.27.2: + resolution: {integrity: sha512-uZsKNuzQxDMUY6M3pIMvy5tvlGmtq8XJ2oLAkfRKGNu+1VQAIvLy2xIVG5ATZl5wDXl/tddByAWCizRbOme+TA==} engines: {node: '>=20.18.1'} unicorn-magic@0.1.0: @@ -4380,10 +4648,11 @@ packages: uuid@10.0.0: resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true - uuid@11.1.0: - resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + uuid@11.1.1: + resolution: {integrity: sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==} hasBin: true v8-compile-cache-lib@3.0.1: @@ -4413,8 +4682,8 @@ packages: engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite@7.3.1: - resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + vite@7.3.5: + resolution: {integrity: sha512-KuOaNhcnGFN2zIPGA7wRmzF+lJA1sea7rHq17aiJ++9lzY1WWG6Jpwqwe1KNbRVPIqHmr8GLYx7jbrQcN/7/ww==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -4592,8 +4861,8 @@ packages: whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - which-typed-array@1.1.20: - resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} + which-typed-array@1.1.22: + resolution: {integrity: sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==} engines: {node: '>= 0.4'} which@2.0.2: @@ -4601,6 +4870,11 @@ packages: engines: {node: '>= 8'} hasBin: true + which@6.0.1: + resolution: {integrity: sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + why-is-node-running@2.3.0: resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} engines: {node: '>=8'} @@ -4676,8 +4950,8 @@ packages: utf-8-validate: optional: true - ws@8.19.0: - resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} + ws@8.21.0: + resolution: {integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -4702,11 +4976,20 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + yaml@2.8.2: resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} engines: {node: '>= 14.6'} hasBin: true + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} + engines: {node: '>= 14.6'} + hasBin: true + yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -4762,16 +5045,16 @@ snapshots: '@acala-network/chopsticks-core@1.2.3': dependencies: '@acala-network/chopsticks-executor': 1.2.3 - '@polkadot/rpc-provider': 16.5.4 - '@polkadot/types': 16.5.4 - '@polkadot/types-codec': 16.5.4 - '@polkadot/types-known': 16.5.4 + '@polkadot/rpc-provider': 16.5.6 + '@polkadot/types': 16.5.6 + '@polkadot/types-codec': 16.5.6 + '@polkadot/types-known': 16.5.6 '@polkadot/util': 13.5.9 '@polkadot/util-crypto': 13.5.9(@polkadot/util@13.5.9) comlink: 4.4.2 eventemitter3: 5.0.4 - lodash: 4.17.23 - lru-cache: 11.2.6 + lodash: 4.18.1 + lru-cache: 11.5.1 pino: 9.14.0 pino-pretty: 13.1.3 rxjs: 7.8.2 @@ -4781,19 +5064,19 @@ snapshots: - supports-color - utf-8-validate - '@acala-network/chopsticks-core@1.2.7': + '@acala-network/chopsticks-core@1.4.2': dependencies: - '@acala-network/chopsticks-executor': 1.2.7 - '@polkadot/rpc-provider': 16.5.4 - '@polkadot/types': 16.5.4 - '@polkadot/types-codec': 16.5.4 - '@polkadot/types-known': 16.5.4 - '@polkadot/util': 14.0.1 - '@polkadot/util-crypto': 14.0.1(@polkadot/util@14.0.1) + '@acala-network/chopsticks-executor': 1.4.2 + '@polkadot/rpc-provider': 16.5.6 + '@polkadot/types': 16.5.6 + '@polkadot/types-codec': 16.5.6 + '@polkadot/types-known': 16.5.6 + '@polkadot/util': 14.0.3 + '@polkadot/util-crypto': 14.0.3(@polkadot/util@14.0.3) comlink: 4.4.2 eventemitter3: 5.0.4 - lodash: 4.17.23 - lru-cache: 11.2.6 + lodash: 4.18.1 + lru-cache: 11.5.1 pino: 9.14.0 pino-pretty: 13.1.3 rxjs: 7.8.2 @@ -4803,14 +5086,14 @@ snapshots: - supports-color - utf-8-validate - '@acala-network/chopsticks-db@1.2.3(ts-node@10.9.2(@types/node@25.3.5)(typescript@5.8.3))': + '@acala-network/chopsticks-db@1.2.3(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3))': dependencies: '@acala-network/chopsticks-core': 1.2.3 '@polkadot/util': 13.5.9 idb: 8.0.3 reflect-metadata: 0.2.2 sqlite3: 5.1.7 - typeorm: 0.3.28(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@25.3.5)(typescript@5.8.3)) + typeorm: 0.3.30(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3)) transitivePeerDependencies: - '@google-cloud/spanner' - '@sap/hana-client' @@ -4833,20 +5116,19 @@ snapshots: - typeorm-aurora-data-api-driver - utf-8-validate - '@acala-network/chopsticks-db@1.2.7(ts-node@10.9.2(@types/node@25.3.5)(typescript@5.8.3))': + '@acala-network/chopsticks-db@1.4.2(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3))': dependencies: - '@acala-network/chopsticks-core': 1.2.7 - '@polkadot/util': 14.0.1 + '@acala-network/chopsticks-core': 1.4.2 + '@polkadot/util': 14.0.3 idb: 8.0.3 reflect-metadata: 0.2.2 - sqlite3: 5.1.7 - typeorm: 0.3.28(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@25.3.5)(typescript@5.8.3)) + sqlite3: 6.0.1 + typeorm: 0.3.30(sqlite3@6.0.1)(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3)) transitivePeerDependencies: - '@google-cloud/spanner' - '@sap/hana-client' - babel-plugin-macros - better-sqlite3 - - bluebird - bufferutil - ioredis - mongodb @@ -4868,30 +5150,30 @@ snapshots: '@polkadot/util': 13.5.9 '@polkadot/wasm-util': 7.5.4(@polkadot/util@13.5.9) - '@acala-network/chopsticks-executor@1.2.7': + '@acala-network/chopsticks-executor@1.4.2': dependencies: - '@polkadot/util': 14.0.1 - '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.1) + '@polkadot/util': 14.0.3 + '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.3) - '@acala-network/chopsticks@1.2.3(debug@4.3.7)(ts-node@10.9.2(@types/node@25.3.5)(typescript@5.8.3))': + '@acala-network/chopsticks@1.2.3(debug@4.3.7)(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3))': dependencies: '@acala-network/chopsticks-core': 1.2.3 - '@acala-network/chopsticks-db': 1.2.3(ts-node@10.9.2(@types/node@25.3.5)(typescript@5.8.3)) + '@acala-network/chopsticks-db': 1.2.3(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3)) '@pnpm/npm-conf': 3.0.2 - '@polkadot/api': 16.5.4 - '@polkadot/api-augment': 16.5.4 - '@polkadot/rpc-provider': 16.5.4 - '@polkadot/types': 16.5.4 + '@polkadot/api': 16.5.6 + '@polkadot/api-augment': 16.5.6 + '@polkadot/rpc-provider': 16.5.6 + '@polkadot/types': 16.5.6 '@polkadot/util': 13.5.9 '@polkadot/util-crypto': 13.5.9(@polkadot/util@13.5.9) - axios: 1.13.6(debug@4.3.7) + axios: 1.17.0(debug@4.3.7) comlink: 4.4.2 dotenv: 16.6.1 global-agent: 3.0.0 - js-yaml: 4.1.1 + js-yaml: 4.2.0 jsondiffpatch: 0.5.0 - lodash: 4.17.23 - ws: 8.19.0 + lodash: 4.18.1 + ws: 8.21.0 yargs: 18.0.0 zod: 3.25.76 transitivePeerDependencies: @@ -4917,26 +5199,26 @@ snapshots: - typeorm-aurora-data-api-driver - utf-8-validate - '@acala-network/chopsticks@1.2.7(debug@4.3.7)(ts-node@10.9.2(@types/node@25.3.5)(typescript@5.8.3))': + '@acala-network/chopsticks@1.4.2(debug@4.3.7)(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3))': dependencies: - '@acala-network/chopsticks-core': 1.2.7 - '@acala-network/chopsticks-db': 1.2.7(ts-node@10.9.2(@types/node@25.3.5)(typescript@5.8.3)) + '@acala-network/chopsticks-core': 1.4.2 + '@acala-network/chopsticks-db': 1.4.2(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3)) '@dmsnell/diff-match-patch': 1.1.0 '@pnpm/npm-conf': 3.0.2 - '@polkadot/api': 16.5.4 - '@polkadot/api-augment': 16.5.4 - '@polkadot/rpc-provider': 16.5.4 - '@polkadot/types': 16.5.4 - '@polkadot/util': 14.0.1 - '@polkadot/util-crypto': 14.0.1(@polkadot/util@14.0.1) - axios: 1.13.6(debug@4.3.7) + '@polkadot/api': 16.5.6 + '@polkadot/api-augment': 16.5.6 + '@polkadot/rpc-provider': 16.5.6 + '@polkadot/types': 16.5.6 + '@polkadot/util': 14.0.3 + '@polkadot/util-crypto': 14.0.3(@polkadot/util@14.0.3) + axios: 1.17.0(debug@4.3.7) comlink: 4.4.2 dotenv: 16.6.1 global-agent: 3.0.0 - js-yaml: 4.1.1 - jsondiffpatch: 0.7.3 - lodash: 4.17.23 - ws: 8.19.0 + js-yaml: 4.2.0 + jsondiffpatch: 0.7.6 + lodash: 4.18.1 + ws: 8.21.0 yargs: 18.0.0 zod: 3.25.76 transitivePeerDependencies: @@ -4944,7 +5226,6 @@ snapshots: - '@sap/hana-client' - babel-plugin-macros - better-sqlite3 - - bluebird - bufferutil - debug - ioredis @@ -5026,13 +5307,13 @@ snapshots: '@ast-grep/napi-win32-ia32-msvc': 0.40.5 '@ast-grep/napi-win32-x64-msvc': 0.40.5 - '@babel/code-frame@7.29.0': + '@babel/code-frame@7.29.7': dependencies: - '@babel/helper-validator-identifier': 7.28.5 + '@babel/helper-validator-identifier': 7.29.7 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/helper-validator-identifier@7.28.5': {} + '@babel/helper-validator-identifier@7.29.7': {} '@balena/dockerignore@1.0.2': {} @@ -5104,155 +5385,235 @@ snapshots: '@dmsnell/diff-match-patch@1.1.0': {} - '@effect/cluster@0.55.0(@effect/platform@0.93.8(effect@3.19.19))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/workflow@0.15.2(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(effect@3.19.19))(effect@3.19.19)': + '@effect/cluster@0.55.0(@effect/platform@0.93.8(effect@3.21.3))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/workflow@0.15.2(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(effect@3.21.3))(effect@3.21.3)': dependencies: - '@effect/platform': 0.93.8(effect@3.19.19) - '@effect/rpc': 0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19) - '@effect/sql': 0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19) - '@effect/workflow': 0.15.2(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(effect@3.19.19) - effect: 3.19.19 + '@effect/platform': 0.93.8(effect@3.21.3) + '@effect/rpc': 0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3) + '@effect/sql': 0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3) + '@effect/workflow': 0.15.2(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(effect@3.21.3) + effect: 3.21.3 kubernetes-types: 1.30.0 - '@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19)': + '@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3)': dependencies: - '@effect/platform': 0.93.8(effect@3.19.19) - effect: 3.19.19 - uuid: 11.1.0 + '@effect/platform': 0.93.8(effect@3.21.3) + effect: 3.21.3 + uuid: 11.1.1 - '@effect/platform-node-shared@0.56.0(@effect/cluster@0.55.0(@effect/platform@0.93.8(effect@3.19.19))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/workflow@0.15.2(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(effect@3.19.19)': + '@effect/platform-node-shared@0.56.0(@effect/cluster@0.55.0(@effect/platform@0.93.8(effect@3.21.3))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/workflow@0.15.2(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(effect@3.21.3)': dependencies: - '@effect/cluster': 0.55.0(@effect/platform@0.93.8(effect@3.19.19))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/workflow@0.15.2(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(effect@3.19.19))(effect@3.19.19) - '@effect/platform': 0.93.8(effect@3.19.19) - '@effect/rpc': 0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19) - '@effect/sql': 0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19) + '@effect/cluster': 0.55.0(@effect/platform@0.93.8(effect@3.21.3))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/workflow@0.15.2(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(effect@3.21.3))(effect@3.21.3) + '@effect/platform': 0.93.8(effect@3.21.3) + '@effect/rpc': 0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3) + '@effect/sql': 0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3) '@parcel/watcher': 2.5.6 - effect: 3.19.19 + effect: 3.21.3 multipasta: 0.2.7 - ws: 8.19.0 + ws: 8.21.0 transitivePeerDependencies: - bufferutil - utf-8-validate - '@effect/platform-node@0.103.0(@effect/cluster@0.55.0(@effect/platform@0.93.8(effect@3.19.19))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/workflow@0.15.2(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(effect@3.19.19)': + '@effect/platform-node@0.103.0(@effect/cluster@0.55.0(@effect/platform@0.93.8(effect@3.21.3))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/workflow@0.15.2(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(effect@3.21.3)': dependencies: - '@effect/cluster': 0.55.0(@effect/platform@0.93.8(effect@3.19.19))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/workflow@0.15.2(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(effect@3.19.19))(effect@3.19.19) - '@effect/platform': 0.93.8(effect@3.19.19) - '@effect/platform-node-shared': 0.56.0(@effect/cluster@0.55.0(@effect/platform@0.93.8(effect@3.19.19))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/workflow@0.15.2(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(effect@3.19.19) - '@effect/rpc': 0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19) - '@effect/sql': 0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19) - effect: 3.19.19 + '@effect/cluster': 0.55.0(@effect/platform@0.93.8(effect@3.21.3))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/workflow@0.15.2(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(effect@3.21.3))(effect@3.21.3) + '@effect/platform': 0.93.8(effect@3.21.3) + '@effect/platform-node-shared': 0.56.0(@effect/cluster@0.55.0(@effect/platform@0.93.8(effect@3.21.3))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/workflow@0.15.2(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(effect@3.21.3) + '@effect/rpc': 0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3) + '@effect/sql': 0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3) + effect: 3.21.3 mime: 3.0.0 - undici: 7.22.0 - ws: 8.19.0 + undici: 7.27.2 + ws: 8.21.0 transitivePeerDependencies: - bufferutil - utf-8-validate - '@effect/platform@0.93.8(effect@3.19.19)': + '@effect/platform@0.93.8(effect@3.21.3)': dependencies: - effect: 3.19.19 + effect: 3.21.3 find-my-way-ts: 0.1.6 - msgpackr: 1.11.8 + msgpackr: 1.11.14 multipasta: 0.2.7 - '@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19)': + '@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3)': dependencies: - '@effect/platform': 0.93.8(effect@3.19.19) - effect: 3.19.19 - msgpackr: 1.11.8 + '@effect/platform': 0.93.8(effect@3.21.3) + effect: 3.21.3 + msgpackr: 1.11.14 - '@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19)': + '@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3)': dependencies: - '@effect/experimental': 0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19) - '@effect/platform': 0.93.8(effect@3.19.19) - effect: 3.19.19 - uuid: 11.1.0 + '@effect/experimental': 0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3) + '@effect/platform': 0.93.8(effect@3.21.3) + effect: 3.21.3 + uuid: 11.1.1 - '@effect/workflow@0.15.2(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(effect@3.19.19)': + '@effect/workflow@0.15.2(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(effect@3.21.3)': dependencies: - '@effect/experimental': 0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19) - '@effect/platform': 0.93.8(effect@3.19.19) - '@effect/rpc': 0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19) - effect: 3.19.19 + '@effect/experimental': 0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3) + '@effect/platform': 0.93.8(effect@3.21.3) + '@effect/rpc': 0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3) + effect: 3.21.3 + + '@esbuild/aix-ppc64@0.27.7': + optional: true + + '@esbuild/aix-ppc64@0.28.0': + optional: true + + '@esbuild/android-arm64@0.27.7': + optional: true + + '@esbuild/android-arm64@0.28.0': + optional: true + + '@esbuild/android-arm@0.27.7': + optional: true + + '@esbuild/android-arm@0.28.0': + optional: true + + '@esbuild/android-x64@0.27.7': + optional: true + + '@esbuild/android-x64@0.28.0': + optional: true + + '@esbuild/darwin-arm64@0.27.7': + optional: true + + '@esbuild/darwin-arm64@0.28.0': + optional: true + + '@esbuild/darwin-x64@0.27.7': + optional: true + + '@esbuild/darwin-x64@0.28.0': + optional: true + + '@esbuild/freebsd-arm64@0.27.7': + optional: true + + '@esbuild/freebsd-arm64@0.28.0': + optional: true + + '@esbuild/freebsd-x64@0.27.7': + optional: true + + '@esbuild/freebsd-x64@0.28.0': + optional: true + + '@esbuild/linux-arm64@0.27.7': + optional: true + + '@esbuild/linux-arm64@0.28.0': + optional: true + + '@esbuild/linux-arm@0.27.7': + optional: true + + '@esbuild/linux-arm@0.28.0': + optional: true + + '@esbuild/linux-ia32@0.27.7': + optional: true + + '@esbuild/linux-ia32@0.28.0': + optional: true + + '@esbuild/linux-loong64@0.27.7': + optional: true + + '@esbuild/linux-loong64@0.28.0': + optional: true + + '@esbuild/linux-mips64el@0.27.7': + optional: true + + '@esbuild/linux-mips64el@0.28.0': + optional: true - '@esbuild/aix-ppc64@0.27.3': + '@esbuild/linux-ppc64@0.27.7': optional: true - '@esbuild/android-arm64@0.27.3': + '@esbuild/linux-ppc64@0.28.0': optional: true - '@esbuild/android-arm@0.27.3': + '@esbuild/linux-riscv64@0.27.7': optional: true - '@esbuild/android-x64@0.27.3': + '@esbuild/linux-riscv64@0.28.0': optional: true - '@esbuild/darwin-arm64@0.27.3': + '@esbuild/linux-s390x@0.27.7': optional: true - '@esbuild/darwin-x64@0.27.3': + '@esbuild/linux-s390x@0.28.0': optional: true - '@esbuild/freebsd-arm64@0.27.3': + '@esbuild/linux-x64@0.27.7': optional: true - '@esbuild/freebsd-x64@0.27.3': + '@esbuild/linux-x64@0.28.0': optional: true - '@esbuild/linux-arm64@0.27.3': + '@esbuild/netbsd-arm64@0.27.7': optional: true - '@esbuild/linux-arm@0.27.3': + '@esbuild/netbsd-arm64@0.28.0': optional: true - '@esbuild/linux-ia32@0.27.3': + '@esbuild/netbsd-x64@0.27.7': optional: true - '@esbuild/linux-loong64@0.27.3': + '@esbuild/netbsd-x64@0.28.0': optional: true - '@esbuild/linux-mips64el@0.27.3': + '@esbuild/openbsd-arm64@0.27.7': optional: true - '@esbuild/linux-ppc64@0.27.3': + '@esbuild/openbsd-arm64@0.28.0': optional: true - '@esbuild/linux-riscv64@0.27.3': + '@esbuild/openbsd-x64@0.27.7': optional: true - '@esbuild/linux-s390x@0.27.3': + '@esbuild/openbsd-x64@0.28.0': optional: true - '@esbuild/linux-x64@0.27.3': + '@esbuild/openharmony-arm64@0.27.7': optional: true - '@esbuild/netbsd-arm64@0.27.3': + '@esbuild/openharmony-arm64@0.28.0': optional: true - '@esbuild/netbsd-x64@0.27.3': + '@esbuild/sunos-x64@0.27.7': optional: true - '@esbuild/openbsd-arm64@0.27.3': + '@esbuild/sunos-x64@0.28.0': optional: true - '@esbuild/openbsd-x64@0.27.3': + '@esbuild/win32-arm64@0.27.7': optional: true - '@esbuild/openharmony-arm64@0.27.3': + '@esbuild/win32-arm64@0.28.0': optional: true - '@esbuild/sunos-x64@0.27.3': + '@esbuild/win32-ia32@0.27.7': optional: true - '@esbuild/win32-arm64@0.27.3': + '@esbuild/win32-ia32@0.28.0': optional: true - '@esbuild/win32-ia32@0.27.3': + '@esbuild/win32-x64@0.27.7': optional: true - '@esbuild/win32-x64@0.27.3': + '@esbuild/win32-x64@0.28.0': optional: true + '@ethereumjs/rlp@10.1.2': {} + '@ethereumjs/rlp@4.0.1': {} '@ethereumjs/rlp@5.0.2': {} @@ -5260,268 +5621,268 @@ snapshots: '@gar/promisify@1.1.3': optional: true - '@grpc/grpc-js@1.14.3': + '@grpc/grpc-js@1.14.4': dependencies: - '@grpc/proto-loader': 0.8.0 + '@grpc/proto-loader': 0.8.1 '@js-sdsl/ordered-map': 4.4.2 '@grpc/proto-loader@0.7.15': dependencies: lodash.camelcase: 4.3.0 long: 5.3.2 - protobufjs: 7.5.4 + protobufjs: 7.6.2 yargs: 17.7.2 - '@grpc/proto-loader@0.8.0': + '@grpc/proto-loader@0.8.1': dependencies: lodash.camelcase: 4.3.0 long: 5.3.2 - protobufjs: 7.5.4 + protobufjs: 7.6.2 yargs: 17.7.2 '@inquirer/ansi@1.0.2': {} - '@inquirer/ansi@2.0.3': {} + '@inquirer/ansi@2.0.7': {} - '@inquirer/checkbox@4.3.2(@types/node@25.3.5)': + '@inquirer/checkbox@4.3.2(@types/node@25.9.2)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@25.3.5) + '@inquirer/core': 10.3.2(@types/node@25.9.2) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@25.3.5) + '@inquirer/type': 3.0.10(@types/node@25.9.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 - '@inquirer/checkbox@5.1.0(@types/node@25.3.5)': + '@inquirer/checkbox@5.2.1(@types/node@25.9.2)': dependencies: - '@inquirer/ansi': 2.0.3 - '@inquirer/core': 11.1.5(@types/node@25.3.5) - '@inquirer/figures': 2.0.3 - '@inquirer/type': 4.0.3(@types/node@25.3.5) + '@inquirer/ansi': 2.0.7 + '@inquirer/core': 11.2.1(@types/node@25.9.2) + '@inquirer/figures': 2.0.7 + '@inquirer/type': 4.0.7(@types/node@25.9.2) optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 - '@inquirer/confirm@5.1.21(@types/node@25.3.5)': + '@inquirer/confirm@5.1.21(@types/node@25.9.2)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.3.5) - '@inquirer/type': 3.0.10(@types/node@25.3.5) + '@inquirer/core': 10.3.2(@types/node@25.9.2) + '@inquirer/type': 3.0.10(@types/node@25.9.2) optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 - '@inquirer/confirm@6.0.8(@types/node@25.3.5)': + '@inquirer/confirm@6.1.1(@types/node@25.9.2)': dependencies: - '@inquirer/core': 11.1.5(@types/node@25.3.5) - '@inquirer/type': 4.0.3(@types/node@25.3.5) + '@inquirer/core': 11.2.1(@types/node@25.9.2) + '@inquirer/type': 4.0.7(@types/node@25.9.2) optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 - '@inquirer/core@10.3.2(@types/node@25.3.5)': + '@inquirer/core@10.3.2(@types/node@25.9.2)': dependencies: '@inquirer/ansi': 1.0.2 '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@25.3.5) + '@inquirer/type': 3.0.10(@types/node@25.9.2) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 - '@inquirer/core@11.1.5(@types/node@25.3.5)': + '@inquirer/core@11.2.1(@types/node@25.9.2)': dependencies: - '@inquirer/ansi': 2.0.3 - '@inquirer/figures': 2.0.3 - '@inquirer/type': 4.0.3(@types/node@25.3.5) + '@inquirer/ansi': 2.0.7 + '@inquirer/figures': 2.0.7 + '@inquirer/type': 4.0.7(@types/node@25.9.2) cli-width: 4.1.0 - fast-wrap-ansi: 0.2.0 + fast-wrap-ansi: 0.2.2 mute-stream: 3.0.0 signal-exit: 4.1.0 optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 - '@inquirer/editor@4.2.23(@types/node@25.3.5)': + '@inquirer/editor@4.2.23(@types/node@25.9.2)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.3.5) - '@inquirer/external-editor': 1.0.3(@types/node@25.3.5) - '@inquirer/type': 3.0.10(@types/node@25.3.5) + '@inquirer/core': 10.3.2(@types/node@25.9.2) + '@inquirer/external-editor': 1.0.3(@types/node@25.9.2) + '@inquirer/type': 3.0.10(@types/node@25.9.2) optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 - '@inquirer/editor@5.0.8(@types/node@25.3.5)': + '@inquirer/editor@5.2.2(@types/node@25.9.2)': dependencies: - '@inquirer/core': 11.1.5(@types/node@25.3.5) - '@inquirer/external-editor': 2.0.3(@types/node@25.3.5) - '@inquirer/type': 4.0.3(@types/node@25.3.5) + '@inquirer/core': 11.2.1(@types/node@25.9.2) + '@inquirer/external-editor': 3.0.3(@types/node@25.9.2) + '@inquirer/type': 4.0.7(@types/node@25.9.2) optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 - '@inquirer/expand@4.0.23(@types/node@25.3.5)': + '@inquirer/expand@4.0.23(@types/node@25.9.2)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.3.5) - '@inquirer/type': 3.0.10(@types/node@25.3.5) + '@inquirer/core': 10.3.2(@types/node@25.9.2) + '@inquirer/type': 3.0.10(@types/node@25.9.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 - '@inquirer/expand@5.0.8(@types/node@25.3.5)': + '@inquirer/expand@5.1.1(@types/node@25.9.2)': dependencies: - '@inquirer/core': 11.1.5(@types/node@25.3.5) - '@inquirer/type': 4.0.3(@types/node@25.3.5) + '@inquirer/core': 11.2.1(@types/node@25.9.2) + '@inquirer/type': 4.0.7(@types/node@25.9.2) optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 - '@inquirer/external-editor@1.0.3(@types/node@25.3.5)': + '@inquirer/external-editor@1.0.3(@types/node@25.9.2)': dependencies: chardet: 2.1.1 iconv-lite: 0.7.2 optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 - '@inquirer/external-editor@2.0.3(@types/node@25.3.5)': + '@inquirer/external-editor@3.0.3(@types/node@25.9.2)': dependencies: chardet: 2.1.1 iconv-lite: 0.7.2 optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 '@inquirer/figures@1.0.15': {} - '@inquirer/figures@2.0.3': {} + '@inquirer/figures@2.0.7': {} - '@inquirer/input@4.3.1(@types/node@25.3.5)': + '@inquirer/input@4.3.1(@types/node@25.9.2)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.3.5) - '@inquirer/type': 3.0.10(@types/node@25.3.5) + '@inquirer/core': 10.3.2(@types/node@25.9.2) + '@inquirer/type': 3.0.10(@types/node@25.9.2) optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 - '@inquirer/input@5.0.8(@types/node@25.3.5)': + '@inquirer/input@5.1.2(@types/node@25.9.2)': dependencies: - '@inquirer/core': 11.1.5(@types/node@25.3.5) - '@inquirer/type': 4.0.3(@types/node@25.3.5) + '@inquirer/core': 11.2.1(@types/node@25.9.2) + '@inquirer/type': 4.0.7(@types/node@25.9.2) optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 - '@inquirer/number@3.0.23(@types/node@25.3.5)': + '@inquirer/number@3.0.23(@types/node@25.9.2)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.3.5) - '@inquirer/type': 3.0.10(@types/node@25.3.5) + '@inquirer/core': 10.3.2(@types/node@25.9.2) + '@inquirer/type': 3.0.10(@types/node@25.9.2) optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 - '@inquirer/number@4.0.8(@types/node@25.3.5)': + '@inquirer/number@4.1.1(@types/node@25.9.2)': dependencies: - '@inquirer/core': 11.1.5(@types/node@25.3.5) - '@inquirer/type': 4.0.3(@types/node@25.3.5) + '@inquirer/core': 11.2.1(@types/node@25.9.2) + '@inquirer/type': 4.0.7(@types/node@25.9.2) optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 - '@inquirer/password@4.0.23(@types/node@25.3.5)': + '@inquirer/password@4.0.23(@types/node@25.9.2)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@25.3.5) - '@inquirer/type': 3.0.10(@types/node@25.3.5) + '@inquirer/core': 10.3.2(@types/node@25.9.2) + '@inquirer/type': 3.0.10(@types/node@25.9.2) optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 - '@inquirer/password@5.0.8(@types/node@25.3.5)': + '@inquirer/password@5.1.1(@types/node@25.9.2)': dependencies: - '@inquirer/ansi': 2.0.3 - '@inquirer/core': 11.1.5(@types/node@25.3.5) - '@inquirer/type': 4.0.3(@types/node@25.3.5) + '@inquirer/ansi': 2.0.7 + '@inquirer/core': 11.2.1(@types/node@25.9.2) + '@inquirer/type': 4.0.7(@types/node@25.9.2) optionalDependencies: - '@types/node': 25.3.5 - - '@inquirer/prompts@7.3.1(@types/node@25.3.5)': - dependencies: - '@inquirer/checkbox': 4.3.2(@types/node@25.3.5) - '@inquirer/confirm': 5.1.21(@types/node@25.3.5) - '@inquirer/editor': 4.2.23(@types/node@25.3.5) - '@inquirer/expand': 4.0.23(@types/node@25.3.5) - '@inquirer/input': 4.3.1(@types/node@25.3.5) - '@inquirer/number': 3.0.23(@types/node@25.3.5) - '@inquirer/password': 4.0.23(@types/node@25.3.5) - '@inquirer/rawlist': 4.1.11(@types/node@25.3.5) - '@inquirer/search': 3.2.2(@types/node@25.3.5) - '@inquirer/select': 4.4.2(@types/node@25.3.5) + '@types/node': 25.9.2 + + '@inquirer/prompts@7.3.1(@types/node@25.9.2)': + dependencies: + '@inquirer/checkbox': 4.3.2(@types/node@25.9.2) + '@inquirer/confirm': 5.1.21(@types/node@25.9.2) + '@inquirer/editor': 4.2.23(@types/node@25.9.2) + '@inquirer/expand': 4.0.23(@types/node@25.9.2) + '@inquirer/input': 4.3.1(@types/node@25.9.2) + '@inquirer/number': 3.0.23(@types/node@25.9.2) + '@inquirer/password': 4.0.23(@types/node@25.9.2) + '@inquirer/rawlist': 4.1.11(@types/node@25.9.2) + '@inquirer/search': 3.2.2(@types/node@25.9.2) + '@inquirer/select': 4.4.2(@types/node@25.9.2) optionalDependencies: - '@types/node': 25.3.5 - - '@inquirer/prompts@8.3.0(@types/node@25.3.5)': - dependencies: - '@inquirer/checkbox': 5.1.0(@types/node@25.3.5) - '@inquirer/confirm': 6.0.8(@types/node@25.3.5) - '@inquirer/editor': 5.0.8(@types/node@25.3.5) - '@inquirer/expand': 5.0.8(@types/node@25.3.5) - '@inquirer/input': 5.0.8(@types/node@25.3.5) - '@inquirer/number': 4.0.8(@types/node@25.3.5) - '@inquirer/password': 5.0.8(@types/node@25.3.5) - '@inquirer/rawlist': 5.2.4(@types/node@25.3.5) - '@inquirer/search': 4.1.4(@types/node@25.3.5) - '@inquirer/select': 5.1.0(@types/node@25.3.5) + '@types/node': 25.9.2 + + '@inquirer/prompts@8.5.2(@types/node@25.9.2)': + dependencies: + '@inquirer/checkbox': 5.2.1(@types/node@25.9.2) + '@inquirer/confirm': 6.1.1(@types/node@25.9.2) + '@inquirer/editor': 5.2.2(@types/node@25.9.2) + '@inquirer/expand': 5.1.1(@types/node@25.9.2) + '@inquirer/input': 5.1.2(@types/node@25.9.2) + '@inquirer/number': 4.1.1(@types/node@25.9.2) + '@inquirer/password': 5.1.1(@types/node@25.9.2) + '@inquirer/rawlist': 5.3.1(@types/node@25.9.2) + '@inquirer/search': 4.2.1(@types/node@25.9.2) + '@inquirer/select': 5.2.1(@types/node@25.9.2) optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 - '@inquirer/rawlist@4.1.11(@types/node@25.3.5)': + '@inquirer/rawlist@4.1.11(@types/node@25.9.2)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.3.5) - '@inquirer/type': 3.0.10(@types/node@25.3.5) + '@inquirer/core': 10.3.2(@types/node@25.9.2) + '@inquirer/type': 3.0.10(@types/node@25.9.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 - '@inquirer/rawlist@5.2.4(@types/node@25.3.5)': + '@inquirer/rawlist@5.3.1(@types/node@25.9.2)': dependencies: - '@inquirer/core': 11.1.5(@types/node@25.3.5) - '@inquirer/type': 4.0.3(@types/node@25.3.5) + '@inquirer/core': 11.2.1(@types/node@25.9.2) + '@inquirer/type': 4.0.7(@types/node@25.9.2) optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 - '@inquirer/search@3.2.2(@types/node@25.3.5)': + '@inquirer/search@3.2.2(@types/node@25.9.2)': dependencies: - '@inquirer/core': 10.3.2(@types/node@25.3.5) + '@inquirer/core': 10.3.2(@types/node@25.9.2) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@25.3.5) + '@inquirer/type': 3.0.10(@types/node@25.9.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 - '@inquirer/search@4.1.4(@types/node@25.3.5)': + '@inquirer/search@4.2.1(@types/node@25.9.2)': dependencies: - '@inquirer/core': 11.1.5(@types/node@25.3.5) - '@inquirer/figures': 2.0.3 - '@inquirer/type': 4.0.3(@types/node@25.3.5) + '@inquirer/core': 11.2.1(@types/node@25.9.2) + '@inquirer/figures': 2.0.7 + '@inquirer/type': 4.0.7(@types/node@25.9.2) optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 - '@inquirer/select@4.4.2(@types/node@25.3.5)': + '@inquirer/select@4.4.2(@types/node@25.9.2)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@25.3.5) + '@inquirer/core': 10.3.2(@types/node@25.9.2) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@25.3.5) + '@inquirer/type': 3.0.10(@types/node@25.9.2) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 - '@inquirer/select@5.1.0(@types/node@25.3.5)': + '@inquirer/select@5.2.1(@types/node@25.9.2)': dependencies: - '@inquirer/ansi': 2.0.3 - '@inquirer/core': 11.1.5(@types/node@25.3.5) - '@inquirer/figures': 2.0.3 - '@inquirer/type': 4.0.3(@types/node@25.3.5) + '@inquirer/ansi': 2.0.7 + '@inquirer/core': 11.2.1(@types/node@25.9.2) + '@inquirer/figures': 2.0.7 + '@inquirer/type': 4.0.7(@types/node@25.9.2) optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 - '@inquirer/type@3.0.10(@types/node@25.3.5)': + '@inquirer/type@3.0.10(@types/node@25.9.2)': optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 - '@inquirer/type@4.0.3(@types/node@25.3.5)': + '@inquirer/type@4.0.7(@types/node@25.9.2)': optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 '@isaacs/balanced-match@4.0.1': {} @@ -5538,6 +5899,10 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.3 + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -5559,34 +5924,34 @@ snapshots: '@js-sdsl/ordered-map@4.4.2': {} - '@moonwall/cli@5.18.3(@polkadot/api-base@16.5.4)(@polkadot/api-derive@16.5.4)(@polkadot/api@16.5.4)(@polkadot/keyring@14.0.1(@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1))(@polkadot/util@14.0.1))(@polkadot/rpc-provider@16.5.4)(@polkadot/types-codec@16.5.4)(@polkadot/types@16.5.4)(@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1))(@polkadot/util@14.0.1)(@types/debug@4.1.12)(@types/node@25.3.5)(chokidar@3.6.0)(debug@4.3.7)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.8)(rxjs@7.8.2)(ts-node@10.9.2(@types/node@25.3.5)(typescript@5.8.3))(tsx@4.21.0)(typescript@5.8.3)(zod@3.25.76)': + '@moonwall/cli@5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api-derive@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/rpc-provider@16.5.6)(@polkadot/types-codec@16.5.6)(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@types/node@25.9.2)(chokidar@3.6.0)(debug@4.3.7)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3))(tsx@4.22.4)(typescript@5.8.3)(zod@3.25.76)': dependencies: - '@acala-network/chopsticks': 1.2.7(debug@4.3.7)(ts-node@10.9.2(@types/node@25.3.5)(typescript@5.8.3)) + '@acala-network/chopsticks': 1.4.2(debug@4.3.7)(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3)) '@ast-grep/napi': 0.40.5 - '@effect/cluster': 0.55.0(@effect/platform@0.93.8(effect@3.19.19))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/workflow@0.15.2(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(effect@3.19.19))(effect@3.19.19) - '@effect/experimental': 0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19) - '@effect/platform': 0.93.8(effect@3.19.19) - '@effect/platform-node': 0.103.0(@effect/cluster@0.55.0(@effect/platform@0.93.8(effect@3.19.19))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/workflow@0.15.2(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(effect@3.19.19) - '@effect/rpc': 0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19) - '@effect/sql': 0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19) - '@effect/workflow': 0.15.2(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(@effect/platform@0.93.8(effect@3.19.19))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.19.19))(effect@3.19.19))(effect@3.19.19) - '@inquirer/prompts': 8.3.0(@types/node@25.3.5) - '@moonwall/types': 5.18.3(@polkadot/api-base@16.5.4)(@polkadot/api@16.5.4)(@polkadot/keyring@14.0.1(@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1))(@polkadot/util@14.0.1))(@polkadot/types@16.5.4)(@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1))(@polkadot/util@14.0.1)(@types/debug@4.1.12)(@vitest/ui@3.2.4)(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.8)(rxjs@7.8.2)(tsx@4.21.0)(typescript@5.8.3)(yaml@2.8.2)(zod@3.25.76) - '@moonwall/util': 5.18.3(@polkadot/api-base@16.5.4)(@polkadot/api-derive@16.5.4)(@polkadot/api@16.5.4)(@polkadot/keyring@14.0.1(@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1))(@polkadot/util@14.0.1))(@polkadot/rpc-provider@16.5.4)(@polkadot/types-codec@16.5.4)(@polkadot/types@16.5.4)(@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1))(@polkadot/util@14.0.1)(@types/debug@4.1.12)(@types/node@25.3.5)(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.8)(rxjs@7.8.2)(tsx@4.21.0)(typescript@5.8.3)(yaml@2.8.2)(zod@3.25.76) + '@effect/cluster': 0.55.0(@effect/platform@0.93.8(effect@3.21.3))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/workflow@0.15.2(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(effect@3.21.3))(effect@3.21.3) + '@effect/experimental': 0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3) + '@effect/platform': 0.93.8(effect@3.21.3) + '@effect/platform-node': 0.103.0(@effect/cluster@0.55.0(@effect/platform@0.93.8(effect@3.21.3))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/workflow@0.15.2(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(effect@3.21.3) + '@effect/rpc': 0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3) + '@effect/sql': 0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3) + '@effect/workflow': 0.15.2(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(effect@3.21.3) + '@inquirer/prompts': 8.5.2(@types/node@25.9.2) + '@moonwall/types': 5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@vitest/ui@3.2.6)(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(typescript@5.8.3)(yaml@2.8.2)(zod@3.25.76) + '@moonwall/util': 5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api-derive@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/rpc-provider@16.5.6)(@polkadot/types-codec@16.5.6)(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@types/node@25.9.2)(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(typescript@5.8.3)(yaml@2.8.2)(zod@3.25.76) '@octokit/rest': 22.0.1 - '@polkadot/api': 16.5.4 - '@polkadot/api-derive': 16.5.4 - '@polkadot/keyring': 14.0.1(@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1))(@polkadot/util@14.0.1) - '@polkadot/rpc-provider': 16.5.4 - '@polkadot/types': 16.5.4 - '@polkadot/types-codec': 16.5.4 - '@polkadot/util': 14.0.1 - '@polkadot/util-crypto': 14.0.1(@polkadot/util@14.0.1) + '@polkadot/api': 16.5.6 + '@polkadot/api-derive': 16.5.6 + '@polkadot/keyring': 14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3) + '@polkadot/rpc-provider': 16.5.6 + '@polkadot/types': 16.5.6 + '@polkadot/types-codec': 16.5.6 + '@polkadot/util': 14.0.3 + '@polkadot/util-crypto': 14.0.3(@polkadot/util@14.0.3) '@types/react': 19.2.7 '@types/tmp': 0.2.6 - '@vitest/ui': 3.2.4(vitest@3.2.4) - '@zombienet/orchestrator': 0.0.113(@polkadot/util@14.0.1)(@types/node@25.3.5)(chokidar@3.6.0) - '@zombienet/utils': 0.0.30(@types/node@25.3.5)(chokidar@3.6.0)(typescript@5.8.3) + '@vitest/ui': 3.2.6(vitest@3.2.4) + '@zombienet/orchestrator': 0.0.113(@polkadot/util@14.0.3)(@types/node@25.9.2)(chokidar@3.6.0) + '@zombienet/utils': 0.0.30(@types/node@25.9.2)(chokidar@3.6.0)(typescript@5.8.3) arkregex: 0.0.4 bottleneck: 2.19.5 cfonts: 3.3.1 @@ -5596,23 +5961,23 @@ snapshots: colors: 1.4.0 dockerode: 4.0.9 dotenv: 17.2.3 - effect: 3.19.19 + effect: 3.21.3 ethers: 6.16.0 - ink: 6.8.0(@types/react@19.2.7)(react@19.2.4) + ink: 6.8.0(@types/react@19.2.7)(react@19.2.7) jsonc-parser: 3.3.1 minimatch: 10.1.1 pino: 10.3.1 - polkadot-api: 1.19.2(postcss@8.5.8)(rxjs@7.8.2)(tsx@4.21.0)(yaml@2.8.2) - react: 19.2.4 + polkadot-api: 1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.8.2) + react: 19.2.7 reflect-metadata: 0.2.2 - semver: 7.7.4 + semver: 7.8.2 tiny-invariant: 1.3.3 - tmp: 0.2.5 + tmp: 0.2.7 viem: 2.41.2(typescript@5.8.3)(zod@3.25.76) - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@25.3.5)(@vitest/ui@3.2.4)(jsdom@23.2.0)(tsx@4.21.0)(yaml@2.8.2) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@25.9.2)(@vitest/ui@3.2.6)(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.8.2) web3: 4.16.0(encoding@0.1.13)(typescript@5.8.3)(zod@3.25.76) web3-providers-ws: 4.0.8 - ws: 8.19.0 + ws: 8.21.0 yaml: 2.8.2 yargs: 18.0.0 transitivePeerDependencies: @@ -5628,7 +5993,6 @@ snapshots: - '@vitest/browser' - babel-plugin-macros - better-sqlite3 - - bluebird - bufferutil - canvas - chokidar @@ -5667,21 +6031,21 @@ snapshots: - utf-8-validate - zod - '@moonwall/types@5.18.3(@polkadot/api-base@16.5.4)(@polkadot/api@16.5.4)(@polkadot/keyring@14.0.1(@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1))(@polkadot/util@14.0.1))(@polkadot/types@16.5.4)(@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1))(@polkadot/util@14.0.1)(@types/debug@4.1.12)(@vitest/ui@3.2.4)(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.8)(rxjs@7.8.2)(tsx@4.21.0)(typescript@5.8.3)(yaml@2.8.2)(zod@3.25.76)': + '@moonwall/types@5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@vitest/ui@3.2.6(vitest@3.2.4))(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(typescript@5.8.3)(yaml@2.9.0)(zod@3.25.76)': dependencies: - '@polkadot/api': 16.5.4 - '@polkadot/api-base': 16.5.4 - '@polkadot/keyring': 14.0.1(@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1))(@polkadot/util@14.0.1) - '@polkadot/types': 16.5.4 - '@polkadot/util': 14.0.1 - '@polkadot/util-crypto': 14.0.1(@polkadot/util@14.0.1) - '@types/node': 24.12.0 - '@zombienet/utils': 0.0.30(@types/node@24.12.0)(chokidar@3.6.0)(typescript@5.8.3) + '@polkadot/api': 16.5.6 + '@polkadot/api-base': 16.5.6 + '@polkadot/keyring': 14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3) + '@polkadot/types': 16.5.6 + '@polkadot/util': 14.0.3 + '@polkadot/util-crypto': 14.0.3(@polkadot/util@14.0.3) + '@types/node': 24.13.1 + '@zombienet/utils': 0.0.30(@types/node@24.13.1)(chokidar@3.6.0)(typescript@5.8.3) bottleneck: 2.19.5 ethers: 6.16.0 - polkadot-api: 1.19.2(postcss@8.5.8)(rxjs@7.8.2)(tsx@4.21.0)(yaml@2.8.2) + polkadot-api: 1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.9.0) viem: 2.41.2(typescript@5.8.3)(zod@3.25.76) - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.12.0)(@vitest/ui@3.2.4)(jsdom@23.2.0)(tsx@4.21.0)(yaml@2.8.2) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.13.1)(@vitest/ui@3.2.6(vitest@3.2.4))(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.9.0) web3: 4.16.0(encoding@0.1.13)(typescript@5.8.3)(zod@3.25.76) transitivePeerDependencies: - '@edge-runtime/vm' @@ -5714,45 +6078,30 @@ snapshots: - yaml - zod - '@moonwall/util@5.18.3(@polkadot/api-base@16.5.4)(@polkadot/api-derive@16.5.4)(@polkadot/api@16.5.4)(@polkadot/keyring@14.0.1(@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1))(@polkadot/util@14.0.1))(@polkadot/rpc-provider@16.5.4)(@polkadot/types-codec@16.5.4)(@polkadot/types@16.5.4)(@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1))(@polkadot/util@14.0.1)(@types/debug@4.1.12)(@types/node@25.3.5)(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.8)(rxjs@7.8.2)(tsx@4.21.0)(typescript@5.8.3)(yaml@2.8.2)(zod@3.25.76)': - dependencies: - '@inquirer/prompts': 8.3.0(@types/node@25.3.5) - '@moonwall/types': 5.18.3(@polkadot/api-base@16.5.4)(@polkadot/api@16.5.4)(@polkadot/keyring@14.0.1(@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1))(@polkadot/util@14.0.1))(@polkadot/types@16.5.4)(@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1))(@polkadot/util@14.0.1)(@types/debug@4.1.12)(@vitest/ui@3.2.4)(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.8)(rxjs@7.8.2)(tsx@4.21.0)(typescript@5.8.3)(yaml@2.8.2)(zod@3.25.76) - '@polkadot/api': 16.5.4 - '@polkadot/api-derive': 16.5.4 - '@polkadot/keyring': 14.0.1(@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1))(@polkadot/util@14.0.1) - '@polkadot/rpc-provider': 16.5.4 - '@polkadot/types': 16.5.4 - '@polkadot/types-codec': 16.5.4 - '@polkadot/util': 14.0.1 - '@polkadot/util-crypto': 14.0.1(@polkadot/util@14.0.1) - '@vitest/ui': 3.2.4(vitest@3.2.4) - arkregex: 0.0.4 + '@moonwall/types@5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@vitest/ui@3.2.6)(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(typescript@5.8.3)(yaml@2.8.2)(zod@3.25.76)': + dependencies: + '@polkadot/api': 16.5.6 + '@polkadot/api-base': 16.5.6 + '@polkadot/keyring': 14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3) + '@polkadot/types': 16.5.6 + '@polkadot/util': 14.0.3 + '@polkadot/util-crypto': 14.0.3(@polkadot/util@14.0.3) + '@types/node': 24.13.1 + '@zombienet/utils': 0.0.30(@types/node@24.13.1)(chokidar@3.6.0)(typescript@5.8.3) bottleneck: 2.19.5 - chalk: 5.6.2 - clear: 0.1.0 - colors: 1.4.0 - dotenv: 17.2.3 ethers: 6.16.0 - pino: 10.3.1 - pino-pretty: 13.1.3 - rlp: 3.0.0 - semver: 7.7.4 - tiny-invariant: 1.3.3 + polkadot-api: 1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.8.2) viem: 2.41.2(typescript@5.8.3)(zod@3.25.76) - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@25.3.5)(@vitest/ui@3.2.4)(jsdom@23.2.0)(tsx@4.21.0)(yaml@2.8.2) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.13.1)(@vitest/ui@3.2.6)(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.8.2) web3: 4.16.0(encoding@0.1.13)(typescript@5.8.3)(zod@3.25.76) - ws: 8.19.0 - yargs: 18.0.0 transitivePeerDependencies: - '@edge-runtime/vm' - '@microsoft/api-extractor' - - '@polkadot/api-base' - '@swc/core' - '@swc/wasm' - '@types/debug' - - '@types/node' - '@vitest/browser' + - '@vitest/ui' - bufferutil - chokidar - encoding @@ -5776,29 +6125,153 @@ snapshots: - yaml - zod - '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': - optional: true - - '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': - optional: true - - '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': - optional: true - - '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': - optional: true - - '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': + '@moonwall/util@5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api-derive@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/rpc-provider@16.5.6)(@polkadot/types-codec@16.5.6)(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@types/node@25.9.2)(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(typescript@5.8.3)(yaml@2.8.2)(zod@3.25.76)': + dependencies: + '@inquirer/prompts': 8.5.2(@types/node@25.9.2) + '@moonwall/types': 5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@vitest/ui@3.2.6)(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(typescript@5.8.3)(yaml@2.8.2)(zod@3.25.76) + '@polkadot/api': 16.5.6 + '@polkadot/api-derive': 16.5.6 + '@polkadot/keyring': 14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3) + '@polkadot/rpc-provider': 16.5.6 + '@polkadot/types': 16.5.6 + '@polkadot/types-codec': 16.5.6 + '@polkadot/util': 14.0.3 + '@polkadot/util-crypto': 14.0.3(@polkadot/util@14.0.3) + '@vitest/ui': 3.2.6(vitest@3.2.4) + arkregex: 0.0.4 + bottleneck: 2.19.5 + chalk: 5.6.2 + clear: 0.1.0 + colors: 1.4.0 + dotenv: 17.2.3 + ethers: 6.16.0 + pino: 10.3.1 + pino-pretty: 13.1.3 + rlp: 3.0.0 + semver: 7.8.2 + tiny-invariant: 1.3.3 + viem: 2.41.2(typescript@5.8.3)(zod@3.25.76) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@25.9.2)(@vitest/ui@3.2.6)(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.8.2) + web3: 4.16.0(encoding@0.1.13)(typescript@5.8.3)(zod@3.25.76) + ws: 8.21.0 + yargs: 18.0.0 + transitivePeerDependencies: + - '@edge-runtime/vm' + - '@microsoft/api-extractor' + - '@polkadot/api-base' + - '@swc/core' + - '@swc/wasm' + - '@types/debug' + - '@types/node' + - '@vitest/browser' + - bufferutil + - chokidar + - encoding + - happy-dom + - jiti + - jsdom + - less + - lightningcss + - msw + - postcss + - rxjs + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - typescript + - utf-8-validate + - yaml + - zod + + '@moonwall/util@5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api-derive@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/rpc-provider@16.5.6)(@polkadot/types-codec@16.5.6)(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@types/node@25.9.2)(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(typescript@5.8.3)(yaml@2.9.0)(zod@3.25.76)': + dependencies: + '@inquirer/prompts': 8.5.2(@types/node@25.9.2) + '@moonwall/types': 5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@vitest/ui@3.2.6(vitest@3.2.4))(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(typescript@5.8.3)(yaml@2.9.0)(zod@3.25.76) + '@polkadot/api': 16.5.6 + '@polkadot/api-derive': 16.5.6 + '@polkadot/keyring': 14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3) + '@polkadot/rpc-provider': 16.5.6 + '@polkadot/types': 16.5.6 + '@polkadot/types-codec': 16.5.6 + '@polkadot/util': 14.0.3 + '@polkadot/util-crypto': 14.0.3(@polkadot/util@14.0.3) + '@vitest/ui': 3.2.6(vitest@3.2.4) + arkregex: 0.0.4 + bottleneck: 2.19.5 + chalk: 5.6.2 + clear: 0.1.0 + colors: 1.4.0 + dotenv: 17.2.3 + ethers: 6.16.0 + pino: 10.3.1 + pino-pretty: 13.1.3 + rlp: 3.0.0 + semver: 7.8.2 + tiny-invariant: 1.3.3 + viem: 2.41.2(typescript@5.8.3)(zod@3.25.76) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@25.9.2)(@vitest/ui@3.2.6(vitest@3.2.4))(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.9.0) + web3: 4.16.0(encoding@0.1.13)(typescript@5.8.3)(zod@3.25.76) + ws: 8.21.0 + yargs: 18.0.0 + transitivePeerDependencies: + - '@edge-runtime/vm' + - '@microsoft/api-extractor' + - '@polkadot/api-base' + - '@swc/core' + - '@swc/wasm' + - '@types/debug' + - '@types/node' + - '@vitest/browser' + - bufferutil + - chokidar + - encoding + - happy-dom + - jiti + - jsdom + - less + - lightningcss + - msw + - postcss + - rxjs + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - typescript + - utf-8-validate + - yaml + - zod + + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.4': + optional: true + + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.4': optional: true - '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.4': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.4': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.4': + optional: true + + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.4': optional: true '@noble/ciphers@1.2.1': {} '@noble/ciphers@1.3.0': {} - '@noble/ciphers@2.1.1': {} + '@noble/ciphers@2.2.0': {} '@noble/curves@1.2.0': dependencies: @@ -5830,14 +6303,14 @@ snapshots: '@noble/hashes@1.8.0': {} - '@noble/hashes@2.0.1': {} + '@noble/hashes@2.2.0': {} '@noble/secp256k1@1.7.2': {} '@npmcli/fs@1.1.1': dependencies: '@gar/promisify': 1.1.3 - semver: 7.7.4 + semver: 7.8.2 optional: true '@npmcli/move-file@1.1.2': @@ -5852,7 +6325,7 @@ snapshots: dependencies: '@octokit/auth-token': 6.0.0 '@octokit/graphql': 9.0.3 - '@octokit/request': 10.0.8 + '@octokit/request': 10.0.10 '@octokit/request-error': 7.1.0 '@octokit/types': 16.0.0 before-after-hook: 4.0.0 @@ -5865,7 +6338,7 @@ snapshots: '@octokit/graphql@9.0.3': dependencies: - '@octokit/request': 10.0.8 + '@octokit/request': 10.0.10 '@octokit/types': 16.0.0 universal-user-agent: 7.0.3 @@ -5889,13 +6362,13 @@ snapshots: dependencies: '@octokit/types': 16.0.0 - '@octokit/request@10.0.8': + '@octokit/request@10.0.10': dependencies: '@octokit/endpoint': 11.0.3 '@octokit/request-error': 7.1.0 '@octokit/types': 16.0.0 - fast-content-type-parse: 3.0.0 - json-with-bigint: 3.5.7 + content-type: 2.0.0 + json-with-bigint: 3.5.8 universal-user-agent: 7.0.3 '@octokit/rest@22.0.1': @@ -5953,7 +6426,7 @@ snapshots: detect-libc: 2.1.2 is-glob: 4.0.3 node-addon-api: 7.1.1 - picomatch: 4.0.3 + picomatch: 4.0.4 optionalDependencies: '@parcel/watcher-android-arm64': 2.5.6 '@parcel/watcher-darwin-arm64': 2.5.6 @@ -5988,7 +6461,7 @@ snapshots: '@polka/url@1.0.0-next.29': {} - '@polkadot-api/cli@0.15.2(postcss@8.5.8)(tsx@4.21.0)(yaml@2.8.2)': + '@polkadot-api/cli@0.15.2(postcss@8.5.15)(tsx@4.22.4)(yaml@2.8.2)': dependencies: '@commander-js/extra-typings': 14.0.0(commander@14.0.3) '@polkadot-api/codegen': 0.19.1 @@ -6006,15 +6479,55 @@ snapshots: '@polkadot-api/utils': 0.2.0 '@polkadot-api/wasm-executor': 0.2.3 '@polkadot-api/ws-provider': 0.6.2 - '@types/node': 24.12.0 + '@types/node': 24.13.1 commander: 14.0.3 execa: 9.6.1 fs.promises.exists: 1.1.4 - ora: 9.3.0 + ora: 9.4.0 read-pkg: 9.0.1 rxjs: 7.8.2 tsc-prog: 2.3.0(typescript@5.9.3) - tsup: 8.5.1(postcss@8.5.8)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) + tsup: 8.5.1(postcss@8.5.15)(tsx@4.22.4)(typescript@5.9.3)(yaml@2.8.2) + typescript: 5.9.3 + write-package: 7.2.0 + transitivePeerDependencies: + - '@microsoft/api-extractor' + - '@swc/core' + - bufferutil + - jiti + - postcss + - supports-color + - tsx + - utf-8-validate + - yaml + + '@polkadot-api/cli@0.15.2(postcss@8.5.15)(tsx@4.22.4)(yaml@2.9.0)': + dependencies: + '@commander-js/extra-typings': 14.0.0(commander@14.0.3) + '@polkadot-api/codegen': 0.19.1 + '@polkadot-api/ink-contracts': 0.4.0 + '@polkadot-api/json-rpc-provider': 0.0.4 + '@polkadot-api/known-chains': 0.9.11 + '@polkadot-api/legacy-provider': 0.3.2(rxjs@7.8.2) + '@polkadot-api/metadata-compatibility': 0.3.6 + '@polkadot-api/observable-client': 0.15.1(rxjs@7.8.2) + '@polkadot-api/polkadot-sdk-compat': 2.3.3 + '@polkadot-api/sm-provider': 0.1.11(@polkadot-api/smoldot@0.3.14) + '@polkadot-api/smoldot': 0.3.14 + '@polkadot-api/substrate-bindings': 0.16.3 + '@polkadot-api/substrate-client': 0.4.7 + '@polkadot-api/utils': 0.2.0 + '@polkadot-api/wasm-executor': 0.2.3 + '@polkadot-api/ws-provider': 0.6.2 + '@types/node': 24.13.1 + commander: 14.0.3 + execa: 9.6.1 + fs.promises.exists: 1.1.4 + ora: 9.4.0 + read-pkg: 9.0.1 + rxjs: 7.8.2 + tsc-prog: 2.3.0(typescript@5.9.3) + tsup: 8.5.1(postcss@8.5.15)(tsx@4.22.4)(typescript@5.9.3)(yaml@2.9.0) typescript: 5.9.3 write-package: 7.2.0 transitivePeerDependencies: @@ -6036,9 +6549,14 @@ snapshots: '@polkadot-api/substrate-bindings': 0.16.3 '@polkadot-api/utils': 0.2.0 - '@polkadot-api/descriptors@file:.papi/descriptors(polkadot-api@1.19.2(postcss@8.5.8)(rxjs@7.8.2)(tsx@4.21.0)(yaml@2.8.2))': + '@polkadot-api/common-sdk-utils@0.1.0(polkadot-api@1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.9.0))(rxjs@7.8.2)': dependencies: - polkadot-api: 1.19.2(postcss@8.5.8)(rxjs@7.8.2)(tsx@4.21.0)(yaml@2.8.2) + polkadot-api: 1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.9.0) + rxjs: 7.8.2 + + '@polkadot-api/descriptors@file:.papi/descriptors(polkadot-api@1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.9.0))': + dependencies: + polkadot-api: 1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.9.0) optional: true '@polkadot-api/ink-contracts@0.4.0': @@ -6047,6 +6565,12 @@ snapshots: '@polkadot-api/substrate-bindings': 0.16.3 '@polkadot-api/utils': 0.2.0 + '@polkadot-api/ink-contracts@0.4.6': + dependencies: + '@polkadot-api/metadata-builders': 0.13.9 + '@polkadot-api/substrate-bindings': 0.17.0 + '@polkadot-api/utils': 0.2.0 + '@polkadot-api/json-rpc-provider-proxy@0.1.0': optional: true @@ -6077,11 +6601,11 @@ snapshots: '@polkadot-api/substrate-bindings': 0.16.3 '@polkadot-api/utils': 0.2.0 - '@polkadot-api/merkleize-metadata@1.1.29': + '@polkadot-api/merkleize-metadata@1.2.3': dependencies: - '@polkadot-api/metadata-builders': 0.13.9 - '@polkadot-api/substrate-bindings': 0.17.0 - '@polkadot-api/utils': 0.2.0 + '@polkadot-api/metadata-builders': 0.14.3 + '@polkadot-api/substrate-bindings': 0.20.3 + '@polkadot-api/utils': 0.4.0 '@polkadot-api/metadata-builders@0.13.5': dependencies: @@ -6093,6 +6617,11 @@ snapshots: '@polkadot-api/substrate-bindings': 0.17.0 '@polkadot-api/utils': 0.2.0 + '@polkadot-api/metadata-builders@0.14.3': + dependencies: + '@polkadot-api/substrate-bindings': 0.20.3 + '@polkadot-api/utils': 0.4.0 + '@polkadot-api/metadata-builders@0.3.2': dependencies: '@polkadot-api/substrate-bindings': 0.6.0 @@ -6139,9 +6668,25 @@ snapshots: dependencies: '@polkadot-api/json-rpc-provider': 0.0.4 + '@polkadot-api/sdk-ink@0.5.1(@polkadot-api/ink-contracts@0.4.6)(polkadot-api@1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.9.0))(rxjs@7.8.2)(typescript@5.8.3)(zod@3.25.76)': + dependencies: + '@ethereumjs/rlp': 10.1.2 + '@polkadot-api/common-sdk-utils': 0.1.0(polkadot-api@1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.9.0))(rxjs@7.8.2) + '@polkadot-api/ink-contracts': 0.4.6 + '@polkadot-api/substrate-bindings': 0.16.6 + abitype: 1.2.4(typescript@5.8.3)(zod@3.25.76) + polkadot-api: 1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.9.0) + rxjs: 7.8.2 + viem: 2.38.0(typescript@5.8.3)(zod@3.25.76) + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + '@polkadot-api/signer@0.2.9': dependencies: - '@noble/hashes': 2.0.1 + '@noble/hashes': 2.2.0 '@polkadot-api/merkleize-metadata': 1.1.25 '@polkadot-api/polkadot-signer': 0.1.6 '@polkadot-api/signers-common': 0.1.16 @@ -6163,7 +6708,7 @@ snapshots: '@polkadot-api/smoldot@0.3.14': dependencies: - '@types/node': 24.12.0 + '@types/node': 24.13.1 smoldot: 2.0.39 transitivePeerDependencies: - bufferutil @@ -6171,16 +6716,30 @@ snapshots: '@polkadot-api/substrate-bindings@0.16.3': dependencies: - '@noble/hashes': 2.0.1 + '@noble/hashes': 2.2.0 + '@polkadot-api/utils': 0.2.0 + '@scure/base': 2.2.0 + scale-ts: 1.6.1 + + '@polkadot-api/substrate-bindings@0.16.6': + dependencies: + '@noble/hashes': 2.2.0 '@polkadot-api/utils': 0.2.0 - '@scure/base': 2.0.0 + '@scure/base': 2.2.0 scale-ts: 1.6.1 '@polkadot-api/substrate-bindings@0.17.0': dependencies: - '@noble/hashes': 2.0.1 + '@noble/hashes': 2.2.0 '@polkadot-api/utils': 0.2.0 - '@scure/base': 2.0.0 + '@scure/base': 2.2.0 + scale-ts: 1.6.1 + + '@polkadot-api/substrate-bindings@0.20.3': + dependencies: + '@noble/hashes': 2.2.0 + '@polkadot-api/utils': 0.4.0 + '@scure/base': 2.2.0 scale-ts: 1.6.1 '@polkadot-api/substrate-bindings@0.6.0': @@ -6208,6 +6767,8 @@ snapshots: '@polkadot-api/utils@0.2.0': {} + '@polkadot-api/utils@0.4.0': {} + '@polkadot-api/wasm-executor@0.2.3': {} '@polkadot-api/ws-provider@0.6.2': @@ -6215,7 +6776,7 @@ snapshots: '@polkadot-api/json-rpc-provider': 0.0.4 '@polkadot-api/json-rpc-provider-proxy': 0.2.4 '@types/ws': 8.18.1 - ws: 8.19.0 + ws: 8.21.0 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -6234,14 +6795,14 @@ snapshots: - supports-color - utf-8-validate - '@polkadot/api-augment@16.5.4': + '@polkadot/api-augment@16.5.6': dependencies: - '@polkadot/api-base': 16.5.4 - '@polkadot/rpc-augment': 16.5.4 - '@polkadot/types': 16.5.4 - '@polkadot/types-augment': 16.5.4 - '@polkadot/types-codec': 16.5.4 - '@polkadot/util': 14.0.1 + '@polkadot/api-base': 16.5.6 + '@polkadot/rpc-augment': 16.5.6 + '@polkadot/types': 16.5.6 + '@polkadot/types-augment': 16.5.6 + '@polkadot/types-codec': 16.5.6 + '@polkadot/util': 14.0.3 tslib: 2.8.1 transitivePeerDependencies: - bufferutil @@ -6260,11 +6821,11 @@ snapshots: - supports-color - utf-8-validate - '@polkadot/api-base@16.5.4': + '@polkadot/api-base@16.5.6': dependencies: - '@polkadot/rpc-core': 16.5.4 - '@polkadot/types': 16.5.4 - '@polkadot/util': 14.0.1 + '@polkadot/rpc-core': 16.5.6 + '@polkadot/types': 16.5.6 + '@polkadot/util': 14.0.3 rxjs: 7.8.2 tslib: 2.8.1 transitivePeerDependencies: @@ -6289,16 +6850,16 @@ snapshots: - supports-color - utf-8-validate - '@polkadot/api-derive@16.5.4': + '@polkadot/api-derive@16.5.6': dependencies: - '@polkadot/api': 16.5.4 - '@polkadot/api-augment': 16.5.4 - '@polkadot/api-base': 16.5.4 - '@polkadot/rpc-core': 16.5.4 - '@polkadot/types': 16.5.4 - '@polkadot/types-codec': 16.5.4 - '@polkadot/util': 14.0.1 - '@polkadot/util-crypto': 14.0.1(@polkadot/util@14.0.1) + '@polkadot/api': 16.5.6 + '@polkadot/api-augment': 16.5.6 + '@polkadot/api-base': 16.5.6 + '@polkadot/rpc-core': 16.5.6 + '@polkadot/types': 16.5.6 + '@polkadot/types-codec': 16.5.6 + '@polkadot/util': 14.0.3 + '@polkadot/util-crypto': 14.0.3(@polkadot/util@14.0.3) rxjs: 7.8.2 tslib: 2.8.1 transitivePeerDependencies: @@ -6311,7 +6872,7 @@ snapshots: '@polkadot/api-augment': 14.3.1 '@polkadot/api-base': 14.3.1 '@polkadot/api-derive': 14.3.1 - '@polkadot/keyring': 13.5.9(@polkadot/util-crypto@13.5.9(@polkadot/util@14.0.1))(@polkadot/util@13.5.9) + '@polkadot/keyring': 13.5.9(@polkadot/util-crypto@13.5.9(@polkadot/util@13.5.9))(@polkadot/util@13.5.9) '@polkadot/rpc-augment': 14.3.1 '@polkadot/rpc-core': 14.3.1 '@polkadot/rpc-provider': 14.3.1 @@ -6330,22 +6891,22 @@ snapshots: - supports-color - utf-8-validate - '@polkadot/api@16.5.4': - dependencies: - '@polkadot/api-augment': 16.5.4 - '@polkadot/api-base': 16.5.4 - '@polkadot/api-derive': 16.5.4 - '@polkadot/keyring': 14.0.1(@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1))(@polkadot/util@14.0.1) - '@polkadot/rpc-augment': 16.5.4 - '@polkadot/rpc-core': 16.5.4 - '@polkadot/rpc-provider': 16.5.4 - '@polkadot/types': 16.5.4 - '@polkadot/types-augment': 16.5.4 - '@polkadot/types-codec': 16.5.4 - '@polkadot/types-create': 16.5.4 - '@polkadot/types-known': 16.5.4 - '@polkadot/util': 14.0.1 - '@polkadot/util-crypto': 14.0.1(@polkadot/util@14.0.1) + '@polkadot/api@16.5.6': + dependencies: + '@polkadot/api-augment': 16.5.6 + '@polkadot/api-base': 16.5.6 + '@polkadot/api-derive': 16.5.6 + '@polkadot/keyring': 14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3) + '@polkadot/rpc-augment': 16.5.6 + '@polkadot/rpc-core': 16.5.6 + '@polkadot/rpc-provider': 16.5.6 + '@polkadot/types': 16.5.6 + '@polkadot/types-augment': 16.5.6 + '@polkadot/types-codec': 16.5.6 + '@polkadot/types-create': 16.5.6 + '@polkadot/types-known': 16.5.6 + '@polkadot/util': 14.0.3 + '@polkadot/util-crypto': 14.0.3(@polkadot/util@14.0.3) eventemitter3: 5.0.4 rxjs: 7.8.2 tslib: 2.8.1 @@ -6354,22 +6915,22 @@ snapshots: - supports-color - utf-8-validate - '@polkadot/keyring@13.5.9(@polkadot/util-crypto@13.5.9(@polkadot/util@14.0.1))(@polkadot/util@13.5.9)': + '@polkadot/keyring@13.5.9(@polkadot/util-crypto@13.5.9(@polkadot/util@13.5.9))(@polkadot/util@13.5.9)': dependencies: '@polkadot/util': 13.5.9 - '@polkadot/util-crypto': 13.5.9(@polkadot/util@14.0.1) + '@polkadot/util-crypto': 13.5.9(@polkadot/util@13.5.9) tslib: 2.8.1 - '@polkadot/keyring@13.5.9(@polkadot/util-crypto@13.5.9(@polkadot/util@14.0.1))(@polkadot/util@14.0.1)': + '@polkadot/keyring@13.5.9(@polkadot/util-crypto@13.5.9(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)': dependencies: - '@polkadot/util': 14.0.1 - '@polkadot/util-crypto': 13.5.9(@polkadot/util@14.0.1) + '@polkadot/util': 14.0.3 + '@polkadot/util-crypto': 13.5.9(@polkadot/util@14.0.3) tslib: 2.8.1 - '@polkadot/keyring@14.0.1(@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1))(@polkadot/util@14.0.1)': + '@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)': dependencies: - '@polkadot/util': 14.0.1 - '@polkadot/util-crypto': 14.0.1(@polkadot/util@14.0.1) + '@polkadot/util': 14.0.3 + '@polkadot/util-crypto': 14.0.3(@polkadot/util@14.0.3) tslib: 2.8.1 '@polkadot/networks@13.5.9': @@ -6378,9 +6939,9 @@ snapshots: '@substrate/ss58-registry': 1.51.0 tslib: 2.8.1 - '@polkadot/networks@14.0.1': + '@polkadot/networks@14.0.3': dependencies: - '@polkadot/util': 14.0.1 + '@polkadot/util': 14.0.3 '@substrate/ss58-registry': 1.51.0 tslib: 2.8.1 @@ -6396,12 +6957,12 @@ snapshots: - supports-color - utf-8-validate - '@polkadot/rpc-augment@16.5.4': + '@polkadot/rpc-augment@16.5.6': dependencies: - '@polkadot/rpc-core': 16.5.4 - '@polkadot/types': 16.5.4 - '@polkadot/types-codec': 16.5.4 - '@polkadot/util': 14.0.1 + '@polkadot/rpc-core': 16.5.6 + '@polkadot/types': 16.5.6 + '@polkadot/types-codec': 16.5.6 + '@polkadot/util': 14.0.3 tslib: 2.8.1 transitivePeerDependencies: - bufferutil @@ -6421,12 +6982,12 @@ snapshots: - supports-color - utf-8-validate - '@polkadot/rpc-core@16.5.4': + '@polkadot/rpc-core@16.5.6': dependencies: - '@polkadot/rpc-augment': 16.5.4 - '@polkadot/rpc-provider': 16.5.4 - '@polkadot/types': 16.5.4 - '@polkadot/util': 14.0.1 + '@polkadot/rpc-augment': 16.5.6 + '@polkadot/rpc-provider': 16.5.6 + '@polkadot/types': 16.5.6 + '@polkadot/util': 14.0.3 rxjs: 7.8.2 tslib: 2.8.1 transitivePeerDependencies: @@ -6436,7 +6997,7 @@ snapshots: '@polkadot/rpc-provider@14.3.1': dependencies: - '@polkadot/keyring': 13.5.9(@polkadot/util-crypto@13.5.9(@polkadot/util@14.0.1))(@polkadot/util@13.5.9) + '@polkadot/keyring': 13.5.9(@polkadot/util-crypto@13.5.9(@polkadot/util@13.5.9))(@polkadot/util@13.5.9) '@polkadot/types': 14.3.1 '@polkadot/types-support': 14.3.1 '@polkadot/util': 13.5.9 @@ -6455,16 +7016,16 @@ snapshots: - supports-color - utf-8-validate - '@polkadot/rpc-provider@16.5.4': + '@polkadot/rpc-provider@16.5.6': dependencies: - '@polkadot/keyring': 14.0.1(@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1))(@polkadot/util@14.0.1) - '@polkadot/types': 16.5.4 - '@polkadot/types-support': 16.5.4 - '@polkadot/util': 14.0.1 - '@polkadot/util-crypto': 14.0.1(@polkadot/util@14.0.1) - '@polkadot/x-fetch': 14.0.1 - '@polkadot/x-global': 14.0.1 - '@polkadot/x-ws': 14.0.1 + '@polkadot/keyring': 14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3) + '@polkadot/types': 16.5.6 + '@polkadot/types-support': 16.5.6 + '@polkadot/util': 14.0.3 + '@polkadot/util-crypto': 14.0.3(@polkadot/util@14.0.3) + '@polkadot/x-fetch': 14.0.3 + '@polkadot/x-global': 14.0.3 + '@polkadot/x-ws': 14.0.3 eventemitter3: 5.0.4 mock-socket: 9.3.1 nock: 13.5.6 @@ -6483,11 +7044,11 @@ snapshots: '@polkadot/util': 13.5.9 tslib: 2.8.1 - '@polkadot/types-augment@16.5.4': + '@polkadot/types-augment@16.5.6': dependencies: - '@polkadot/types': 16.5.4 - '@polkadot/types-codec': 16.5.4 - '@polkadot/util': 14.0.1 + '@polkadot/types': 16.5.6 + '@polkadot/types-codec': 16.5.6 + '@polkadot/util': 14.0.3 tslib: 2.8.1 '@polkadot/types-codec@14.3.1': @@ -6496,10 +7057,10 @@ snapshots: '@polkadot/x-bigint': 13.5.9 tslib: 2.8.1 - '@polkadot/types-codec@16.5.4': + '@polkadot/types-codec@16.5.6': dependencies: - '@polkadot/util': 14.0.1 - '@polkadot/x-bigint': 14.0.1 + '@polkadot/util': 14.0.3 + '@polkadot/x-bigint': 14.0.3 tslib: 2.8.1 '@polkadot/types-create@14.3.1': @@ -6508,10 +7069,10 @@ snapshots: '@polkadot/util': 13.5.9 tslib: 2.8.1 - '@polkadot/types-create@16.5.4': + '@polkadot/types-create@16.5.6': dependencies: - '@polkadot/types-codec': 16.5.4 - '@polkadot/util': 14.0.1 + '@polkadot/types-codec': 16.5.6 + '@polkadot/util': 14.0.3 tslib: 2.8.1 '@polkadot/types-known@14.3.1': @@ -6523,13 +7084,13 @@ snapshots: '@polkadot/util': 13.5.9 tslib: 2.8.1 - '@polkadot/types-known@16.5.4': + '@polkadot/types-known@16.5.6': dependencies: - '@polkadot/networks': 14.0.1 - '@polkadot/types': 16.5.4 - '@polkadot/types-codec': 16.5.4 - '@polkadot/types-create': 16.5.4 - '@polkadot/util': 14.0.1 + '@polkadot/networks': 14.0.3 + '@polkadot/types': 16.5.6 + '@polkadot/types-codec': 16.5.6 + '@polkadot/types-create': 16.5.6 + '@polkadot/util': 14.0.3 tslib: 2.8.1 '@polkadot/types-support@14.3.1': @@ -6537,14 +7098,14 @@ snapshots: '@polkadot/util': 13.5.9 tslib: 2.8.1 - '@polkadot/types-support@16.5.4': + '@polkadot/types-support@16.5.6': dependencies: - '@polkadot/util': 14.0.1 + '@polkadot/util': 14.0.3 tslib: 2.8.1 '@polkadot/types@14.3.1': dependencies: - '@polkadot/keyring': 13.5.9(@polkadot/util-crypto@13.5.9(@polkadot/util@14.0.1))(@polkadot/util@13.5.9) + '@polkadot/keyring': 13.5.9(@polkadot/util-crypto@13.5.9(@polkadot/util@13.5.9))(@polkadot/util@13.5.9) '@polkadot/types-augment': 14.3.1 '@polkadot/types-codec': 14.3.1 '@polkadot/types-create': 14.3.1 @@ -6553,14 +7114,14 @@ snapshots: rxjs: 7.8.2 tslib: 2.8.1 - '@polkadot/types@16.5.4': + '@polkadot/types@16.5.6': dependencies: - '@polkadot/keyring': 14.0.1(@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1))(@polkadot/util@14.0.1) - '@polkadot/types-augment': 16.5.4 - '@polkadot/types-codec': 16.5.4 - '@polkadot/types-create': 16.5.4 - '@polkadot/util': 14.0.1 - '@polkadot/util-crypto': 14.0.1(@polkadot/util@14.0.1) + '@polkadot/keyring': 14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3) + '@polkadot/types-augment': 16.5.6 + '@polkadot/types-codec': 16.5.6 + '@polkadot/types-create': 16.5.6 + '@polkadot/util': 14.0.3 + '@polkadot/util-crypto': 14.0.3(@polkadot/util@14.0.3) rxjs: 7.8.2 tslib: 2.8.1 @@ -6570,36 +7131,36 @@ snapshots: '@noble/hashes': 1.8.0 '@polkadot/networks': 13.5.9 '@polkadot/util': 13.5.9 - '@polkadot/wasm-crypto': 7.5.4(@polkadot/util@13.5.9)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@13.5.9)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1))) + '@polkadot/wasm-crypto': 7.5.4(@polkadot/util@13.5.9)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@13.5.9)(@polkadot/wasm-util@7.5.4(@polkadot/util@13.5.9))) '@polkadot/wasm-util': 7.5.4(@polkadot/util@13.5.9) '@polkadot/x-bigint': 13.5.9 - '@polkadot/x-randomvalues': 13.5.9(@polkadot/util@13.5.9)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)) + '@polkadot/x-randomvalues': 13.5.9(@polkadot/util@13.5.9)(@polkadot/wasm-util@7.5.4(@polkadot/util@13.5.9)) '@scure/base': 1.2.6 tslib: 2.8.1 - '@polkadot/util-crypto@13.5.9(@polkadot/util@14.0.1)': + '@polkadot/util-crypto@13.5.9(@polkadot/util@14.0.3)': dependencies: '@noble/curves': 1.9.7 '@noble/hashes': 1.8.0 '@polkadot/networks': 13.5.9 - '@polkadot/util': 14.0.1 - '@polkadot/wasm-crypto': 7.5.4(@polkadot/util@14.0.1)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1))) - '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.1) + '@polkadot/util': 14.0.3 + '@polkadot/wasm-crypto': 7.5.4(@polkadot/util@14.0.3)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3))) + '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.3) '@polkadot/x-bigint': 13.5.9 - '@polkadot/x-randomvalues': 13.5.9(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)) + '@polkadot/x-randomvalues': 13.5.9(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3)) '@scure/base': 1.2.6 tslib: 2.8.1 - '@polkadot/util-crypto@14.0.1(@polkadot/util@14.0.1)': + '@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3)': dependencies: '@noble/curves': 1.9.7 '@noble/hashes': 1.8.0 - '@polkadot/networks': 14.0.1 - '@polkadot/util': 14.0.1 - '@polkadot/wasm-crypto': 7.5.4(@polkadot/util@14.0.1)(@polkadot/x-randomvalues@14.0.1(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1))) - '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.1) - '@polkadot/x-bigint': 14.0.1 - '@polkadot/x-randomvalues': 14.0.1(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)) + '@polkadot/networks': 14.0.3 + '@polkadot/util': 14.0.3 + '@polkadot/wasm-crypto': 7.5.4(@polkadot/util@14.0.3)(@polkadot/x-randomvalues@14.0.3(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3))) + '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.3) + '@polkadot/x-bigint': 14.0.3 + '@polkadot/x-randomvalues': 14.0.3(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3)) '@scure/base': 1.2.6 '@scure/sr25519': 0.2.0 tslib: 2.8.1 @@ -6614,35 +7175,35 @@ snapshots: bn.js: 5.2.3 tslib: 2.8.1 - '@polkadot/util@14.0.1': + '@polkadot/util@14.0.3': dependencies: - '@polkadot/x-bigint': 14.0.1 - '@polkadot/x-global': 14.0.1 - '@polkadot/x-textdecoder': 14.0.1 - '@polkadot/x-textencoder': 14.0.1 + '@polkadot/x-bigint': 14.0.3 + '@polkadot/x-global': 14.0.3 + '@polkadot/x-textdecoder': 14.0.3 + '@polkadot/x-textencoder': 14.0.3 '@types/bn.js': 5.2.0 bn.js: 5.2.3 tslib: 2.8.1 - '@polkadot/wasm-bridge@7.5.4(@polkadot/util@13.5.9)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@13.5.9)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)))': + '@polkadot/wasm-bridge@7.5.4(@polkadot/util@13.5.9)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@13.5.9)(@polkadot/wasm-util@7.5.4(@polkadot/util@13.5.9)))': dependencies: '@polkadot/util': 13.5.9 '@polkadot/wasm-util': 7.5.4(@polkadot/util@13.5.9) - '@polkadot/x-randomvalues': 13.5.9(@polkadot/util@13.5.9)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)) + '@polkadot/x-randomvalues': 13.5.9(@polkadot/util@13.5.9)(@polkadot/wasm-util@7.5.4(@polkadot/util@13.5.9)) tslib: 2.8.1 - '@polkadot/wasm-bridge@7.5.4(@polkadot/util@14.0.1)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)))': + '@polkadot/wasm-bridge@7.5.4(@polkadot/util@14.0.3)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3)))': dependencies: - '@polkadot/util': 14.0.1 - '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.1) - '@polkadot/x-randomvalues': 13.5.9(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)) + '@polkadot/util': 14.0.3 + '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.3) + '@polkadot/x-randomvalues': 13.5.9(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3)) tslib: 2.8.1 - '@polkadot/wasm-bridge@7.5.4(@polkadot/util@14.0.1)(@polkadot/x-randomvalues@14.0.1(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)))': + '@polkadot/wasm-bridge@7.5.4(@polkadot/util@14.0.3)(@polkadot/x-randomvalues@14.0.3(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3)))': dependencies: - '@polkadot/util': 14.0.1 - '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.1) - '@polkadot/x-randomvalues': 14.0.1(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)) + '@polkadot/util': 14.0.3 + '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.3) + '@polkadot/x-randomvalues': 14.0.3(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3)) tslib: 2.8.1 '@polkadot/wasm-crypto-asmjs@7.5.4(@polkadot/util@13.5.9)': @@ -6650,39 +7211,39 @@ snapshots: '@polkadot/util': 13.5.9 tslib: 2.8.1 - '@polkadot/wasm-crypto-asmjs@7.5.4(@polkadot/util@14.0.1)': + '@polkadot/wasm-crypto-asmjs@7.5.4(@polkadot/util@14.0.3)': dependencies: - '@polkadot/util': 14.0.1 + '@polkadot/util': 14.0.3 tslib: 2.8.1 - '@polkadot/wasm-crypto-init@7.5.4(@polkadot/util@13.5.9)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@13.5.9)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)))': + '@polkadot/wasm-crypto-init@7.5.4(@polkadot/util@13.5.9)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@13.5.9)(@polkadot/wasm-util@7.5.4(@polkadot/util@13.5.9)))': dependencies: '@polkadot/util': 13.5.9 - '@polkadot/wasm-bridge': 7.5.4(@polkadot/util@13.5.9)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@13.5.9)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1))) + '@polkadot/wasm-bridge': 7.5.4(@polkadot/util@13.5.9)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@13.5.9)(@polkadot/wasm-util@7.5.4(@polkadot/util@13.5.9))) '@polkadot/wasm-crypto-asmjs': 7.5.4(@polkadot/util@13.5.9) '@polkadot/wasm-crypto-wasm': 7.5.4(@polkadot/util@13.5.9) '@polkadot/wasm-util': 7.5.4(@polkadot/util@13.5.9) - '@polkadot/x-randomvalues': 13.5.9(@polkadot/util@13.5.9)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)) + '@polkadot/x-randomvalues': 13.5.9(@polkadot/util@13.5.9)(@polkadot/wasm-util@7.5.4(@polkadot/util@13.5.9)) tslib: 2.8.1 - '@polkadot/wasm-crypto-init@7.5.4(@polkadot/util@14.0.1)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)))': + '@polkadot/wasm-crypto-init@7.5.4(@polkadot/util@14.0.3)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3)))': dependencies: - '@polkadot/util': 14.0.1 - '@polkadot/wasm-bridge': 7.5.4(@polkadot/util@14.0.1)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1))) - '@polkadot/wasm-crypto-asmjs': 7.5.4(@polkadot/util@14.0.1) - '@polkadot/wasm-crypto-wasm': 7.5.4(@polkadot/util@14.0.1) - '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.1) - '@polkadot/x-randomvalues': 13.5.9(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)) + '@polkadot/util': 14.0.3 + '@polkadot/wasm-bridge': 7.5.4(@polkadot/util@14.0.3)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3))) + '@polkadot/wasm-crypto-asmjs': 7.5.4(@polkadot/util@14.0.3) + '@polkadot/wasm-crypto-wasm': 7.5.4(@polkadot/util@14.0.3) + '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.3) + '@polkadot/x-randomvalues': 13.5.9(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3)) tslib: 2.8.1 - '@polkadot/wasm-crypto-init@7.5.4(@polkadot/util@14.0.1)(@polkadot/x-randomvalues@14.0.1(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)))': + '@polkadot/wasm-crypto-init@7.5.4(@polkadot/util@14.0.3)(@polkadot/x-randomvalues@14.0.3(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3)))': dependencies: - '@polkadot/util': 14.0.1 - '@polkadot/wasm-bridge': 7.5.4(@polkadot/util@14.0.1)(@polkadot/x-randomvalues@14.0.1(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1))) - '@polkadot/wasm-crypto-asmjs': 7.5.4(@polkadot/util@14.0.1) - '@polkadot/wasm-crypto-wasm': 7.5.4(@polkadot/util@14.0.1) - '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.1) - '@polkadot/x-randomvalues': 14.0.1(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)) + '@polkadot/util': 14.0.3 + '@polkadot/wasm-bridge': 7.5.4(@polkadot/util@14.0.3)(@polkadot/x-randomvalues@14.0.3(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3))) + '@polkadot/wasm-crypto-asmjs': 7.5.4(@polkadot/util@14.0.3) + '@polkadot/wasm-crypto-wasm': 7.5.4(@polkadot/util@14.0.3) + '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.3) + '@polkadot/x-randomvalues': 14.0.3(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3)) tslib: 2.8.1 '@polkadot/wasm-crypto-wasm@7.5.4(@polkadot/util@13.5.9)': @@ -6691,43 +7252,43 @@ snapshots: '@polkadot/wasm-util': 7.5.4(@polkadot/util@13.5.9) tslib: 2.8.1 - '@polkadot/wasm-crypto-wasm@7.5.4(@polkadot/util@14.0.1)': + '@polkadot/wasm-crypto-wasm@7.5.4(@polkadot/util@14.0.3)': dependencies: - '@polkadot/util': 14.0.1 - '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.1) + '@polkadot/util': 14.0.3 + '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.3) tslib: 2.8.1 - '@polkadot/wasm-crypto@7.5.4(@polkadot/util@13.5.9)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@13.5.9)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)))': + '@polkadot/wasm-crypto@7.5.4(@polkadot/util@13.5.9)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@13.5.9)(@polkadot/wasm-util@7.5.4(@polkadot/util@13.5.9)))': dependencies: '@polkadot/util': 13.5.9 - '@polkadot/wasm-bridge': 7.5.4(@polkadot/util@13.5.9)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@13.5.9)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1))) + '@polkadot/wasm-bridge': 7.5.4(@polkadot/util@13.5.9)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@13.5.9)(@polkadot/wasm-util@7.5.4(@polkadot/util@13.5.9))) '@polkadot/wasm-crypto-asmjs': 7.5.4(@polkadot/util@13.5.9) - '@polkadot/wasm-crypto-init': 7.5.4(@polkadot/util@13.5.9)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@13.5.9)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1))) + '@polkadot/wasm-crypto-init': 7.5.4(@polkadot/util@13.5.9)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@13.5.9)(@polkadot/wasm-util@7.5.4(@polkadot/util@13.5.9))) '@polkadot/wasm-crypto-wasm': 7.5.4(@polkadot/util@13.5.9) '@polkadot/wasm-util': 7.5.4(@polkadot/util@13.5.9) - '@polkadot/x-randomvalues': 13.5.9(@polkadot/util@13.5.9)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)) + '@polkadot/x-randomvalues': 13.5.9(@polkadot/util@13.5.9)(@polkadot/wasm-util@7.5.4(@polkadot/util@13.5.9)) tslib: 2.8.1 - '@polkadot/wasm-crypto@7.5.4(@polkadot/util@14.0.1)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)))': + '@polkadot/wasm-crypto@7.5.4(@polkadot/util@14.0.3)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3)))': dependencies: - '@polkadot/util': 14.0.1 - '@polkadot/wasm-bridge': 7.5.4(@polkadot/util@14.0.1)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1))) - '@polkadot/wasm-crypto-asmjs': 7.5.4(@polkadot/util@14.0.1) - '@polkadot/wasm-crypto-init': 7.5.4(@polkadot/util@14.0.1)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1))) - '@polkadot/wasm-crypto-wasm': 7.5.4(@polkadot/util@14.0.1) - '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.1) - '@polkadot/x-randomvalues': 13.5.9(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)) + '@polkadot/util': 14.0.3 + '@polkadot/wasm-bridge': 7.5.4(@polkadot/util@14.0.3)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3))) + '@polkadot/wasm-crypto-asmjs': 7.5.4(@polkadot/util@14.0.3) + '@polkadot/wasm-crypto-init': 7.5.4(@polkadot/util@14.0.3)(@polkadot/x-randomvalues@13.5.9(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3))) + '@polkadot/wasm-crypto-wasm': 7.5.4(@polkadot/util@14.0.3) + '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.3) + '@polkadot/x-randomvalues': 13.5.9(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3)) tslib: 2.8.1 - '@polkadot/wasm-crypto@7.5.4(@polkadot/util@14.0.1)(@polkadot/x-randomvalues@14.0.1(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)))': + '@polkadot/wasm-crypto@7.5.4(@polkadot/util@14.0.3)(@polkadot/x-randomvalues@14.0.3(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3)))': dependencies: - '@polkadot/util': 14.0.1 - '@polkadot/wasm-bridge': 7.5.4(@polkadot/util@14.0.1)(@polkadot/x-randomvalues@14.0.1(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1))) - '@polkadot/wasm-crypto-asmjs': 7.5.4(@polkadot/util@14.0.1) - '@polkadot/wasm-crypto-init': 7.5.4(@polkadot/util@14.0.1)(@polkadot/x-randomvalues@14.0.1(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1))) - '@polkadot/wasm-crypto-wasm': 7.5.4(@polkadot/util@14.0.1) - '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.1) - '@polkadot/x-randomvalues': 14.0.1(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)) + '@polkadot/util': 14.0.3 + '@polkadot/wasm-bridge': 7.5.4(@polkadot/util@14.0.3)(@polkadot/x-randomvalues@14.0.3(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3))) + '@polkadot/wasm-crypto-asmjs': 7.5.4(@polkadot/util@14.0.3) + '@polkadot/wasm-crypto-init': 7.5.4(@polkadot/util@14.0.3)(@polkadot/x-randomvalues@14.0.3(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3))) + '@polkadot/wasm-crypto-wasm': 7.5.4(@polkadot/util@14.0.3) + '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.3) + '@polkadot/x-randomvalues': 14.0.3(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3)) tslib: 2.8.1 '@polkadot/wasm-util@7.5.4(@polkadot/util@13.5.9)': @@ -6735,9 +7296,9 @@ snapshots: '@polkadot/util': 13.5.9 tslib: 2.8.1 - '@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1)': + '@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3)': dependencies: - '@polkadot/util': 14.0.1 + '@polkadot/util': 14.0.3 tslib: 2.8.1 '@polkadot/x-bigint@13.5.9': @@ -6745,9 +7306,9 @@ snapshots: '@polkadot/x-global': 13.5.9 tslib: 2.8.1 - '@polkadot/x-bigint@14.0.1': + '@polkadot/x-bigint@14.0.3': dependencies: - '@polkadot/x-global': 14.0.1 + '@polkadot/x-global': 14.0.3 tslib: 2.8.1 '@polkadot/x-fetch@13.5.9': @@ -6756,9 +7317,9 @@ snapshots: node-fetch: 3.3.2 tslib: 2.8.1 - '@polkadot/x-fetch@14.0.1': + '@polkadot/x-fetch@14.0.3': dependencies: - '@polkadot/x-global': 14.0.1 + '@polkadot/x-global': 14.0.3 node-fetch: 3.3.2 tslib: 2.8.1 @@ -6766,29 +7327,29 @@ snapshots: dependencies: tslib: 2.8.1 - '@polkadot/x-global@14.0.1': + '@polkadot/x-global@14.0.3': dependencies: tslib: 2.8.1 - '@polkadot/x-randomvalues@13.5.9(@polkadot/util@13.5.9)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1))': + '@polkadot/x-randomvalues@13.5.9(@polkadot/util@13.5.9)(@polkadot/wasm-util@7.5.4(@polkadot/util@13.5.9))': dependencies: '@polkadot/util': 13.5.9 - '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.1) + '@polkadot/wasm-util': 7.5.4(@polkadot/util@13.5.9) '@polkadot/x-global': 13.5.9 tslib: 2.8.1 - '@polkadot/x-randomvalues@13.5.9(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1))': + '@polkadot/x-randomvalues@13.5.9(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3))': dependencies: - '@polkadot/util': 14.0.1 - '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.1) + '@polkadot/util': 14.0.3 + '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.3) '@polkadot/x-global': 13.5.9 tslib: 2.8.1 - '@polkadot/x-randomvalues@14.0.1(@polkadot/util@14.0.1)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.1))': + '@polkadot/x-randomvalues@14.0.3(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3))': dependencies: - '@polkadot/util': 14.0.1 - '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.1) - '@polkadot/x-global': 14.0.1 + '@polkadot/util': 14.0.3 + '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.3) + '@polkadot/x-global': 14.0.3 tslib: 2.8.1 '@polkadot/x-textdecoder@13.5.9': @@ -6796,9 +7357,9 @@ snapshots: '@polkadot/x-global': 13.5.9 tslib: 2.8.1 - '@polkadot/x-textdecoder@14.0.1': + '@polkadot/x-textdecoder@14.0.3': dependencies: - '@polkadot/x-global': 14.0.1 + '@polkadot/x-global': 14.0.3 tslib: 2.8.1 '@polkadot/x-textencoder@13.5.9': @@ -6806,25 +7367,25 @@ snapshots: '@polkadot/x-global': 13.5.9 tslib: 2.8.1 - '@polkadot/x-textencoder@14.0.1': + '@polkadot/x-textencoder@14.0.3': dependencies: - '@polkadot/x-global': 14.0.1 + '@polkadot/x-global': 14.0.3 tslib: 2.8.1 '@polkadot/x-ws@13.5.9': dependencies: '@polkadot/x-global': 13.5.9 tslib: 2.8.1 - ws: 8.19.0 + ws: 8.21.0 transitivePeerDependencies: - bufferutil - utf-8-validate - '@polkadot/x-ws@14.0.1': + '@polkadot/x-ws@14.0.3': dependencies: - '@polkadot/x-global': 14.0.1 + '@polkadot/x-global': 14.0.3 tslib: 2.8.1 - ws: 8.19.0 + ws: 8.21.0 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -6833,98 +7394,97 @@ snapshots: '@protobufjs/base64@1.1.2': {} - '@protobufjs/codegen@2.0.4': {} + '@protobufjs/codegen@2.0.5': {} - '@protobufjs/eventemitter@1.1.0': {} + '@protobufjs/eventemitter@1.1.1': {} - '@protobufjs/fetch@1.1.0': + '@protobufjs/fetch@1.1.1': dependencies: '@protobufjs/aspromise': 1.1.2 - '@protobufjs/inquire': 1.1.0 '@protobufjs/float@1.0.2': {} - '@protobufjs/inquire@1.1.0': {} + '@protobufjs/inquire@1.1.2': {} '@protobufjs/path@1.1.2': {} '@protobufjs/pool@1.1.0': {} - '@protobufjs/utf8@1.1.0': {} + '@protobufjs/utf8@1.1.1': {} - '@rollup/rollup-android-arm-eabi@4.59.0': + '@rollup/rollup-android-arm-eabi@4.61.1': optional: true - '@rollup/rollup-android-arm64@4.59.0': + '@rollup/rollup-android-arm64@4.61.1': optional: true - '@rollup/rollup-darwin-arm64@4.59.0': + '@rollup/rollup-darwin-arm64@4.61.1': optional: true - '@rollup/rollup-darwin-x64@4.59.0': + '@rollup/rollup-darwin-x64@4.61.1': optional: true - '@rollup/rollup-freebsd-arm64@4.59.0': + '@rollup/rollup-freebsd-arm64@4.61.1': optional: true - '@rollup/rollup-freebsd-x64@4.59.0': + '@rollup/rollup-freebsd-x64@4.61.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.59.0': + '@rollup/rollup-linux-arm-gnueabihf@4.61.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.59.0': + '@rollup/rollup-linux-arm-musleabihf@4.61.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.59.0': + '@rollup/rollup-linux-arm64-gnu@4.61.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.59.0': + '@rollup/rollup-linux-arm64-musl@4.61.1': optional: true - '@rollup/rollup-linux-loong64-gnu@4.59.0': + '@rollup/rollup-linux-loong64-gnu@4.61.1': optional: true - '@rollup/rollup-linux-loong64-musl@4.59.0': + '@rollup/rollup-linux-loong64-musl@4.61.1': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.59.0': + '@rollup/rollup-linux-ppc64-gnu@4.61.1': optional: true - '@rollup/rollup-linux-ppc64-musl@4.59.0': + '@rollup/rollup-linux-ppc64-musl@4.61.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.59.0': + '@rollup/rollup-linux-riscv64-gnu@4.61.1': optional: true - '@rollup/rollup-linux-riscv64-musl@4.59.0': + '@rollup/rollup-linux-riscv64-musl@4.61.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.59.0': + '@rollup/rollup-linux-s390x-gnu@4.61.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.59.0': + '@rollup/rollup-linux-x64-gnu@4.61.1': optional: true - '@rollup/rollup-linux-x64-musl@4.59.0': + '@rollup/rollup-linux-x64-musl@4.61.1': optional: true - '@rollup/rollup-openbsd-x64@4.59.0': + '@rollup/rollup-openbsd-x64@4.61.1': optional: true - '@rollup/rollup-openharmony-arm64@4.59.0': + '@rollup/rollup-openharmony-arm64@4.61.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.59.0': + '@rollup/rollup-win32-arm64-msvc@4.61.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.59.0': + '@rollup/rollup-win32-ia32-msvc@4.61.1': optional: true - '@rollup/rollup-win32-x64-gnu@4.59.0': + '@rollup/rollup-win32-x64-gnu@4.61.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.59.0': + '@rollup/rollup-win32-x64-msvc@4.61.1': optional: true '@rx-state/core@0.1.4(rxjs@7.8.2)': @@ -6935,7 +7495,7 @@ snapshots: '@scure/base@1.2.6': {} - '@scure/base@2.0.0': {} + '@scure/base@2.2.0': {} '@scure/bip32@1.4.0': dependencies: @@ -7027,7 +7587,7 @@ snapshots: '@types/bn.js@5.2.0': dependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 '@types/chai@5.2.3': dependencies: @@ -7040,7 +7600,7 @@ snapshots: '@types/deep-eql@4.0.2': {} - '@types/estree@1.0.8': {} + '@types/estree@1.0.9': {} '@types/json-bigint@1.0.4': {} @@ -7052,13 +7612,13 @@ snapshots: dependencies: undici-types: 6.19.8 - '@types/node@24.12.0': + '@types/node@24.13.1': dependencies: - undici-types: 7.16.0 + undici-types: 7.18.2 - '@types/node@25.3.5': + '@types/node@25.9.2': dependencies: - undici-types: 7.18.2 + undici-types: 7.24.6 '@types/normalize-package-data@2.4.4': {} @@ -7072,11 +7632,11 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 '@types/ws@8.5.3': dependencies: - '@types/node': 25.3.5 + '@types/node': 25.9.2 '@types/yargs-parser@21.0.3': {} @@ -7092,13 +7652,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.3.1(@types/node@25.3.5)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@3.2.4(vite@7.3.5(@types/node@25.9.2)(tsx@4.22.4)(yaml@2.9.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@25.3.5)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.5(@types/node@25.9.2)(tsx@4.22.4)(yaml@2.9.0) '@vitest/pretty-format@3.1.3': dependencies: @@ -7108,6 +7668,10 @@ snapshots: dependencies: tinyrainbow: 2.0.0 + '@vitest/pretty-format@3.2.6': + dependencies: + tinyrainbow: 2.0.0 + '@vitest/runner@3.2.4': dependencies: '@vitest/utils': 3.2.4 @@ -7127,24 +7691,24 @@ snapshots: '@vitest/ui@3.1.3(vitest@3.2.4)': dependencies: '@vitest/utils': 3.1.3 - fflate: 0.8.2 - flatted: 3.3.4 + fflate: 0.8.3 + flatted: 3.4.2 pathe: 2.0.3 sirv: 3.0.2 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@25.3.5)(@vitest/ui@3.1.3)(jsdom@23.2.0)(tsx@4.21.0)(yaml@2.8.2) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@25.9.2)(@vitest/ui@3.1.3)(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.9.0) - '@vitest/ui@3.2.4(vitest@3.2.4)': + '@vitest/ui@3.2.6(vitest@3.2.4)': dependencies: - '@vitest/utils': 3.2.4 - fflate: 0.8.2 - flatted: 3.3.4 + '@vitest/utils': 3.2.6 + fflate: 0.8.3 + flatted: 3.4.2 pathe: 2.0.3 sirv: 3.0.2 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@25.3.5)(@vitest/ui@3.1.3)(jsdom@23.2.0)(tsx@4.21.0)(yaml@2.8.2) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@25.9.2)(@vitest/ui@3.1.3)(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.9.0) '@vitest/utils@3.1.3': dependencies: @@ -7158,17 +7722,23 @@ snapshots: loupe: 3.2.1 tinyrainbow: 2.0.0 - '@zombienet/orchestrator@0.0.105(@polkadot/util@14.0.1)(@types/node@25.3.5)(chokidar@3.6.0)': + '@vitest/utils@3.2.6': + dependencies: + '@vitest/pretty-format': 3.2.6 + loupe: 3.2.1 + tinyrainbow: 2.0.0 + + '@zombienet/orchestrator@0.0.105(@polkadot/util@14.0.3)(@types/node@25.9.2)(chokidar@3.6.0)': dependencies: '@polkadot/api': 14.3.1 - '@polkadot/keyring': 13.5.9(@polkadot/util-crypto@13.5.9(@polkadot/util@14.0.1))(@polkadot/util@14.0.1) - '@polkadot/util-crypto': 13.5.9(@polkadot/util@14.0.1) - '@zombienet/utils': 0.0.28(@types/node@25.3.5)(chokidar@3.6.0)(typescript@5.8.3) + '@polkadot/keyring': 13.5.9(@polkadot/util-crypto@13.5.9(@polkadot/util@14.0.3))(@polkadot/util@14.0.3) + '@polkadot/util-crypto': 13.5.9(@polkadot/util@14.0.3) + '@zombienet/utils': 0.0.28(@types/node@25.9.2)(chokidar@3.6.0)(typescript@5.8.3) JSONStream: 1.3.5 chai: 4.5.0 debug: 4.3.7(supports-color@8.1.1) execa: 5.1.1 - fs-extra: 11.3.4 + fs-extra: 11.3.5 jsdom: 23.2.0 json-bigint: 1.0.0 libp2p-crypto: 0.21.2 @@ -7178,7 +7748,7 @@ snapshots: peer-id: 0.16.0 tmp-promise: 3.0.3 typescript: 5.8.3 - yaml: 2.8.2 + yaml: 2.9.0 transitivePeerDependencies: - '@polkadot/util' - '@swc/core' @@ -7190,17 +7760,17 @@ snapshots: - supports-color - utf-8-validate - '@zombienet/orchestrator@0.0.113(@polkadot/util@14.0.1)(@types/node@25.3.5)(chokidar@3.6.0)': + '@zombienet/orchestrator@0.0.113(@polkadot/util@14.0.3)(@types/node@25.9.2)(chokidar@3.6.0)': dependencies: '@polkadot/api': 14.3.1 - '@polkadot/keyring': 13.5.9(@polkadot/util-crypto@13.5.9(@polkadot/util@14.0.1))(@polkadot/util@14.0.1) - '@polkadot/util-crypto': 13.5.9(@polkadot/util@14.0.1) - '@zombienet/utils': 0.0.30(@types/node@25.3.5)(chokidar@3.6.0)(typescript@5.8.3) + '@polkadot/keyring': 13.5.9(@polkadot/util-crypto@13.5.9(@polkadot/util@14.0.3))(@polkadot/util@14.0.3) + '@polkadot/util-crypto': 13.5.9(@polkadot/util@14.0.3) + '@zombienet/utils': 0.0.30(@types/node@25.9.2)(chokidar@3.6.0)(typescript@5.8.3) JSONStream: 1.3.5 chai: 4.5.0 debug: 4.4.3 execa: 5.1.1 - fs-extra: 11.3.4 + fs-extra: 11.3.5 jsdom: 23.2.0 json-bigint: 1.0.0 libp2p-crypto: 0.21.2 @@ -7222,14 +7792,14 @@ snapshots: - supports-color - utf-8-validate - '@zombienet/utils@0.0.28(@types/node@25.3.5)(chokidar@3.6.0)(typescript@5.8.3)': + '@zombienet/utils@0.0.28(@types/node@25.9.2)(chokidar@3.6.0)(typescript@5.8.3)': dependencies: cli-table3: 0.6.5 debug: 4.3.7(supports-color@8.1.1) mocha: 10.8.2 nunjucks: 3.2.4(chokidar@3.6.0) toml: https://codeload.github.com/pepoviola/toml-node/tar.gz/5e17114f1af5b5b70e4f2ec10cd007623c928988 - ts-node: 10.9.2(@types/node@25.3.5)(typescript@5.8.3) + ts-node: 10.9.2(@types/node@25.9.2)(typescript@5.8.3) transitivePeerDependencies: - '@swc/core' - '@swc/wasm' @@ -7238,14 +7808,14 @@ snapshots: - supports-color - typescript - '@zombienet/utils@0.0.30(@types/node@24.12.0)(chokidar@3.6.0)(typescript@5.8.3)': + '@zombienet/utils@0.0.30(@types/node@24.13.1)(chokidar@3.6.0)(typescript@5.8.3)': dependencies: cli-table3: 0.6.5 debug: 4.4.3 mocha: 10.8.2 nunjucks: 3.2.4(chokidar@3.6.0) toml: https://codeload.github.com/pepoviola/toml-node/tar.gz/5e17114f1af5b5b70e4f2ec10cd007623c928988 - ts-node: 10.9.2(@types/node@24.12.0)(typescript@5.8.3) + ts-node: 10.9.2(@types/node@24.13.1)(typescript@5.8.3) transitivePeerDependencies: - '@swc/core' - '@swc/wasm' @@ -7254,14 +7824,14 @@ snapshots: - supports-color - typescript - '@zombienet/utils@0.0.30(@types/node@25.3.5)(chokidar@3.6.0)(typescript@5.8.3)': + '@zombienet/utils@0.0.30(@types/node@25.9.2)(chokidar@3.6.0)(typescript@5.8.3)': dependencies: cli-table3: 0.6.5 debug: 4.4.3 mocha: 10.8.2 nunjucks: 3.2.4(chokidar@3.6.0) toml: https://codeload.github.com/pepoviola/toml-node/tar.gz/5e17114f1af5b5b70e4f2ec10cd007623c928988 - ts-node: 10.9.2(@types/node@25.3.5)(typescript@5.8.3) + ts-node: 10.9.2(@types/node@25.9.2)(typescript@5.8.3) transitivePeerDependencies: - '@swc/core' - '@swc/wasm' @@ -7280,6 +7850,9 @@ snapshots: abbrev@1.1.1: optional: true + abbrev@4.0.0: + optional: true + abitype@0.7.1(typescript@5.8.3)(zod@3.25.76): dependencies: typescript: 5.8.3 @@ -7291,6 +7864,11 @@ snapshots: typescript: 5.8.3 zod: 3.25.76 + abitype@1.2.4(typescript@5.8.3)(zod@3.25.76): + optionalDependencies: + typescript: 5.8.3 + zod: 3.25.76 + acorn-walk@8.3.5: dependencies: acorn: 8.16.0 @@ -7304,7 +7882,6 @@ snapshots: debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color - optional: true agent-base@7.1.4: {} @@ -7335,14 +7912,14 @@ snapshots: ansi-styles@6.2.3: {} - ansis@4.2.0: {} + ansis@4.3.1: {} any-promise@1.3.0: {} anymatch@3.1.3: dependencies: normalize-path: 3.0.0 - picomatch: 2.3.1 + picomatch: 2.3.2 app-root-path@3.1.0: {} @@ -7383,13 +7960,15 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - axios@1.13.6(debug@4.3.7): + axios@1.17.0(debug@4.3.7): dependencies: - follow-redirects: 1.15.11(debug@4.3.7) + follow-redirects: 1.16.0(debug@4.3.7) form-data: 4.0.5 - proxy-from-env: 1.1.0 + https-proxy-agent: 5.0.1 + proxy-from-env: 2.1.0 transitivePeerDependencies: - debug + - supports-color balanced-match@1.0.2: {} @@ -7425,13 +8004,13 @@ snapshots: bottleneck@2.19.5: {} - brace-expansion@1.1.12: + brace-expansion@1.1.15: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 optional: true - brace-expansion@2.0.2: + brace-expansion@2.1.1: dependencies: balanced-match: 1.0.2 @@ -7454,9 +8033,9 @@ snapshots: buildcheck@0.0.7: optional: true - bundle-require@5.1.0(esbuild@0.27.3): + bundle-require@5.1.0(esbuild@0.27.7): dependencies: - esbuild: 0.27.3 + esbuild: 0.27.7 load-tsconfig: 0.2.5 cac@6.7.14: {} @@ -7472,7 +8051,7 @@ snapshots: lru-cache: 6.0.0 minipass: 3.3.6 minipass-collect: 1.0.2 - minipass-flush: 1.0.5 + minipass-flush: 1.0.7 minipass-pipeline: 1.2.4 mkdirp: 1.0.4 p-map: 4.0.0 @@ -7490,7 +8069,7 @@ snapshots: es-errors: 1.3.0 function-bind: 1.1.2 - call-bind@1.0.8: + call-bind@1.0.9: dependencies: call-bind-apply-helpers: 1.0.2 es-define-property: 1.0.1 @@ -7567,6 +8146,8 @@ snapshots: chownr@2.0.0: {} + chownr@3.0.0: {} + class-is@1.1.0: {} clean-stack@2.2.0: @@ -7599,7 +8180,7 @@ snapshots: cli-truncate@5.2.0: dependencies: slice-ansi: 8.0.0 - string-width: 8.2.0 + string-width: 8.2.1 cli-width@4.1.0: {} @@ -7671,12 +8252,14 @@ snapshots: console-control-strings@1.1.0: optional: true + content-type@2.0.0: {} + convert-to-spaces@2.0.1: {} cpu-features@0.0.10: dependencies: buildcheck: 0.0.7 - nan: 2.25.0 + nan: 2.27.0 optional: true crc-32@1.2.2: {} @@ -7716,7 +8299,7 @@ snapshots: dateformat@4.6.3: {} - dayjs@1.11.19: {} + dayjs@1.11.21: {} debug@4.3.7(supports-color@8.1.1): dependencies: @@ -7762,7 +8345,7 @@ snapshots: define-property@1.0.0: dependencies: - is-descriptor: 1.0.3 + is-descriptor: 1.0.4 delayed-stream@1.0.0: {} @@ -7781,7 +8364,7 @@ snapshots: diff@5.2.2: {} - docker-modem@5.0.6: + docker-modem@5.0.7: dependencies: debug: 4.3.7(supports-color@8.1.1) readable-stream: 3.6.2 @@ -7793,10 +8376,10 @@ snapshots: dockerode@4.0.9: dependencies: '@balena/dockerignore': 1.0.2 - '@grpc/grpc-js': 1.14.3 + '@grpc/grpc-js': 1.14.4 '@grpc/proto-loader': 0.7.15 - docker-modem: 5.0.6 - protobufjs: 7.5.4 + docker-modem: 5.0.7 + protobufjs: 7.6.2 tar-fs: 2.1.4 uuid: 10.0.0 transitivePeerDependencies: @@ -7814,7 +8397,7 @@ snapshots: eastasianwidth@0.2.0: {} - effect@3.19.19: + effect@3.21.3: dependencies: '@standard-schema/spec': 1.1.0 fast-check: 3.23.2 @@ -7852,7 +8435,7 @@ snapshots: es-module-lexer@1.7.0: {} - es-object-atoms@1.1.1: + es-object-atoms@1.1.2: dependencies: es-errors: 1.3.0 @@ -7861,40 +8444,69 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 has-tostringtag: 1.0.2 - hasown: 2.0.2 + hasown: 2.0.4 - es-toolkit@1.45.1: {} + es-toolkit@1.47.0: {} es6-error@4.1.1: {} - esbuild@0.27.3: + esbuild@0.27.7: optionalDependencies: - '@esbuild/aix-ppc64': 0.27.3 - '@esbuild/android-arm': 0.27.3 - '@esbuild/android-arm64': 0.27.3 - '@esbuild/android-x64': 0.27.3 - '@esbuild/darwin-arm64': 0.27.3 - '@esbuild/darwin-x64': 0.27.3 - '@esbuild/freebsd-arm64': 0.27.3 - '@esbuild/freebsd-x64': 0.27.3 - '@esbuild/linux-arm': 0.27.3 - '@esbuild/linux-arm64': 0.27.3 - '@esbuild/linux-ia32': 0.27.3 - '@esbuild/linux-loong64': 0.27.3 - '@esbuild/linux-mips64el': 0.27.3 - '@esbuild/linux-ppc64': 0.27.3 - '@esbuild/linux-riscv64': 0.27.3 - '@esbuild/linux-s390x': 0.27.3 - '@esbuild/linux-x64': 0.27.3 - '@esbuild/netbsd-arm64': 0.27.3 - '@esbuild/netbsd-x64': 0.27.3 - '@esbuild/openbsd-arm64': 0.27.3 - '@esbuild/openbsd-x64': 0.27.3 - '@esbuild/openharmony-arm64': 0.27.3 - '@esbuild/sunos-x64': 0.27.3 - '@esbuild/win32-arm64': 0.27.3 - '@esbuild/win32-ia32': 0.27.3 - '@esbuild/win32-x64': 0.27.3 + '@esbuild/aix-ppc64': 0.27.7 + '@esbuild/android-arm': 0.27.7 + '@esbuild/android-arm64': 0.27.7 + '@esbuild/android-x64': 0.27.7 + '@esbuild/darwin-arm64': 0.27.7 + '@esbuild/darwin-x64': 0.27.7 + '@esbuild/freebsd-arm64': 0.27.7 + '@esbuild/freebsd-x64': 0.27.7 + '@esbuild/linux-arm': 0.27.7 + '@esbuild/linux-arm64': 0.27.7 + '@esbuild/linux-ia32': 0.27.7 + '@esbuild/linux-loong64': 0.27.7 + '@esbuild/linux-mips64el': 0.27.7 + '@esbuild/linux-ppc64': 0.27.7 + '@esbuild/linux-riscv64': 0.27.7 + '@esbuild/linux-s390x': 0.27.7 + '@esbuild/linux-x64': 0.27.7 + '@esbuild/netbsd-arm64': 0.27.7 + '@esbuild/netbsd-x64': 0.27.7 + '@esbuild/openbsd-arm64': 0.27.7 + '@esbuild/openbsd-x64': 0.27.7 + '@esbuild/openharmony-arm64': 0.27.7 + '@esbuild/sunos-x64': 0.27.7 + '@esbuild/win32-arm64': 0.27.7 + '@esbuild/win32-ia32': 0.27.7 + '@esbuild/win32-x64': 0.27.7 + + esbuild@0.28.0: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.0 + '@esbuild/android-arm': 0.28.0 + '@esbuild/android-arm64': 0.28.0 + '@esbuild/android-x64': 0.28.0 + '@esbuild/darwin-arm64': 0.28.0 + '@esbuild/darwin-x64': 0.28.0 + '@esbuild/freebsd-arm64': 0.28.0 + '@esbuild/freebsd-x64': 0.28.0 + '@esbuild/linux-arm': 0.28.0 + '@esbuild/linux-arm64': 0.28.0 + '@esbuild/linux-ia32': 0.28.0 + '@esbuild/linux-loong64': 0.28.0 + '@esbuild/linux-mips64el': 0.28.0 + '@esbuild/linux-ppc64': 0.28.0 + '@esbuild/linux-riscv64': 0.28.0 + '@esbuild/linux-s390x': 0.28.0 + '@esbuild/linux-x64': 0.28.0 + '@esbuild/netbsd-arm64': 0.28.0 + '@esbuild/netbsd-x64': 0.28.0 + '@esbuild/openbsd-arm64': 0.28.0 + '@esbuild/openbsd-x64': 0.28.0 + '@esbuild/openharmony-arm64': 0.28.0 + '@esbuild/sunos-x64': 0.28.0 + '@esbuild/win32-arm64': 0.28.0 + '@esbuild/win32-ia32': 0.28.0 + '@esbuild/win32-x64': 0.28.0 escalade@3.2.0: {} @@ -7904,7 +8516,7 @@ snapshots: estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 ethereum-cryptography@2.2.1: dependencies: @@ -7971,13 +8583,14 @@ snapshots: expect-type@1.3.0: {} + exponential-backoff@3.1.3: + optional: true + fast-check@3.23.2: dependencies: pure-rand: 6.1.0 - fast-content-type-parse@3.0.0: {} - - fast-copy@4.0.2: {} + fast-copy@4.0.3: {} fast-safe-stringify@2.1.1: {} @@ -7987,20 +8600,20 @@ snapshots: dependencies: fast-string-truncated-width: 3.0.3 - fast-wrap-ansi@0.2.0: + fast-wrap-ansi@0.2.2: dependencies: fast-string-width: 3.0.2 - fdir@6.5.0(picomatch@4.0.3): + fdir@6.5.0(picomatch@4.0.4): optionalDependencies: - picomatch: 4.0.3 + picomatch: 4.0.4 fetch-blob@3.2.0: dependencies: node-domexception: 1.0.0 web-streams-polyfill: 3.3.3 - fflate@0.8.2: {} + fflate@0.8.3: {} figures@6.1.0: dependencies: @@ -8022,14 +8635,14 @@ snapshots: fix-dts-default-cjs-exports@1.0.1: dependencies: magic-string: 0.30.21 - mlly: 1.8.1 - rollup: 4.59.0 + mlly: 1.8.2 + rollup: 4.61.1 flat@5.0.2: {} - flatted@3.3.4: {} + flatted@3.4.2: {} - follow-redirects@1.15.11(debug@4.3.7): + follow-redirects@1.16.0(debug@4.3.7): optionalDependencies: debug: 4.3.7(supports-color@8.1.1) @@ -8047,7 +8660,7 @@ snapshots: asynckit: 0.4.0 combined-stream: 1.0.8 es-set-tostringtag: 2.1.0 - hasown: 2.0.2 + hasown: 2.0.4 mime-types: 2.1.35 formdata-polyfill@4.0.10: @@ -8056,10 +8669,10 @@ snapshots: fs-constants@1.0.0: {} - fs-extra@11.3.4: + fs-extra@11.3.5: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.2.0 + jsonfile: 6.2.1 universalify: 2.0.1 fs-minipass@2.1.0: @@ -8091,7 +8704,7 @@ snapshots: get-caller-file@2.0.5: {} - get-east-asian-width@1.5.0: {} + get-east-asian-width@1.6.0: {} get-func-name@2.0.2: {} @@ -8100,18 +8713,18 @@ snapshots: call-bind-apply-helpers: 1.0.2 es-define-property: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.1.1 + es-object-atoms: 1.1.2 function-bind: 1.1.2 get-proto: 1.0.1 gopd: 1.2.0 has-symbols: 1.1.0 - hasown: 2.0.2 + hasown: 2.0.4 math-intrinsics: 1.1.0 get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 - es-object-atoms: 1.1.1 + es-object-atoms: 1.1.2 get-stream@6.0.1: {} @@ -8120,10 +8733,6 @@ snapshots: '@sec-ant/readable-stream': 0.4.1 is-stream: 4.0.1 - get-tsconfig@4.13.6: - dependencies: - resolve-pkg-maps: 1.0.0 - github-from-package@0.0.0: {} glob-parent@5.1.2: @@ -8163,7 +8772,7 @@ snapshots: es6-error: 4.1.1 matcher: 3.0.0 roarr: 2.15.4 - semver: 7.7.4 + semver: 7.8.2 serialize-error: 7.0.1 globalthis@1.0.4: @@ -8192,7 +8801,7 @@ snapshots: has-unicode@2.0.1: optional: true - hasown@2.0.2: + hasown@2.0.4: dependencies: function-bind: 1.1.2 @@ -8233,7 +8842,6 @@ snapshots: debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color - optional: true https-proxy-agent@7.0.6: dependencies: @@ -8284,7 +8892,7 @@ snapshots: ini@1.3.8: {} - ink@6.8.0(@types/react@19.2.7)(react@19.2.4): + ink@6.8.0(@types/react@19.2.7)(react@19.2.7): dependencies: '@alcalzone/ansi-tokenize': 0.2.5 ansi-escapes: 7.3.0 @@ -8295,22 +8903,22 @@ snapshots: cli-cursor: 4.0.0 cli-truncate: 5.2.0 code-excerpt: 4.0.0 - es-toolkit: 1.45.1 + es-toolkit: 1.47.0 indent-string: 5.0.0 is-in-ci: 2.0.0 patch-console: 2.0.0 - react: 19.2.4 - react-reconciler: 0.33.0(react@19.2.4) + react: 19.2.7 + react-reconciler: 0.33.0(react@19.2.7) scheduler: 0.27.0 signal-exit: 3.0.7 slice-ansi: 8.0.0 stack-utils: 2.0.6 - string-width: 8.2.0 + string-width: 8.2.1 terminal-size: 4.0.1 - type-fest: 5.4.4 + type-fest: 5.7.0 widest-line: 6.0.0 wrap-ansi: 9.0.2 - ws: 8.19.0 + ws: 8.21.0 yoga-layout: 3.2.1 optionalDependencies: '@types/react': 19.2.7 @@ -8318,12 +8926,12 @@ snapshots: - bufferutil - utf-8-validate - ip-address@10.1.0: + ip-address@10.2.0: optional: true - is-accessor-descriptor@1.0.1: + is-accessor-descriptor@1.0.2: dependencies: - hasown: 2.0.2 + hasown: 2.0.4 is-arguments@1.2.0: dependencies: @@ -8340,11 +8948,11 @@ snapshots: is-data-descriptor@1.0.1: dependencies: - hasown: 2.0.2 + hasown: 2.0.4 - is-descriptor@1.0.3: + is-descriptor@1.0.4: dependencies: - is-accessor-descriptor: 1.0.1 + is-accessor-descriptor: 1.0.2 is-data-descriptor: 1.0.1 is-extglob@2.1.1: {} @@ -8353,7 +8961,7 @@ snapshots: is-fullwidth-code-point@5.1.0: dependencies: - get-east-asian-width: 1.5.0 + get-east-asian-width: 1.6.0 is-generator-function@1.1.2: dependencies: @@ -8391,7 +8999,7 @@ snapshots: call-bound: 1.0.4 gopd: 1.2.0 has-tostringtag: 1.0.2 - hasown: 2.0.2 + hasown: 2.0.4 is-stream@2.0.1: {} @@ -8399,7 +9007,7 @@ snapshots: is-typed-array@1.1.15: dependencies: - which-typed-array: 1.1.20 + which-typed-array: 1.1.22 is-unicode-supported@0.1.0: {} @@ -8409,14 +9017,17 @@ snapshots: isexe@2.0.0: {} + isexe@4.0.0: + optional: true + iso-random-stream@2.0.2: dependencies: events: 3.3.0 readable-stream: 3.6.2 - isomorphic-ws@5.0.0(ws@8.19.0): + isomorphic-ws@5.0.0(ws@8.21.0): dependencies: - ws: 8.19.0 + ws: 8.21.0 isows@1.0.7(ws@8.18.3): dependencies: @@ -8436,7 +9047,7 @@ snapshots: js-tokens@9.0.1: {} - js-yaml@4.1.1: + js-yaml@4.2.0: dependencies: argparse: 2.0.1 @@ -8461,7 +9072,7 @@ snapshots: whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 - ws: 8.19.0 + ws: 8.21.0 xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil @@ -8474,7 +9085,7 @@ snapshots: json-stringify-safe@5.0.1: {} - json-with-bigint@3.5.7: {} + json-with-bigint@3.5.8: {} jsonc-parser@3.3.1: {} @@ -8483,11 +9094,11 @@ snapshots: chalk: 3.0.0 diff-match-patch: 1.0.5 - jsondiffpatch@0.7.3: + jsondiffpatch@0.7.6: dependencies: '@dmsnell/diff-match-patch': 1.1.0 - jsonfile@6.2.0: + jsonfile@6.2.1: dependencies: universalify: 2.0.1 optionalDependencies: @@ -8508,8 +9119,8 @@ snapshots: err-code: 3.0.1 iso-random-stream: 2.0.2 multiformats: 9.9.0 - node-forge: 1.3.3 - protobufjs: 6.11.4 + node-forge: 1.4.0 + protobufjs: 6.11.6 uint8arrays: 3.1.1 lilconfig@3.1.3: {} @@ -8524,7 +9135,7 @@ snapshots: lodash.camelcase@4.3.0: {} - lodash@4.17.23: {} + lodash@4.18.1: {} log-symbols@4.1.0: dependencies: @@ -8548,7 +9159,7 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.2.6: {} + lru-cache@11.5.1: {} lru-cache@6.0.0: dependencies: @@ -8573,7 +9184,7 @@ snapshots: minipass: 3.3.6 minipass-collect: 1.0.2 minipass-fetch: 1.4.1 - minipass-flush: 1.0.5 + minipass-flush: 1.0.7 minipass-pipeline: 1.2.4 negotiator: 0.6.4 promise-retry: 2.0.1 @@ -8616,16 +9227,16 @@ snapshots: minimatch@3.1.5: dependencies: - brace-expansion: 1.1.12 + brace-expansion: 1.1.15 optional: true minimatch@5.1.9: dependencies: - brace-expansion: 2.0.2 + brace-expansion: 2.1.1 minimatch@9.0.9: dependencies: - brace-expansion: 2.0.2 + brace-expansion: 2.1.1 minimist@1.2.8: {} @@ -8643,7 +9254,7 @@ snapshots: encoding: 0.1.13 optional: true - minipass-flush@1.0.5: + minipass-flush@1.0.7: dependencies: minipass: 3.3.6 optional: true @@ -8671,18 +9282,22 @@ snapshots: minipass: 3.3.6 yallist: 4.0.0 + minizlib@3.1.0: + dependencies: + minipass: 7.1.3 + mkdirp-classic@0.5.3: {} mkdirp@1.0.4: {} mlkem@2.7.0: {} - mlly@1.8.1: + mlly@1.8.2: dependencies: acorn: 8.16.0 pathe: 2.0.3 pkg-types: 1.3.1 - ufo: 1.6.3 + ufo: 1.6.4 mocha@10.8.2: dependencies: @@ -8695,7 +9310,7 @@ snapshots: find-up: 5.0.0 glob: 8.1.0 he: 1.2.0 - js-yaml: 4.1.1 + js-yaml: 4.2.0 log-symbols: 4.1.0 minimatch: 5.1.9 ms: 2.1.3 @@ -8713,21 +9328,21 @@ snapshots: ms@2.1.3: {} - msgpackr-extract@3.0.3: + msgpackr-extract@3.0.4: dependencies: node-gyp-build-optional-packages: 5.2.2 optionalDependencies: - '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.3 - '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.3 - '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.3 - '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.3 - '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.3 - '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.4 + '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.4 + '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.4 + '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.4 + '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.4 + '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.4 optional: true - msgpackr@1.11.8: + msgpackr@1.11.14: optionalDependencies: - msgpackr-extract: 3.0.3 + msgpackr-extract: 3.0.4 multiformats@9.9.0: {} @@ -8743,10 +9358,10 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nan@2.25.0: + nan@2.27.0: optional: true - nanoid@3.3.11: {} + nanoid@3.3.12: {} napi-build-utils@2.0.0: {} @@ -8780,12 +9395,14 @@ snapshots: transitivePeerDependencies: - supports-color - node-abi@3.87.0: + node-abi@3.92.0: dependencies: - semver: 7.7.4 + semver: 7.8.2 node-addon-api@7.1.1: {} + node-addon-api@8.8.0: {} + node-domexception@1.0.0: {} node-fetch@2.7.0(encoding@0.1.13): @@ -8800,13 +9417,27 @@ snapshots: fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 - node-forge@1.3.3: {} + node-forge@1.4.0: {} node-gyp-build-optional-packages@5.2.2: dependencies: detect-libc: 2.1.2 optional: true + node-gyp@12.4.0: + dependencies: + env-paths: 2.2.1 + exponential-backoff: 3.1.3 + graceful-fs: 4.2.11 + nopt: 9.0.0 + proc-log: 6.1.0 + semver: 7.8.2 + tar: 7.5.16 + tinyglobby: 0.2.17 + undici: 6.26.0 + which: 6.0.1 + optional: true + node-gyp@8.4.1: dependencies: env-paths: 2.2.1 @@ -8816,7 +9447,7 @@ snapshots: nopt: 5.0.0 npmlog: 6.0.2 rimraf: 3.0.2 - semver: 7.7.4 + semver: 7.8.2 tar: 6.2.1 which: 2.0.2 transitivePeerDependencies: @@ -8829,10 +9460,15 @@ snapshots: abbrev: 1.1.1 optional: true + nopt@9.0.0: + dependencies: + abbrev: 4.0.0 + optional: true + normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 - semver: 7.7.4 + semver: 7.8.2 validate-npm-package-license: 3.0.4 normalize-path@3.0.0: {} @@ -8880,7 +9516,7 @@ snapshots: dependencies: mimic-function: 5.0.1 - ora@9.3.0: + ora@9.4.0: dependencies: chalk: 5.6.2 cli-cursor: 5.0.0 @@ -8888,8 +9524,8 @@ snapshots: is-interactive: 2.0.0 is-unicode-supported: 2.1.0 log-symbols: 7.0.1 - stdin-discarder: 0.3.1 - string-width: 8.2.0 + stdin-discarder: 0.3.2 + string-width: 8.2.1 os-tmpdir@1.0.2: {} @@ -8925,7 +9561,7 @@ snapshots: parse-json@8.3.0: dependencies: - '@babel/code-frame': 7.29.0 + '@babel/code-frame': 7.29.7 index-to-position: 1.2.0 type-fest: 4.41.0 @@ -8962,14 +9598,14 @@ snapshots: class-is: 1.1.0 libp2p-crypto: 0.21.2 multiformats: 9.9.0 - protobufjs: 6.11.4 + protobufjs: 6.11.6 uint8arrays: 3.1.1 picocolors@1.1.1: {} - picomatch@2.3.1: {} + picomatch@2.3.2: {} - picomatch@4.0.3: {} + picomatch@4.0.4: {} pino-abstract-transport@2.0.0: dependencies: @@ -8983,7 +9619,7 @@ snapshots: dependencies: colorette: 2.0.20 dateformat: 4.6.3 - fast-copy: 4.0.2 + fast-copy: 4.0.3 fast-safe-stringify: 2.1.1 help-me: 5.0.0 joycon: 3.1.1 @@ -9009,7 +9645,7 @@ snapshots: real-require: 0.2.0 safe-stable-stringify: 2.5.0 sonic-boom: 4.2.1 - thread-stream: 4.0.0 + thread-stream: 4.2.0 pino@9.14.0: dependencies: @@ -9023,21 +9659,54 @@ snapshots: real-require: 0.2.0 safe-stable-stringify: 2.5.0 sonic-boom: 4.2.1 - thread-stream: 3.1.0 + thread-stream: 3.2.0 pirates@4.0.7: {} pkg-types@1.3.1: dependencies: confbox: 0.1.8 - mlly: 1.8.1 + mlly: 1.8.2 pathe: 2.0.3 pnpm@10.32.1: {} - polkadot-api@1.19.2(postcss@8.5.8)(rxjs@7.8.2)(tsx@4.21.0)(yaml@2.8.2): + polkadot-api@1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.8.2): dependencies: - '@polkadot-api/cli': 0.15.2(postcss@8.5.8)(tsx@4.21.0)(yaml@2.8.2) + '@polkadot-api/cli': 0.15.2(postcss@8.5.15)(tsx@4.22.4)(yaml@2.8.2) + '@polkadot-api/ink-contracts': 0.4.0 + '@polkadot-api/json-rpc-provider': 0.0.4 + '@polkadot-api/known-chains': 0.9.11 + '@polkadot-api/logs-provider': 0.0.6 + '@polkadot-api/metadata-builders': 0.13.5 + '@polkadot-api/metadata-compatibility': 0.3.6 + '@polkadot-api/observable-client': 0.15.1(rxjs@7.8.2) + '@polkadot-api/pjs-signer': 0.6.15 + '@polkadot-api/polkadot-sdk-compat': 2.3.3 + '@polkadot-api/polkadot-signer': 0.1.6 + '@polkadot-api/signer': 0.2.9 + '@polkadot-api/sm-provider': 0.1.11(@polkadot-api/smoldot@0.3.14) + '@polkadot-api/smoldot': 0.3.14 + '@polkadot-api/substrate-bindings': 0.16.3 + '@polkadot-api/substrate-client': 0.4.7 + '@polkadot-api/utils': 0.2.0 + '@polkadot-api/ws-provider': 0.6.2 + '@rx-state/core': 0.1.4(rxjs@7.8.2) + rxjs: 7.8.2 + transitivePeerDependencies: + - '@microsoft/api-extractor' + - '@swc/core' + - bufferutil + - jiti + - postcss + - supports-color + - tsx + - utf-8-validate + - yaml + + polkadot-api@1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.9.0): + dependencies: + '@polkadot-api/cli': 0.15.2(postcss@8.5.15)(tsx@4.22.4)(yaml@2.9.0) '@polkadot-api/ink-contracts': 0.4.0 '@polkadot-api/json-rpc-provider': 0.0.4 '@polkadot-api/known-chains': 0.9.11 @@ -9070,17 +9739,25 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-load-config@6.0.1(postcss@8.5.8)(tsx@4.21.0)(yaml@2.8.2): + postcss-load-config@6.0.1(postcss@8.5.15)(tsx@4.22.4)(yaml@2.8.2): dependencies: lilconfig: 3.1.3 optionalDependencies: - postcss: 8.5.8 - tsx: 4.21.0 + postcss: 8.5.15 + tsx: 4.22.4 yaml: 2.8.2 - postcss@8.5.8: + postcss-load-config@6.0.1(postcss@8.5.15)(tsx@4.22.4)(yaml@2.9.0): dependencies: - nanoid: 3.3.11 + lilconfig: 3.1.3 + optionalDependencies: + postcss: 8.5.15 + tsx: 4.22.4 + yaml: 2.9.0 + + postcss@8.5.15: + dependencies: + nanoid: 3.3.12 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -9092,7 +9769,7 @@ snapshots: minimist: 1.2.8 mkdirp-classic: 0.5.3 napi-build-utils: 2.0.0 - node-abi: 3.87.0 + node-abi: 3.92.0 pump: 3.0.4 rc: 1.2.8 simple-get: 4.0.1 @@ -9103,6 +9780,9 @@ snapshots: dependencies: parse-ms: 4.0.0 + proc-log@6.1.0: + optional: true + process-warning@5.0.0: {} promise-inflight@1.0.1: @@ -9118,38 +9798,38 @@ snapshots: proto-list@1.2.4: {} - protobufjs@6.11.4: + protobufjs@6.11.6: dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 - '@protobufjs/eventemitter': 1.1.0 - '@protobufjs/fetch': 1.1.0 + '@protobufjs/codegen': 2.0.5 + '@protobufjs/eventemitter': 1.1.1 + '@protobufjs/fetch': 1.1.1 '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 + '@protobufjs/inquire': 1.1.2 '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 + '@protobufjs/utf8': 1.1.1 '@types/long': 4.0.2 - '@types/node': 25.3.5 + '@types/node': 25.9.2 long: 4.0.0 - protobufjs@7.5.4: + protobufjs@7.6.2: dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 - '@protobufjs/eventemitter': 1.1.0 - '@protobufjs/fetch': 1.1.0 + '@protobufjs/codegen': 2.0.5 + '@protobufjs/eventemitter': 1.1.1 + '@protobufjs/fetch': 1.1.1 '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 + '@protobufjs/inquire': 1.1.2 '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 - '@types/node': 25.3.5 + '@protobufjs/utf8': 1.1.1 + '@types/node': 25.9.2 long: 5.3.2 - proxy-from-env@1.1.0: {} + proxy-from-env@2.1.0: {} ps-node@0.1.6: dependencies: @@ -9183,12 +9863,12 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-reconciler@0.33.0(react@19.2.4): + react-reconciler@0.33.0(react@19.2.7): dependencies: - react: 19.2.4 + react: 19.2.7 scheduler: 0.27.0 - react@19.2.4: {} + react@19.2.7: {} read-pkg@9.0.1: dependencies: @@ -9206,12 +9886,14 @@ snapshots: readdirp@3.6.0: dependencies: - picomatch: 2.3.1 + picomatch: 2.3.2 readdirp@4.1.2: {} real-require@0.2.0: {} + real-require@1.0.0: {} + reflect-metadata@0.2.2: {} require-directory@2.1.1: {} @@ -9222,8 +9904,6 @@ snapshots: resolve-from@5.0.0: {} - resolve-pkg-maps@1.0.0: {} - restore-cursor@4.0.0: dependencies: onetime: 5.1.2 @@ -9253,35 +9933,35 @@ snapshots: semver-compare: 1.0.0 sprintf-js: 1.1.3 - rollup@4.59.0: + rollup@4.61.1: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.59.0 - '@rollup/rollup-android-arm64': 4.59.0 - '@rollup/rollup-darwin-arm64': 4.59.0 - '@rollup/rollup-darwin-x64': 4.59.0 - '@rollup/rollup-freebsd-arm64': 4.59.0 - '@rollup/rollup-freebsd-x64': 4.59.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.59.0 - '@rollup/rollup-linux-arm-musleabihf': 4.59.0 - '@rollup/rollup-linux-arm64-gnu': 4.59.0 - '@rollup/rollup-linux-arm64-musl': 4.59.0 - '@rollup/rollup-linux-loong64-gnu': 4.59.0 - '@rollup/rollup-linux-loong64-musl': 4.59.0 - '@rollup/rollup-linux-ppc64-gnu': 4.59.0 - '@rollup/rollup-linux-ppc64-musl': 4.59.0 - '@rollup/rollup-linux-riscv64-gnu': 4.59.0 - '@rollup/rollup-linux-riscv64-musl': 4.59.0 - '@rollup/rollup-linux-s390x-gnu': 4.59.0 - '@rollup/rollup-linux-x64-gnu': 4.59.0 - '@rollup/rollup-linux-x64-musl': 4.59.0 - '@rollup/rollup-openbsd-x64': 4.59.0 - '@rollup/rollup-openharmony-arm64': 4.59.0 - '@rollup/rollup-win32-arm64-msvc': 4.59.0 - '@rollup/rollup-win32-ia32-msvc': 4.59.0 - '@rollup/rollup-win32-x64-gnu': 4.59.0 - '@rollup/rollup-win32-x64-msvc': 4.59.0 + '@rollup/rollup-android-arm-eabi': 4.61.1 + '@rollup/rollup-android-arm64': 4.61.1 + '@rollup/rollup-darwin-arm64': 4.61.1 + '@rollup/rollup-darwin-x64': 4.61.1 + '@rollup/rollup-freebsd-arm64': 4.61.1 + '@rollup/rollup-freebsd-x64': 4.61.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.61.1 + '@rollup/rollup-linux-arm-musleabihf': 4.61.1 + '@rollup/rollup-linux-arm64-gnu': 4.61.1 + '@rollup/rollup-linux-arm64-musl': 4.61.1 + '@rollup/rollup-linux-loong64-gnu': 4.61.1 + '@rollup/rollup-linux-loong64-musl': 4.61.1 + '@rollup/rollup-linux-ppc64-gnu': 4.61.1 + '@rollup/rollup-linux-ppc64-musl': 4.61.1 + '@rollup/rollup-linux-riscv64-gnu': 4.61.1 + '@rollup/rollup-linux-riscv64-musl': 4.61.1 + '@rollup/rollup-linux-s390x-gnu': 4.61.1 + '@rollup/rollup-linux-x64-gnu': 4.61.1 + '@rollup/rollup-linux-x64-musl': 4.61.1 + '@rollup/rollup-openbsd-x64': 4.61.1 + '@rollup/rollup-openharmony-arm64': 4.61.1 + '@rollup/rollup-win32-arm64-msvc': 4.61.1 + '@rollup/rollup-win32-ia32-msvc': 4.61.1 + '@rollup/rollup-win32-x64-gnu': 4.61.1 + '@rollup/rollup-win32-x64-msvc': 4.61.1 fsevents: 2.3.3 rrweb-cssom@0.6.0: {} @@ -9318,7 +9998,7 @@ snapshots: semver@5.7.2: {} - semver@7.7.4: {} + semver@7.8.2: {} serialize-error@7.0.1: dependencies: @@ -9384,7 +10064,7 @@ snapshots: smoldot@2.0.26: dependencies: - ws: 8.19.0 + ws: 8.21.0 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -9392,7 +10072,7 @@ snapshots: smoldot@2.0.39: dependencies: - ws: 8.19.0 + ws: 8.21.0 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -9401,14 +10081,14 @@ snapshots: dependencies: agent-base: 6.0.2 debug: 4.3.7(supports-color@8.1.1) - socks: 2.8.7 + socks: 2.8.9 transitivePeerDependencies: - supports-color optional: true - socks@2.8.7: + socks@2.8.9: dependencies: - ip-address: 10.1.0 + ip-address: 10.2.0 smart-buffer: 4.2.0 optional: true @@ -9416,7 +10096,7 @@ snapshots: dependencies: command-exists: 1.2.9 commander: 8.3.0 - follow-redirects: 1.15.11(debug@4.3.7) + follow-redirects: 1.16.0(debug@4.3.7) js-sha3: 0.8.0 memorystream: 0.3.1 semver: 5.7.2 @@ -9470,13 +10150,22 @@ snapshots: - bluebird - supports-color + sqlite3@6.0.1: + dependencies: + bindings: 1.5.0 + node-addon-api: 8.8.0 + prebuild-install: 7.1.3 + tar: 7.5.16 + optionalDependencies: + node-gyp: 12.4.0 + ssh2@1.17.0: dependencies: asn1: 0.2.6 bcrypt-pbkdf: 1.0.2 optionalDependencies: cpu-features: 0.0.10 - nan: 2.25.0 + nan: 2.27.0 ssri@8.0.1: dependencies: @@ -9491,7 +10180,7 @@ snapshots: std-env@3.10.0: {} - stdin-discarder@0.3.1: {} + stdin-discarder@0.3.2: {} string-width@4.2.3: dependencies: @@ -9508,12 +10197,12 @@ snapshots: string-width@7.2.0: dependencies: emoji-regex: 10.6.0 - get-east-asian-width: 1.5.0 + get-east-asian-width: 1.6.0 strip-ansi: 7.2.0 - string-width@8.2.0: + string-width@8.2.1: dependencies: - get-east-asian-width: 1.5.0 + get-east-asian-width: 1.6.0 strip-ansi: 7.2.0 string_decoder@1.3.0: @@ -9549,7 +10238,7 @@ snapshots: lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.7 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 ts-interface-checker: 0.1.13 supports-color@7.2.0: @@ -9592,6 +10281,14 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 + tar@7.5.16: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.3 + minizlib: 3.1.0 + yallist: 5.0.0 + terminal-size@4.0.1: {} thenify-all@1.6.0: @@ -9602,13 +10299,13 @@ snapshots: dependencies: any-promise: 1.3.0 - thread-stream@3.1.0: + thread-stream@3.2.0: dependencies: real-require: 0.2.0 - thread-stream@4.0.0: + thread-stream@4.2.0: dependencies: - real-require: 0.2.0 + real-require: 1.0.0 through@2.3.8: {} @@ -9618,10 +10315,10 @@ snapshots: tinyexec@0.3.2: {} - tinyglobby@0.2.15: + tinyglobby@0.2.17: dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 tinypool@1.1.1: {} @@ -9631,13 +10328,13 @@ snapshots: tmp-promise@3.0.3: dependencies: - tmp: 0.2.5 + tmp: 0.2.7 tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 - tmp@0.2.5: {} + tmp@0.2.7: {} to-buffer@1.2.2: dependencies: @@ -9672,14 +10369,14 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-node@10.9.2(@types/node@24.12.0)(typescript@5.8.3): + ts-node@10.9.2(@types/node@24.13.1)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 24.12.0 + '@types/node': 24.13.1 acorn: 8.16.0 acorn-walk: 8.3.5 arg: 4.1.3 @@ -9690,14 +10387,14 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - ts-node@10.9.2(@types/node@25.3.5)(typescript@5.8.3): + ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 25.3.5 + '@types/node': 25.9.2 acorn: 8.16.0 acorn-walk: 8.3.5 arg: 4.1.3 @@ -9716,27 +10413,55 @@ snapshots: tslib@2.8.1: {} - tsup@8.5.1(postcss@8.5.8)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2): + tsup@8.5.1(postcss@8.5.15)(tsx@4.22.4)(typescript@5.9.3)(yaml@2.8.2): + dependencies: + bundle-require: 5.1.0(esbuild@0.27.7) + cac: 6.7.14 + chokidar: 4.0.3 + consola: 3.4.2 + debug: 4.4.3 + esbuild: 0.27.7 + fix-dts-default-cjs-exports: 1.0.1 + joycon: 3.1.1 + picocolors: 1.1.1 + postcss-load-config: 6.0.1(postcss@8.5.15)(tsx@4.22.4)(yaml@2.8.2) + resolve-from: 5.0.0 + rollup: 4.61.1 + source-map: 0.7.6 + sucrase: 3.35.1 + tinyexec: 0.3.2 + tinyglobby: 0.2.17 + tree-kill: 1.2.2 + optionalDependencies: + postcss: 8.5.15 + typescript: 5.9.3 + transitivePeerDependencies: + - jiti + - supports-color + - tsx + - yaml + + tsup@8.5.1(postcss@8.5.15)(tsx@4.22.4)(typescript@5.9.3)(yaml@2.9.0): dependencies: - bundle-require: 5.1.0(esbuild@0.27.3) + bundle-require: 5.1.0(esbuild@0.27.7) cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.2 debug: 4.4.3 - esbuild: 0.27.3 + esbuild: 0.27.7 fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(postcss@8.5.8)(tsx@4.21.0)(yaml@2.8.2) + postcss-load-config: 6.0.1(postcss@8.5.15)(tsx@4.22.4)(yaml@2.9.0) resolve-from: 5.0.0 - rollup: 4.59.0 + rollup: 4.61.1 source-map: 0.7.6 sucrase: 3.35.1 tinyexec: 0.3.2 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 tree-kill: 1.2.2 optionalDependencies: - postcss: 8.5.8 + postcss: 8.5.15 typescript: 5.9.3 transitivePeerDependencies: - jiti @@ -9744,10 +10469,9 @@ snapshots: - tsx - yaml - tsx@4.21.0: + tsx@4.22.4: dependencies: - esbuild: 0.27.3 - get-tsconfig: 4.13.6 + esbuild: 0.28.0 optionalDependencies: fsevents: 2.3.3 @@ -9763,7 +10487,7 @@ snapshots: type-fest@4.41.0: {} - type-fest@5.4.4: + type-fest@5.7.0: dependencies: tagged-tag: 1.0.0 @@ -9773,13 +10497,13 @@ snapshots: es-errors: 1.3.0 is-typed-array: 1.1.15 - typeorm@0.3.28(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@25.3.5)(typescript@5.8.3)): + typeorm@0.3.30(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3)): dependencies: '@sqltools/formatter': 1.2.5 - ansis: 4.2.0 + ansis: 4.3.1 app-root-path: 3.1.0 buffer: 6.0.3 - dayjs: 1.11.19 + dayjs: 1.11.21 debug: 4.4.3 dedent: 1.7.2 dotenv: 16.6.1 @@ -9788,11 +10512,35 @@ snapshots: sha.js: 2.4.12 sql-highlight: 6.1.0 tslib: 2.8.1 - uuid: 11.1.0 + uuid: 11.1.1 yargs: 17.7.2 optionalDependencies: sqlite3: 5.1.7 - ts-node: 10.9.2(@types/node@25.3.5)(typescript@5.8.3) + ts-node: 10.9.2(@types/node@25.9.2)(typescript@5.8.3) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + typeorm@0.3.30(sqlite3@6.0.1)(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3)): + dependencies: + '@sqltools/formatter': 1.2.5 + ansis: 4.3.1 + app-root-path: 3.1.0 + buffer: 6.0.3 + dayjs: 1.11.21 + debug: 4.4.3 + dedent: 1.7.2 + dotenv: 16.6.1 + glob: 10.5.0 + reflect-metadata: 0.2.2 + sha.js: 2.4.12 + sql-highlight: 6.1.0 + tslib: 2.8.1 + uuid: 11.1.1 + yargs: 17.7.2 + optionalDependencies: + sqlite3: 6.0.1 + ts-node: 10.9.2(@types/node@25.9.2)(typescript@5.8.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -9801,7 +10549,7 @@ snapshots: typescript@5.9.3: {} - ufo@1.6.3: {} + ufo@1.6.4: {} uint8arrays@3.1.1: dependencies: @@ -9809,11 +10557,14 @@ snapshots: undici-types@6.19.8: {} - undici-types@7.16.0: {} - undici-types@7.18.2: {} - undici@7.22.0: {} + undici-types@7.24.6: {} + + undici@6.26.0: + optional: true + + undici@7.27.2: {} unicorn-magic@0.1.0: {} @@ -9848,11 +10599,11 @@ snapshots: is-arguments: 1.2.0 is-generator-function: 1.1.2 is-typed-array: 1.1.15 - which-typed-array: 1.1.20 + which-typed-array: 1.1.22 uuid@10.0.0: {} - uuid@11.1.0: {} + uuid@11.1.1: {} v8-compile-cache-lib@3.0.1: {} @@ -9895,13 +10646,34 @@ snapshots: - utf-8-validate - zod - vite-node@3.2.4(@types/node@24.12.0)(tsx@4.21.0)(yaml@2.8.2): + vite-node@3.2.4(@types/node@24.13.1)(tsx@4.22.4)(yaml@2.8.2): + dependencies: + cac: 6.7.14 + debug: 4.4.3 + es-module-lexer: 1.7.0 + pathe: 2.0.3 + vite: 7.3.5(@types/node@24.13.1)(tsx@4.22.4)(yaml@2.8.2) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vite-node@3.2.4(@types/node@24.13.1)(tsx@4.22.4)(yaml@2.9.0): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.3.1(@types/node@24.12.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.5(@types/node@24.13.1)(tsx@4.22.4)(yaml@2.9.0) transitivePeerDependencies: - '@types/node' - jiti @@ -9916,13 +10688,13 @@ snapshots: - tsx - yaml - vite-node@3.2.4(@types/node@25.3.5)(tsx@4.21.0)(yaml@2.8.2): + vite-node@3.2.4(@types/node@25.9.2)(tsx@4.22.4)(yaml@2.8.2): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.3.1(@types/node@25.3.5)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.5(@types/node@25.9.2)(tsx@4.22.4)(yaml@2.8.2) transitivePeerDependencies: - '@types/node' - jiti @@ -9937,40 +10709,89 @@ snapshots: - tsx - yaml - vite@7.3.1(@types/node@24.12.0)(tsx@4.21.0)(yaml@2.8.2): + vite-node@3.2.4(@types/node@25.9.2)(tsx@4.22.4)(yaml@2.9.0): dependencies: - esbuild: 0.27.3 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.8 - rollup: 4.59.0 - tinyglobby: 0.2.15 + cac: 6.7.14 + debug: 4.4.3 + es-module-lexer: 1.7.0 + pathe: 2.0.3 + vite: 7.3.5(@types/node@25.9.2)(tsx@4.22.4)(yaml@2.9.0) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vite@7.3.5(@types/node@24.13.1)(tsx@4.22.4)(yaml@2.8.2): + dependencies: + esbuild: 0.27.7 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + postcss: 8.5.15 + rollup: 4.61.1 + tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 24.12.0 + '@types/node': 24.13.1 fsevents: 2.3.3 - tsx: 4.21.0 + tsx: 4.22.4 yaml: 2.8.2 - vite@7.3.1(@types/node@25.3.5)(tsx@4.21.0)(yaml@2.8.2): + vite@7.3.5(@types/node@24.13.1)(tsx@4.22.4)(yaml@2.9.0): dependencies: - esbuild: 0.27.3 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.8 - rollup: 4.59.0 - tinyglobby: 0.2.15 + esbuild: 0.27.7 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + postcss: 8.5.15 + rollup: 4.61.1 + tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 25.3.5 + '@types/node': 24.13.1 fsevents: 2.3.3 - tsx: 4.21.0 + tsx: 4.22.4 + yaml: 2.9.0 + + vite@7.3.5(@types/node@25.9.2)(tsx@4.22.4)(yaml@2.8.2): + dependencies: + esbuild: 0.27.7 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + postcss: 8.5.15 + rollup: 4.61.1 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 25.9.2 + fsevents: 2.3.3 + tsx: 4.22.4 yaml: 2.8.2 - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.12.0)(@vitest/ui@3.2.4)(jsdom@23.2.0)(tsx@4.21.0)(yaml@2.8.2): + vite@7.3.5(@types/node@25.9.2)(tsx@4.22.4)(yaml@2.9.0): + dependencies: + esbuild: 0.27.7 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + postcss: 8.5.15 + rollup: 4.61.1 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 25.9.2 + fsevents: 2.3.3 + tsx: 4.22.4 + yaml: 2.9.0 + + vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.13.1)(@vitest/ui@3.2.6(vitest@3.2.4))(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.9.0): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.3.1(@types/node@25.3.5)(tsx@4.21.0)(yaml@2.8.2)) - '@vitest/pretty-format': 3.2.4 + '@vitest/mocker': 3.2.4(vite@7.3.5(@types/node@25.9.2)(tsx@4.22.4)(yaml@2.9.0)) + '@vitest/pretty-format': 3.2.6 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 '@vitest/spy': 3.2.4 @@ -9980,20 +10801,20 @@ snapshots: expect-type: 1.3.0 magic-string: 0.30.21 pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 std-env: 3.10.0 tinybench: 2.9.0 tinyexec: 0.3.2 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.3.1(@types/node@24.12.0)(tsx@4.21.0)(yaml@2.8.2) - vite-node: 3.2.4(@types/node@24.12.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.5(@types/node@24.13.1)(tsx@4.22.4)(yaml@2.9.0) + vite-node: 3.2.4(@types/node@24.13.1)(tsx@4.22.4)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 - '@types/node': 24.12.0 - '@vitest/ui': 3.2.4(vitest@3.2.4) + '@types/node': 24.13.1 + '@vitest/ui': 3.2.6(vitest@3.2.4) jsdom: 23.2.0 transitivePeerDependencies: - jiti @@ -10009,12 +10830,56 @@ snapshots: - tsx - yaml - vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.3.5)(@vitest/ui@3.1.3)(jsdom@23.2.0)(tsx@4.21.0)(yaml@2.8.2): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.13.1)(@vitest/ui@3.2.6)(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.8.2): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.3.1(@types/node@25.3.5)(tsx@4.21.0)(yaml@2.8.2)) - '@vitest/pretty-format': 3.2.4 + '@vitest/mocker': 3.2.4(vite@7.3.5(@types/node@25.9.2)(tsx@4.22.4)(yaml@2.9.0)) + '@vitest/pretty-format': 3.2.6 + '@vitest/runner': 3.2.4 + '@vitest/snapshot': 3.2.4 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.3.3 + debug: 4.4.3 + expect-type: 1.3.0 + magic-string: 0.30.21 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 3.10.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.17 + tinypool: 1.1.1 + tinyrainbow: 2.0.0 + vite: 7.3.5(@types/node@24.13.1)(tsx@4.22.4)(yaml@2.8.2) + vite-node: 3.2.4(@types/node@24.13.1)(tsx@4.22.4)(yaml@2.8.2) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/debug': 4.1.12 + '@types/node': 24.13.1 + '@vitest/ui': 3.2.6(vitest@3.2.4) + jsdom: 23.2.0 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.9.2)(@vitest/ui@3.1.3)(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.9.0): + dependencies: + '@types/chai': 5.2.3 + '@vitest/expect': 3.2.4 + '@vitest/mocker': 3.2.4(vite@7.3.5(@types/node@25.9.2)(tsx@4.22.4)(yaml@2.9.0)) + '@vitest/pretty-format': 3.2.6 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 '@vitest/spy': 3.2.4 @@ -10024,19 +10889,19 @@ snapshots: expect-type: 1.3.0 magic-string: 0.30.21 pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 std-env: 3.10.0 tinybench: 2.9.0 tinyexec: 0.3.2 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.3.1(@types/node@25.3.5)(tsx@4.21.0)(yaml@2.8.2) - vite-node: 3.2.4(@types/node@25.3.5)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.5(@types/node@25.9.2)(tsx@4.22.4)(yaml@2.9.0) + vite-node: 3.2.4(@types/node@25.9.2)(tsx@4.22.4)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 - '@types/node': 25.3.5 + '@types/node': 25.9.2 '@vitest/ui': 3.1.3(vitest@3.2.4) jsdom: 23.2.0 transitivePeerDependencies: @@ -10053,12 +10918,12 @@ snapshots: - tsx - yaml - vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.3.5)(@vitest/ui@3.2.4)(jsdom@23.2.0)(tsx@4.21.0)(yaml@2.8.2): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.9.2)(@vitest/ui@3.2.6(vitest@3.2.4))(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.9.0): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.3.1(@types/node@25.3.5)(tsx@4.21.0)(yaml@2.8.2)) - '@vitest/pretty-format': 3.2.4 + '@vitest/mocker': 3.2.4(vite@7.3.5(@types/node@25.9.2)(tsx@4.22.4)(yaml@2.9.0)) + '@vitest/pretty-format': 3.2.6 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 '@vitest/spy': 3.2.4 @@ -10068,20 +10933,64 @@ snapshots: expect-type: 1.3.0 magic-string: 0.30.21 pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 std-env: 3.10.0 tinybench: 2.9.0 tinyexec: 0.3.2 - tinyglobby: 0.2.15 + tinyglobby: 0.2.17 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.3.1(@types/node@25.3.5)(tsx@4.21.0)(yaml@2.8.2) - vite-node: 3.2.4(@types/node@25.3.5)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.5(@types/node@25.9.2)(tsx@4.22.4)(yaml@2.9.0) + vite-node: 3.2.4(@types/node@25.9.2)(tsx@4.22.4)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 - '@types/node': 25.3.5 - '@vitest/ui': 3.2.4(vitest@3.2.4) + '@types/node': 25.9.2 + '@vitest/ui': 3.2.6(vitest@3.2.4) + jsdom: 23.2.0 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.9.2)(@vitest/ui@3.2.6)(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.8.2): + dependencies: + '@types/chai': 5.2.3 + '@vitest/expect': 3.2.4 + '@vitest/mocker': 3.2.4(vite@7.3.5(@types/node@25.9.2)(tsx@4.22.4)(yaml@2.9.0)) + '@vitest/pretty-format': 3.2.6 + '@vitest/runner': 3.2.4 + '@vitest/snapshot': 3.2.4 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.3.3 + debug: 4.4.3 + expect-type: 1.3.0 + magic-string: 0.30.21 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 3.10.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.17 + tinypool: 1.1.1 + tinyrainbow: 2.0.0 + vite: 7.3.5(@types/node@25.9.2)(tsx@4.22.4)(yaml@2.8.2) + vite-node: 3.2.4(@types/node@25.9.2)(tsx@4.22.4)(yaml@2.8.2) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/debug': 4.1.12 + '@types/node': 25.9.2 + '@vitest/ui': 3.2.6(vitest@3.2.4) jsdom: 23.2.0 transitivePeerDependencies: - jiti @@ -10252,11 +11161,11 @@ snapshots: web3-providers-ws@4.0.8: dependencies: '@types/ws': 8.5.3 - isomorphic-ws: 5.0.0(ws@8.19.0) + isomorphic-ws: 5.0.0(ws@8.21.0) web3-errors: 1.3.1 web3-types: 1.10.0 web3-utils: 4.3.3 - ws: 8.19.0 + ws: 8.21.0 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -10374,10 +11283,10 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 - which-typed-array@1.1.20: + which-typed-array@1.1.22: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.8 + call-bind: 1.0.9 call-bound: 1.0.4 for-each: 0.3.5 get-proto: 1.0.1 @@ -10388,6 +11297,11 @@ snapshots: dependencies: isexe: 2.0.0 + which@6.0.1: + dependencies: + isexe: 4.0.0 + optional: true + why-is-node-running@2.3.0: dependencies: siginfo: 2.0.0 @@ -10400,7 +11314,7 @@ snapshots: widest-line@6.0.0: dependencies: - string-width: 8.2.0 + string-width: 8.2.1 window-size@1.1.1: dependencies: @@ -10459,7 +11373,7 @@ snapshots: ws@8.18.3: {} - ws@8.19.0: {} + ws@8.21.0: {} xml-name-validator@5.0.0: {} @@ -10469,8 +11383,12 @@ snapshots: yallist@4.0.0: {} + yallist@5.0.0: {} + yaml@2.8.2: {} + yaml@2.9.0: {} + yargs-parser@20.2.9: {} yargs-parser@21.1.1: {} diff --git a/ts-tests/pnpm-workspace.yaml b/ts-tests/pnpm-workspace.yaml index 85e8725741..02acf3f9b0 100644 --- a/ts-tests/pnpm-workspace.yaml +++ b/ts-tests/pnpm-workspace.yaml @@ -14,8 +14,12 @@ onlyBuiltDependencies: - sqlite3 - ssh2 -# Allow exotic subdependencies (needed for toml dependency) -allowExoticSubdeps: true +# @zombienet/utils pulls toml from a git repo; allow that in subdependencies. +blockExoticSubdeps: false + +pnpm: + overrides: + toml: ^3.0.0 allowBuilds: '@biomejs/biome': set this to true or false From 34564f3fca28552d8b0c4e6a3d72dc3fd12eecc0 Mon Sep 17 00:00:00 2001 From: open-junius Date: Wed, 10 Jun 2026 00:32:36 +0800 Subject: [PATCH 13/36] move contract e2e to ts-tests --- ts-tests/scripts/generate-ink-types.sh | 29 + .../01-contract-deploy-call.test.ts | 538 ++++ .../zombienet_evm/02-precompile-gas.test.ts | 100 + .../zombienet_evm/03-wasm-contract.test.ts | 1064 +++++++ .../zombienet_evm/04-edge-cases.test.ts | 152 + .../05-direct-call-precompile.test.ts | 535 ++++ ts-tests/utils/evm-config.ts | 2485 ++++++++++++++++- ts-tests/utils/evm.ts | 12 + ts-tests/utils/index.ts | 3 + ts-tests/utils/staking.ts | 4 +- ts-tests/utils/subnet.ts | 12 +- ts-tests/utils/wasm-contract.ts | 151 + 12 files changed, 5064 insertions(+), 21 deletions(-) create mode 100755 ts-tests/scripts/generate-ink-types.sh create mode 100644 ts-tests/suites/zombienet_evm/01-contract-deploy-call.test.ts create mode 100644 ts-tests/suites/zombienet_evm/02-precompile-gas.test.ts create mode 100644 ts-tests/suites/zombienet_evm/03-wasm-contract.test.ts create mode 100644 ts-tests/suites/zombienet_evm/04-edge-cases.test.ts create mode 100644 ts-tests/suites/zombienet_evm/05-direct-call-precompile.test.ts create mode 100644 ts-tests/utils/wasm-contract.ts diff --git a/ts-tests/scripts/generate-ink-types.sh b/ts-tests/scripts/generate-ink-types.sh new file mode 100755 index 0000000000..ede5fb5765 --- /dev/null +++ b/ts-tests/scripts/generate-ink-types.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# +# Add ink contract metadata to polkadot-api descriptors. +# Requires the bittensor ink contract json file available in specs folder. +# +# Usage: +# ./scripts/generate-ink-types.sh +# +set -euo pipefail + +DESCRIPTORS_DIR="./.papi/contracts" +GENERATE_TYPES=false +if [ ! -d "$DESCRIPTORS_DIR" ] || [ -z "$(ls -A "$DESCRIPTORS_DIR" 2>/dev/null)" ]; then + echo "==> Type descriptors not found or empty, will generate..." + GENERATE_TYPES=true +else + echo "==> Type descriptors already exist, skipping generation." +fi + +if [ "$GENERATE_TYPES" = true ]; then + + echo "==> Generating Ink contract types..." + pnpm generate-ink-types + + echo "==> Done generating Ink contract types." + exit 0 +else + echo "==> Types are up-to-date, nothing to do." +fi diff --git a/ts-tests/suites/zombienet_evm/01-contract-deploy-call.test.ts b/ts-tests/suites/zombienet_evm/01-contract-deploy-call.test.ts new file mode 100644 index 0000000000..379bbeb8a0 --- /dev/null +++ b/ts-tests/suites/zombienet_evm/01-contract-deploy-call.test.ts @@ -0,0 +1,538 @@ +import { beforeAll, describeSuite, expect } from "@moonwall/cli"; +import { subtensor } from "@polkadot-api/descriptors"; +import type { KeyringPair } from "@polkadot/keyring/types"; +import { u8aToHex } from "@polkadot/util"; +import { decodeAddress } from "@polkadot/util-crypto"; +import { ethers } from "ethers"; +import type { TypedApi } from "polkadot-api"; +import { + addNewSubnetwork, + ALPHA_POOL_CONTRACT_ABI, + ALPHA_POOL_CONTRACT_BYTECODE, + BRIDGE_TOKEN_CONTRACT_ABI, + BRIDGE_TOKEN_CONTRACT_BYTECODE, + burnedRegister, + convertH160ToPublicKey, + convertH160ToSS58, + convertPublicKeyToSs58, + createEthersWallet, + disableWhiteListCheck, + forceSetBalance, + forceSetChainID, + generateKeyringPair, + getBalance, + getProxies, + getStake, + getTransferCallCode, + IPROXY_ADDRESS, + IProxyABI, + ISTAKING_V2_ADDRESS, + IStakingV2ABI, + raoToEth, + STAKE_WRAP_ABI, + STAKE_WRAP_BYTECODE, + startCall, + sudoSetLockReductionInterval, + tao, + waitForFinalizedBlocks, +} from "../../utils"; + +const DEPLOYED_BYTECODE_PREFIX = "0x60806040523480156"; + +async function expectDeployedContract(provider: ethers.Provider, contractAddress: string): Promise { + const code = await provider.getCode(contractAddress); + expect(code).toBeDefined(); + expect(code.length).toBeGreaterThan(100); + expect(code.includes(DEPLOYED_BYTECODE_PREFIX)).toBe(true); +} + +describeSuite({ + id: "contract-deploy-call", + title: "Contract deploy and precompile call tests", + foundationMethods: "zombie", + testCases: ({ it, context }) => { + let api: TypedApi; + let provider: ethers.JsonRpcProvider; + let ethWallet: ethers.Wallet; + let stakeWallet: ethers.Wallet; + let proxyWallet1: ethers.Wallet; + let proxyWallet2: ethers.Wallet; + let proxyWallet3: ethers.Wallet; + let proxyWallet4: ethers.Wallet; + let pureProxyReceiver: KeyringPair; + let delegateProxyReceiver: KeyringPair; + let hotkey: KeyringPair; + let coldkey: KeyringPair; + let netuid: number; + let subnetReady = false; + let proxyWalletsReady = false; + + beforeAll(async () => { + api = context.papi("Node").getTypedApi(subtensor); + provider = context.ethers("EVM").provider as ethers.JsonRpcProvider; + ethWallet = createEthersWallet(provider); + + await forceSetBalance(api, convertH160ToSS58(ethWallet.address)); + await disableWhiteListCheck(api, true); + await waitForFinalizedBlocks(api, 1); + }, 300000); + + async function ensureSubnetReady(): Promise { + if (subnetReady) { + return; + } + + hotkey = generateKeyringPair("sr25519"); + coldkey = generateKeyringPair("sr25519"); + + await sudoSetLockReductionInterval(api, 1); + await forceSetBalance(api, convertPublicKeyToSs58(hotkey.publicKey)); + await forceSetBalance(api, convertPublicKeyToSs58(coldkey.publicKey)); + + netuid = await addNewSubnetwork(api, hotkey, coldkey); + await startCall(api, netuid, coldkey); + await burnedRegister(api, netuid, convertH160ToSS58(ethWallet.address), coldkey); + await waitForFinalizedBlocks(api, 1); + subnetReady = true; + } + + async function ensureProxyWalletsReady(): Promise { + if (proxyWalletsReady) { + return; + } + + stakeWallet = createEthersWallet(provider); + proxyWallet1 = createEthersWallet(provider); + proxyWallet2 = createEthersWallet(provider); + proxyWallet3 = createEthersWallet(provider); + proxyWallet4 = createEthersWallet(provider); + pureProxyReceiver = generateKeyringPair("sr25519"); + delegateProxyReceiver = generateKeyringPair("sr25519"); + + for (const wallet of [stakeWallet, proxyWallet1, proxyWallet2, proxyWallet3, proxyWallet4]) { + await forceSetBalance(api, convertH160ToSS58(wallet.address)); + } + await waitForFinalizedBlocks(api, 1); + proxyWalletsReady = true; + } + + async function deployAndFundStakeWrap(wallet: ethers.Wallet): Promise { + const contractFactory = new ethers.ContractFactory(STAKE_WRAP_ABI, STAKE_WRAP_BYTECODE, wallet); + const contract = await contractFactory.deploy(); + await contract.waitForDeployment(); + + const txResponse = await wallet.sendTransaction({ + to: contract.target.toString(), + value: raoToEth(tao(10000)), + }); + await txResponse.wait(); + await waitForFinalizedBlocks(api, 1); + + return new ethers.Contract(contract.target.toString(), STAKE_WRAP_ABI, wallet); + } + + async function waitForPureProxyCount(delegateSs58: string, expectedCount: number): Promise { + const deadline = Date.now() + 120_000; + while (Date.now() < deadline) { + const proxies = await getProxies(api, delegateSs58); + if (proxies.length === expectedCount) { + return proxies; + } + await waitForFinalizedBlocks(api, 1); + } + const proxies = await getProxies(api, delegateSs58); + expect(proxies.length).toEqual(expectedCount); + return proxies; + } + + async function waitForProxyDelegates(realSs58: string, expectedCount: number): Promise { + const deadline = Date.now() + 120_000; + while (Date.now() < deadline) { + const proxies = await api.query.Proxy.Proxies.getValue(realSs58); + const delegates = proxies[0].map((proxy) => proxy.delegate); + if (delegates.length === expectedCount) { + return delegates; + } + await waitForFinalizedBlocks(api, 1); + } + const proxies = await api.query.Proxy.Proxies.getValue(realSs58); + const delegates = proxies[0].map((proxy) => proxy.delegate); + expect(delegates.length).toEqual(expectedCount); + return delegates; + } + + async function ensureChainIdStable(): Promise { + const chainId = await api.query.EVMChainId.ChainId.getValue(); + if (chainId !== BigInt(42)) { + await forceSetChainID(api, BigInt(42)); + await waitForFinalizedBlocks(api, 1); + } + // Clear ethers cached network so a mid-run chain-id change does not abort calls. + (provider as { _network?: unknown })._network = null; + } + + async function waitForBalanceIncrease( + ss58Address: string, + balanceBefore: bigint, + increase: bigint + ): Promise { + const expected = balanceBefore + increase; + const deadline = Date.now() + 120_000; + while (Date.now() < deadline) { + const balance = await getBalance(api, ss58Address); + if (balance === expected) { + return balance; + } + await waitForFinalizedBlocks(api, 1); + } + const balance = await getBalance(api, ss58Address); + expect(balance).toEqual(expected); + return balance; + } + + it({ + id: "T01", + title: "Can deploy bridge token smart contract", + test: async () => { + const contractFactory = new ethers.ContractFactory( + BRIDGE_TOKEN_CONTRACT_ABI, + BRIDGE_TOKEN_CONTRACT_BYTECODE, + ethWallet + ); + const contract = await contractFactory.deploy("name", "symbol", ethWallet.address); + await contract.waitForDeployment(); + + expect(contract.target).toBeDefined(); + await expectDeployedContract(provider, contract.target.toString()); + }, + }); + + it({ + id: "T02", + title: "Can deploy bridge token contract with gas limit", + test: async () => { + const contractFactory = new ethers.ContractFactory( + BRIDGE_TOKEN_CONTRACT_ABI, + BRIDGE_TOKEN_CONTRACT_BYTECODE, + ethWallet + ); + const contract = await contractFactory.deploy("name", "symbol", ethWallet.address, { + gasLimit: 12_345_678, + }); + await contract.waitForDeployment(); + + expect(contract.target).toBeDefined(); + await expectDeployedContract(provider, contract.target.toString()); + }, + }); + + it({ + id: "T03", + title: "Can add stake V2", + test: async () => { + await ensureSubnetReady(); + const hotkeySs58 = convertPublicKeyToSs58(hotkey.publicKey); + const walletSs58 = convertH160ToSS58(ethWallet.address); + const stakeBalance = tao(20); + + const stakeBefore = await getStake(api, hotkeySs58, walletSs58, netuid); + const stakingPrecompile = new ethers.Contract(ISTAKING_V2_ADDRESS, IStakingV2ABI, ethWallet); + const tx = await stakingPrecompile.addStake(hotkey.publicKey, stakeBalance.toString(), netuid); + const receipt = await tx.wait(); + expect(receipt?.status).toEqual(1); + await waitForFinalizedBlocks(api, 2); + + const stakeFromContract = BigInt( + await stakingPrecompile.getStake( + hotkey.publicKey, + convertH160ToPublicKey(ethWallet.address), + netuid + ) + ); + const stakeAfter = await getStake(api, hotkeySs58, walletSs58, netuid); + + expect(stakeFromContract).toBeGreaterThan(stakeBefore); + expect(stakeAfter).toBeGreaterThan(stakeBefore); + // Swap fees/slippage can leave stake slightly below the nominal TAO sent. + expect(stakeFromContract).toBeGreaterThan(tao(19)); + }, + }); + + it({ + id: "T04", + title: "Can deploy alpha pool smart contract", + test: async () => { + await ensureSubnetReady(); + const hotkeySs58 = convertPublicKeyToSs58(hotkey.publicKey); + const walletSs58 = convertH160ToSS58(ethWallet.address); + const stakingPrecompile = new ethers.Contract(ISTAKING_V2_ADDRESS, IStakingV2ABI, ethWallet); + + const stakeBeforeDeposit = await getStake(api, hotkeySs58, walletSs58, netuid); + + const contractFactory = new ethers.ContractFactory( + ALPHA_POOL_CONTRACT_ABI, + ALPHA_POOL_CONTRACT_BYTECODE, + ethWallet + ); + const contract = await contractFactory.deploy(hotkey.publicKey); + await contract.waitForDeployment(); + expect(contract.target).toBeDefined(); + + const contractAddress = contract.target.toString(); + const contractPublicKey = convertH160ToPublicKey(contractAddress); + await forceSetBalance(api, convertPublicKeyToSs58(contractPublicKey)); + await expectDeployedContract(provider, contractAddress); + + const contractForCall = new ethers.Contract(contractAddress, ALPHA_POOL_CONTRACT_ABI, ethWallet); + const setContractColdkeyTx = await contractForCall.setContractColdkey(contractPublicKey); + const setColdkeyReceipt = await setContractColdkeyTx.wait(); + expect(setColdkeyReceipt?.status).toEqual(1); + + expect(await contractForCall.contract_coldkey()).toEqual(u8aToHex(contractPublicKey)); + expect(await contractForCall.contract_hotkey()).toEqual(u8aToHex(hotkey.publicKey)); + + const alphaInPool = await contractForCall.getContractStake(netuid); + expect(alphaInPool).toEqual(BigInt(0)); + + const depositAlphaTx = await contractForCall.depositAlpha( + netuid, + tao(10).toString(), + hotkey.publicKey + ); + const depositReceipt = await depositAlphaTx.wait(); + expect(depositReceipt?.status).toEqual(1); + await waitForFinalizedBlocks(api, 2); + + const stakeAfterDeposit = await getStake(api, hotkeySs58, walletSs58, netuid); + expect(stakeAfterDeposit).toBeLessThan(stakeBeforeDeposit); + + const contractStake = await getStake(api, hotkeySs58, convertH160ToSS58(contractAddress), netuid); + expect(contractStake).toBeGreaterThan(BigInt(0)); + + const alphaBalanceOnContract = await contractForCall.alphaBalance(ethWallet.address, netuid); + expect(tao(10) - alphaBalanceOnContract).toBeLessThan(BigInt(1000)); + + const stakeFromContract = BigInt( + await stakingPrecompile.getStake(hotkey.publicKey, contractPublicKey, netuid) + ); + expect(stakeFromContract).toEqual(await contractForCall.getContractStake(netuid)); + }, + }); + + it({ + id: "T05", + title: "Staker add and remove stake", + test: async () => { + await ensureSubnetReady(); + await ensureProxyWalletsReady(); + + const deployedContract = await deployAndFundStakeWrap(stakeWallet); + + const stakeTx = await deployedContract.stake(hotkey.publicKey, netuid, tao(2)); + const stakeReceipt = await stakeTx.wait(); + expect(stakeReceipt?.status).toEqual(1); + + const removeTx = await deployedContract.removeStake(hotkey.publicKey, netuid, tao(1)); + const removeReceipt = await removeTx.wait(); + expect(removeReceipt?.status).toEqual(1); + await waitForFinalizedBlocks(api, 1); + }, + }); + + it({ + id: "T06", + title: "Staker add stake limit", + test: async () => { + await ensureSubnetReady(); + await ensureProxyWalletsReady(); + + const deployedContract = await deployAndFundStakeWrap(stakeWallet); + + const tx = await deployedContract.stakeLimit(hotkey.publicKey, netuid, tao(2000), tao(1000), true); + const receipt = await tx.wait(); + expect(receipt?.status).toEqual(1); + await waitForFinalizedBlocks(api, 1); + }, + }); + + it({ + id: "T07", + title: "Call createPureProxy, then use proxy to call transfer", + test: async () => { + await ensureProxyWalletsReady(); + await ensureChainIdStable(); + + const proxies = await getProxies(api, convertH160ToSS58(proxyWallet1.address)); + const contract = new ethers.Contract(IPROXY_ADDRESS, IProxyABI, proxyWallet1); + + const type = 0; + const delay = 0; + const index = 0; + const tx = await contract.createPureProxy(type, delay, index); + const response = await tx.wait(); + expect(response?.status).toEqual(1); + + const proxiesAfterAdd = await waitForPureProxyCount( + convertH160ToSS58(proxyWallet1.address), + proxies.length + 1 + ); + + const proxy = proxiesAfterAdd[proxiesAfterAdd.length - 1]; + await forceSetBalance(api, proxy); + + const receiverSs58 = convertPublicKeyToSs58(pureProxyReceiver.publicKey); + const balance = await getBalance(api, receiverSs58); + const amount = 1_000_000_000; + const callCode = await getTransferCallCode(api, pureProxyReceiver, amount); + + const tx2 = await contract.proxyCall(decodeAddress(proxy), [type], callCode); + const response2 = await tx2.wait(); + expect(response2?.status).toEqual(1); + + await waitForBalanceIncrease(receiverSs58, balance, BigInt(amount)); + }, + }); + + it({ + id: "T08", + title: "Call createPureProxy, add multiple proxies", + test: async () => { + await ensureProxyWalletsReady(); + await ensureChainIdStable(); + + const contract = new ethers.Contract(IPROXY_ADDRESS, IProxyABI, proxyWallet1); + const type = 0; + const delay = 0; + const index = 0; + const delegateSs58 = convertH160ToSS58(proxyWallet1.address); + const proxies = await getProxies(api, delegateSs58); + const length = proxies.length; + + for (let i = 0; i < 5; i++) { + const tx = await contract.createPureProxy(type, delay, index); + await tx.wait(); + await waitForPureProxyCount(delegateSs58, length + i + 1); + } + }, + }); + + it({ + id: "T09", + title: "Call createPureProxy, edge cases, call via wrong proxy", + test: async () => { + await ensureProxyWalletsReady(); + await ensureChainIdStable(); + + const contract = new ethers.Contract(IPROXY_ADDRESS, IProxyABI, proxyWallet2); + const amount = 1_000_000_000; + const wrongReceiver = generateKeyringPair("sr25519"); + const callCode = await getTransferCallCode(api, wrongReceiver, amount); + const type = 0; + + await expect( + contract.proxyCall(wrongReceiver.publicKey, [type], callCode).then((proxyTx) => proxyTx.wait()) + ).rejects.toBeDefined(); + }, + }); + + it({ + id: "T10", + title: "Call createProxy, then use proxy to call transfer", + test: async () => { + await ensureProxyWalletsReady(); + await ensureChainIdStable(); + + const proxies = await api.query.Proxy.Proxies.getValue(convertH160ToSS58(proxyWallet2.address)); + const contract = new ethers.Contract(IPROXY_ADDRESS, IProxyABI, proxyWallet2); + + const proxiesFromContract = await contract.getProxies(convertH160ToPublicKey(proxyWallet2.address)); + expect(proxiesFromContract.length).toEqual(proxies[0].length); + + const type = 0; + const delay = 0; + + const tx = await contract.addProxy(convertH160ToPublicKey(proxyWallet3.address), type, delay); + await tx.wait(); + + const proxiesList = await waitForProxyDelegates( + convertH160ToSS58(proxyWallet2.address), + proxies[0].length + 1 + ); + + const proxiesFromContractAfterAdd = await contract.getProxies( + convertH160ToPublicKey(proxyWallet2.address) + ); + expect(proxiesFromContractAfterAdd.length).toEqual(proxiesList.length); + + for (let index = 0; index < proxiesFromContractAfterAdd.length; index++) { + const proxyInfo = proxiesFromContractAfterAdd[index]; + const proxySs58 = convertPublicKeyToSs58(proxyInfo[0]); + expect(proxiesList.includes(proxySs58)).toBe(true); + if (index === proxiesFromContractAfterAdd.length - 1) { + expect(Number(proxyInfo[1])).toEqual(type); + expect(Number(proxyInfo[2])).toEqual(delay); + } + } + + expect(proxiesList.length).toEqual(proxies[0].length + 1); + const proxy = proxiesList[proxiesList.length - 1]; + expect(proxy).toEqual(convertH160ToSS58(proxyWallet3.address)); + + const receiverSs58 = convertPublicKeyToSs58(delegateProxyReceiver.publicKey); + const balance = await getBalance(api, receiverSs58); + const amount = 1_000_000_000; + + const contract2 = new ethers.Contract(IPROXY_ADDRESS, IProxyABI, proxyWallet3); + const callCode = await getTransferCallCode(api, delegateProxyReceiver, amount); + const tx2 = await contract2.proxyCall(convertH160ToPublicKey(proxyWallet2.address), [type], callCode); + await tx2.wait(); + + await waitForBalanceIncrease(receiverSs58, balance, BigInt(amount)); + }, + }); + + it({ + id: "T11", + title: "Call addProxy many times, then check getProxies is correct", + test: async () => { + await ensureProxyWalletsReady(); + await ensureChainIdStable(); + + const proxies = await api.query.Proxy.Proxies.getValue(convertH160ToSS58(proxyWallet4.address)); + const contract = new ethers.Contract(IPROXY_ADDRESS, IProxyABI, proxyWallet4); + expect(proxies[0].length).toEqual(0); + + const proxiesFromContract = await contract.getProxies(convertH160ToPublicKey(proxyWallet4.address)); + expect(proxiesFromContract.length).toEqual(proxies[0].length); + + const type = 1; + const delay = 2; + + for (let i = 0; i < 5; i++) { + const delegateWallet = createEthersWallet(provider); + const addTx = await contract.addProxy( + convertH160ToPublicKey(delegateWallet.address), + type, + delay + ); + await addTx.wait(); + } + + const proxiesList = await waitForProxyDelegates(convertH160ToSS58(proxyWallet4.address), 5); + + const proxiesFromContractAfterAdd = await contract.getProxies( + convertH160ToPublicKey(proxyWallet4.address) + ); + expect(proxiesFromContractAfterAdd.length).toEqual(proxiesList.length); + + for (let index = 0; index < proxiesFromContractAfterAdd.length; index++) { + const proxyInfo = proxiesFromContractAfterAdd[index]; + const proxySs58 = convertPublicKeyToSs58(proxyInfo[0]); + expect(proxiesList.includes(proxySs58)).toBe(true); + expect(Number(proxyInfo[1])).toEqual(type); + expect(Number(proxyInfo[2])).toEqual(delay); + } + }, + }); + }, +}); diff --git a/ts-tests/suites/zombienet_evm/02-precompile-gas.test.ts b/ts-tests/suites/zombienet_evm/02-precompile-gas.test.ts new file mode 100644 index 0000000000..963e157c9a --- /dev/null +++ b/ts-tests/suites/zombienet_evm/02-precompile-gas.test.ts @@ -0,0 +1,100 @@ +import { beforeAll, describeSuite, expect } from "@moonwall/cli"; +import { subtensor } from "@polkadot-api/descriptors"; +import { ethers } from "ethers"; +import type { TypedApi } from "polkadot-api"; +import { + convertH160ToSS58, + createEthersWallet, + disableWhiteListCheck, + forceSetBalance, + getBalance, + PRECOMPILE_GAS_CONTRACT_ABI, + PRECOMPILE_GAS_CONTRACT_BYTECODE, + waitForFinalizedBlocks, +} from "../../utils"; + +const MIN_PRECOMPILE_GAS = BigInt(6000); +const MAX_PRECOMPILE_GAS = BigInt(10000); +const ITERATION_COUNTS = [1, 11, 101] as const; + +async function assertPrecompileGasScaling( + api: TypedApi, + contract: ethers.Contract, + wallet: ethers.Wallet, + call: (iterations: number) => Promise, + baseFee: bigint +): Promise { + let oneIterationGas = BigInt(0); + + for (const iterations of ITERATION_COUNTS) { + const balanceBefore = await getBalance(api, convertH160ToSS58(wallet.address)); + const tx = await call(iterations); + await tx.wait(); + await waitForFinalizedBlocks(api, 1); + + const balanceAfter = await getBalance(api, convertH160ToSS58(wallet.address)); + expect(balanceAfter).toBeLessThan(balanceBefore); + + const usedGas = balanceBefore - balanceAfter; + if (iterations === 1) { + oneIterationGas = usedGas; + continue; + } + + expect(usedGas >= oneIterationGas).toBe(true); + + const precompileUsedGas = usedGas - oneIterationGas; + const minExpected = MIN_PRECOMPILE_GAS * BigInt(iterations - 1) * baseFee; + const maxExpected = MAX_PRECOMPILE_GAS * BigInt(iterations - 1) * baseFee; + + expect(precompileUsedGas >= minExpected).toBe(true); + expect(precompileUsedGas <= maxExpected).toBe(true); + } +} + +describeSuite({ + id: "precompile-gas", + title: "SR25519 and ED25519 precompile gas tests", + foundationMethods: "zombie", + testCases: ({ it, context }) => { + let api: TypedApi; + let ethWallet: ethers.Wallet; + + beforeAll(async () => { + api = context.papi("Node").getTypedApi(subtensor); + const provider = context.ethers("EVM").provider as ethers.JsonRpcProvider; + ethWallet = createEthersWallet(provider); + + await forceSetBalance(api, convertH160ToSS58(ethWallet.address)); + await disableWhiteListCheck(api, true); + await waitForFinalizedBlocks(api, 1); + }, 300000); + + it({ + id: "T01", + title: "Can deploy and call precompile gas contract", + test: async () => { + const fee = await api.query.BaseFee.BaseFeePerGas.getValue(); + expect(fee[0]).toBeGreaterThan(1_000_000_000); + const baseFee = BigInt(fee[0]) / BigInt(1_000_000_000); + + const contractFactory = new ethers.ContractFactory( + PRECOMPILE_GAS_CONTRACT_ABI, + PRECOMPILE_GAS_CONTRACT_BYTECODE, + ethWallet + ); + const contractDeploy = await contractFactory.deploy(); + await contractDeploy.waitForDeployment(); + await waitForFinalizedBlocks(api, 1); + + const contractAddress = await contractDeploy.getAddress(); + expect(contractAddress).toBeDefined(); + + const contract = new ethers.Contract(contractAddress, PRECOMPILE_GAS_CONTRACT_ABI, ethWallet); + + await assertPrecompileGasScaling(api, contract, ethWallet, (iterations) => contract.callED25519(iterations), baseFee); + await assertPrecompileGasScaling(api, contract, ethWallet, (iterations) => contract.callSR25519(iterations), baseFee); + }, + }); + }, +}); diff --git a/ts-tests/suites/zombienet_evm/03-wasm-contract.test.ts b/ts-tests/suites/zombienet_evm/03-wasm-contract.test.ts new file mode 100644 index 0000000000..95f0a3986e --- /dev/null +++ b/ts-tests/suites/zombienet_evm/03-wasm-contract.test.ts @@ -0,0 +1,1064 @@ +import { describeSuite } from "@moonwall/cli"; +import { contracts, MultiAddress, subtensor } from "@polkadot-api/descriptors"; +import { getInkClient } from "@polkadot-api/ink-contracts"; +import type { KeyringPair } from "@polkadot/keyring/types"; +import fs from "node:fs"; +import { Binary, type TypedApi } from "polkadot-api"; +import { beforeAll, beforeEach, expect } from "vitest"; +import { + addNewSubnetwork, + BITTENSOR_WASM_PATH, + burnedRegister, + convertPublicKeyToSs58, + forceSetBalance, + generateKeyringPair, + getBalance, + instantiateWasmContract, + sendWasmContractExtrinsic, + sendWasmContractExtrinsicAllowFailure, + setAdminFreezeWindow, + setTargetRegistrationsPerInterval, + startCall, + sudoSetLockReductionInterval, + tao, + waitForFinalizedBlocks, + waitForTransactionWithRetry, +} from "../../utils"; + +const bittensorBytecode = fs.readFileSync(BITTENSOR_WASM_PATH); + +async function fundAccount( + api: TypedApi, + faucet: KeyringPair, + address: string, + amount: bigint = tao(10_000) +): Promise { + const tx = api.tx.Balances.transfer_keep_alive({ + dest: MultiAddress.Id(address), + value: amount, + }); + await waitForTransactionWithRetry(api, tx, faucet, "fund_account", 5); +} + +describeSuite({ + id: "wasm-contract", + title: "Wasm ink contract tests", + foundationMethods: "zombie", + testCases: ({ it, context }) => { + let api: TypedApi; + let faucet: KeyringPair; + let hotkey: KeyringPair; + let coldkey: KeyringPair; + let hotkey2: KeyringPair; + let coldkey2: KeyringPair; + let netuid = 0; + let contractAddress = ""; + let inkClient: ReturnType; + + async function addStakeViaContract(addStakeToContract: boolean) { + if (contractAddress === "") { + return; + } + + const amount = tao(100) + let message + let dest + if (addStakeToContract) { + message = inkClient.message("add_stake") + dest = contractAddress; + } else { + message = inkClient.message("caller_add_stake") + dest = convertPublicKeyToSs58(coldkey.publicKey); + } + + const data = message.encode({ + hotkey: Binary.fromBytes(hotkey.publicKey), + netuid: netuid, + amount: amount, + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + + const stake = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + dest, + netuid, + ))?.stake + + expect(stake).toBeDefined() + expect(stake > BigInt(0)).toBeTruthy() + } + + async function getContractStake(): Promise { + const stake = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + contractAddress, + netuid, + ))?.stake + + expect(stake).toBeDefined() + return stake as bigint + } + + async function getContractStakeOnRoot(): Promise { + const stake = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + contractAddress, + 0, + ))?.stake + + expect(stake).toBeDefined() + return stake as bigint + } + + async function initSecondColdAndHotkey() { + hotkey2 = generateKeyringPair("sr25519"); + coldkey2 = generateKeyringPair("sr25519"); + await fundAccount(api, faucet, convertPublicKeyToSs58(coldkey2.publicKey)) + await fundAccount(api, faucet, convertPublicKeyToSs58(hotkey2.publicKey)) + await burnedRegister(api, netuid, convertPublicKeyToSs58(hotkey2.publicKey), coldkey2) + } + + + beforeAll(async () => { + api = context.papi("Node").getTypedApi(subtensor); + await waitForFinalizedBlocks(api, 2); + await sudoSetLockReductionInterval(api, 1); + await setAdminFreezeWindow(api); + + inkClient = getInkClient(contracts.bittensor as Parameters[0]); + faucet = generateKeyringPair("sr25519"); + await forceSetBalance(api, convertPublicKeyToSs58(faucet.publicKey), tao(1e9)); + + hotkey = generateKeyringPair("sr25519"); + coldkey = generateKeyringPair("sr25519"); + await fundAccount(api, faucet, convertPublicKeyToSs58(coldkey.publicKey)); + await fundAccount(api, faucet, convertPublicKeyToSs58(hotkey.publicKey)); + + netuid = await addNewSubnetwork(api, hotkey, coldkey); + await startCall(api, netuid, coldkey); + await addNewSubnetwork(api, hotkey, coldkey); + await startCall(api, netuid + 1, coldkey); + await setTargetRegistrationsPerInterval(api, netuid); + await waitForFinalizedBlocks(api, 1); + }, 900000); + + beforeEach(async () => { + hotkey = generateKeyringPair("sr25519"); + coldkey = generateKeyringPair("sr25519"); + await fundAccount(api, faucet, convertPublicKeyToSs58(coldkey.publicKey)); + await fundAccount(api, faucet, convertPublicKeyToSs58(hotkey.publicKey)); + await burnedRegister(api, netuid, convertPublicKeyToSs58(hotkey.publicKey), coldkey); + }, 300000); + + it({ + id: "T01", title: "Can instantiate contract", test: async () => { + const constructor = inkClient.constructor("new"); + const data = constructor.encode(); + contractAddress = await instantiateWasmContract(api, coldkey, bittensorBytecode, data); + + const transfer = api.tx.Balances.transfer_keep_alive({ + dest: MultiAddress.Id(contractAddress), + value: tao(2000), + }); + await waitForTransactionWithRetry(api, transfer, coldkey, "transfer_to_contract", 5); + await waitForFinalizedBlocks(api, 1); + } + }); + + it({ + id: "T02", title: "Can query stake info from contract", test: async () => { + + const queryMessage = inkClient.message("get_stake_info_for_hotkey_coldkey_netuid") + + const data = queryMessage.encode({ + hotkey: Binary.fromBytes(hotkey.publicKey), + coldkey: Binary.fromBytes(coldkey.publicKey), + netuid: netuid, + }) + + const response = await api.apis.ContractsApi.call( + convertPublicKeyToSs58(hotkey.publicKey), + contractAddress, + BigInt(0), + undefined, + undefined, + Binary.fromBytes(data.asBytes()), + ) + + expect(response.result.success).toBeTruthy() + const result = queryMessage.decode(response.result.value).value.value + + if (typeof result === "object" && "hotkey" in result && "coldkey" in result && "netuid" in result && "stake" in result && "locked" in result && "emission" in result && "tao_emission" in result && "drain" in result && "is_registered" in result) { + expect(result.hotkey).toEqual(convertPublicKeyToSs58(hotkey.publicKey)) + expect(result.coldkey).toEqual(convertPublicKeyToSs58(coldkey.publicKey)) + expect(result.netuid).toEqual(netuid) + expect(result.is_registered).toEqual(true) + } else { + throw new Error("result is not an object") + } + + } + }); + + it({ + id: "T03", title: "Can add stake to contract", test: async () => { + await addStakeViaContract(true) + } + }); + + it({ + id: "T04", title: "Can remove stake to contract", test: async () => { + await addStakeViaContract(true) + const stake = await getContractStake() + + let amount = stake / BigInt(2) + const message = inkClient.message("remove_stake") + const data = message.encode({ + hotkey: Binary.fromBytes(hotkey.publicKey), + netuid: netuid, + amount: amount, + }) + + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + + const stakeAfterAddStake = await getContractStake() + + expect(stakeAfterAddStake < stake).toBeTruthy() + } + }); + + it({ + id: "T05", title: "Can unstake all from contract", test: async () => { + await addStakeViaContract(true) + // Get stake before unstake_all + const stakeBefore = await getContractStake() + + expect(stakeBefore > BigInt(0)).toBeTruthy() + + // Call unstake_all + const unstakeMessage = inkClient.message("unstake_all") + const unstakeData = unstakeMessage.encode({ + hotkey: Binary.fromBytes(hotkey.publicKey), + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, unstakeData) + + // Verify stake is now zero + const stakeAfter = await getContractStake() + + expect(stakeAfter).toEqual(BigInt(0)) + } + }); + + it({ + id: "T06", title: "Can unstake all alpha from contract", test: async () => { + await addStakeViaContract(true) + // Get stake before unstake_all_alpha + const stakeBefore = await getContractStake() + + expect(stakeBefore > BigInt(0)).toBeTruthy() + + // Call unstake_all_alpha + const message = inkClient.message("unstake_all_alpha") + const data = message.encode({ + hotkey: Binary.fromBytes(hotkey.publicKey), + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + + // Verify stake is now zero + const stakeAfter = await getContractStake() + + expect(stakeAfter).toEqual(BigInt(0)) + } + }); + + it({ + id: "T07", title: "Can move stake between hotkeys", test: async () => { + await addStakeViaContract(true) + await initSecondColdAndHotkey() + // Get initial stakes + const originStakeBefore = await getContractStake() + + const destStakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey2.publicKey), + contractAddress, + netuid, + ))?.stake || BigInt(0) + + expect(originStakeBefore > BigInt(0)).toBeTruthy() + + // Move stake + const moveAmount = originStakeBefore / BigInt(2) + const message = inkClient.message("move_stake") + const data = message.encode({ + origin_hotkey: Binary.fromBytes(hotkey.publicKey), + destination_hotkey: Binary.fromBytes(hotkey2.publicKey), + origin_netuid: netuid, + destination_netuid: netuid, + amount: moveAmount, + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + + // Verify stakes changed + const originStakeAfter = await getContractStake() + + const destStakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey2.publicKey), + contractAddress, + netuid, + ))?.stake + + expect(destStakeAfter).toBeDefined() + expect(originStakeAfter < originStakeBefore).toBeTruthy() + expect(destStakeAfter > destStakeBefore).toBeTruthy() + } + }); + + it({ + id: "T08", title: "Can transfer stake between coldkeys", test: async () => { + await addStakeViaContract(true) + await initSecondColdAndHotkey() + // Get initial stake + const stakeBeforeOrigin = await getContractStake() + + const stakeBeforeDest = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey2.publicKey), + netuid, + ))?.stake + + expect(stakeBeforeOrigin > BigInt(0)).toBeTruthy() + expect(stakeBeforeDest).toBeDefined() + + // Transfer stake + const transferAmount = stakeBeforeOrigin / BigInt(2) + const message = inkClient.message("transfer_stake") + const data = message.encode({ + destination_coldkey: Binary.fromBytes(coldkey2.publicKey), + hotkey: Binary.fromBytes(hotkey.publicKey), + origin_netuid: netuid, + destination_netuid: netuid, + amount: transferAmount, + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + + // Verify stake transferred + const stakeAfterOrigin = await getContractStake() + + const stakeAfterDest = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey2.publicKey), + netuid, + ))?.stake + + expect(stakeAfterDest).toBeDefined() + expect(stakeAfterOrigin < stakeBeforeOrigin).toBeTruthy() + expect(stakeAfterDest > stakeBeforeDest!).toBeTruthy() + } + }); + + it({ + id: "T09", title: "Can swap stake between networks", test: async () => { + await addStakeViaContract(true) + // Get initial stakes + const stakeBefore = await getContractStake() + + const stakeBefore2 = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + contractAddress, + netuid + 1, + ))?.stake || BigInt(0) + + expect(stakeBefore > BigInt(0)).toBeTruthy() + + // Swap stake + const swapAmount = stakeBefore / BigInt(2) + const message = inkClient.message("swap_stake") + const data = message.encode({ + hotkey: Binary.fromBytes(hotkey.publicKey), + origin_netuid: netuid, + destination_netuid: netuid + 1, + amount: swapAmount, + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + + // Verify stakes swapped + const stakeAfter = await getContractStake() + + const stakeAfter2 = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + contractAddress, + netuid + 1, + ))?.stake + + expect(stakeAfter2).toBeDefined() + expect(stakeAfter < stakeBefore).toBeTruthy() + expect(stakeAfter2 > stakeBefore2).toBeTruthy() + } + }); + + it({ + id: "T10", title: "Can add stake with limit", test: async () => { + const stakeBefore = await getContractStake() + + const message = inkClient.message("add_stake_limit") + const data = message.encode({ + hotkey: Binary.fromBytes(hotkey.publicKey), + netuid: netuid, + amount: tao(200), + limit_price: tao(100), + allow_partial: false, + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + + // Verify stake was added + const stakeAfter = await getContractStake() + + expect(stakeAfter > stakeBefore).toBeTruthy() + } + }); + + it({ + id: "T11", title: "Can remove stake with limit", test: async () => { + await addStakeViaContract(true) + const stakeBefore = await getContractStake() + + expect(stakeBefore > BigInt(0)).toBeTruthy() + + const message = inkClient.message("remove_stake_limit") + const data = message.encode({ + hotkey: Binary.fromBytes(hotkey.publicKey), + netuid: netuid, + amount: stakeBefore / BigInt(2), + limit_price: tao(1), + allow_partial: false, + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + + const stakeAfter = await getContractStake() + + expect(stakeAfter < stakeBefore).toBeTruthy() + } + }); + + it({ + id: "T12", title: "Can swap stake with limit", test: async () => { + await addStakeViaContract(true) + + const stakeBefore = await getContractStake() + + const stakeBefore2 = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + contractAddress, + netuid + 1, + ))?.stake + + expect(stakeBefore > BigInt(0)).toBeTruthy() + expect(stakeBefore2).toBeDefined() + + const message = inkClient.message("swap_stake_limit") + const data = message.encode({ + hotkey: Binary.fromBytes(hotkey.publicKey), + origin_netuid: netuid, + destination_netuid: netuid + 1, + amount: stakeBefore / BigInt(2), + limit_price: tao(1), + allow_partial: false, + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + + const stakeAfter = await getContractStake() + + const stakeAfter2 = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + contractAddress, + netuid + 1, + ))?.stake + + expect(stakeAfter2).toBeDefined() + expect(stakeAfter < stakeBefore).toBeTruthy() + expect(stakeAfter2 > stakeBefore2).toBeTruthy() + } + }); + + it({ + id: "T13", title: "Can remove stake full limit", test: async () => { + await addStakeViaContract(true) + const stakeBefore = await getContractStake() + + expect(stakeBefore > BigInt(0)).toBeTruthy() + + const message = inkClient.message("remove_stake_full_limit") + const data = message.encode({ + hotkey: Binary.fromBytes(hotkey.publicKey), + netuid: netuid, + limit_price: BigInt(0), + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + + const stakeAfter = await getContractStake() + + expect(stakeAfter < stakeBefore).toBeTruthy() + } + }); + + it({ + id: "T14", title: "Can set coldkey auto stake hotkey", test: async () => { + const message = inkClient.message("set_coldkey_auto_stake_hotkey") + const data = message.encode({ + netuid: netuid, + hotkey: Binary.fromBytes(hotkey.publicKey), + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + + let autoStakeHotkey = await api.query.SubtensorModule.AutoStakeDestination.getValue( + contractAddress, + netuid, + ) + + expect(autoStakeHotkey).toBeDefined() + expect(autoStakeHotkey).toEqual(convertPublicKeyToSs58(hotkey.publicKey)) + } + }); + + it({ + id: "T15", title: "Can add and remove proxy", test: async () => { + const message = inkClient.message("add_proxy") + const data = message.encode({ + delegate: Binary.fromBytes(hotkey.publicKey), + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + let proxies = await api.query.Proxy.Proxies.getValue( + contractAddress, + ) + expect(proxies).toBeDefined() + expect(proxies.length > 0 && proxies[0].length > 0).toBeTruthy() + expect(proxies[0][0].delegate).toEqual(convertPublicKeyToSs58(hotkey.publicKey)) + + + const removeMessage = inkClient.message("remove_proxy") + const removeData = removeMessage.encode({ + delegate: Binary.fromBytes(hotkey.publicKey), + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, removeData) + + let proxiesAfterRemove = await api.query.Proxy.Proxies.getValue( + contractAddress, + ) + expect(proxiesAfterRemove).toBeDefined() + expect(proxiesAfterRemove[0].length).toEqual(0) + } + }); + + it({ + id: "T16", title: "Can get alpha price", test: async () => { + const message = inkClient.message("get_alpha_price") + const data = message.encode({ + netuid: netuid, + }) + + const response = await api.apis.ContractsApi.call( + convertPublicKeyToSs58(hotkey.publicKey), + contractAddress, + BigInt(0), + undefined, + undefined, + Binary.fromBytes(data.asBytes()), + ) + + expect(response.result.success).toBeTruthy() + const result = message.decode(response.result.value).value.value + + expect(result).toBeDefined() + } + }); + + it({ + id: "T17", title: "Can recycle alpha from contract stake", test: async () => { + await addStakeViaContract(true) + await waitForFinalizedBlocks(api, 2) + const stakeBefore = await getContractStake() + const alphaOutBefore = await api.query.SubtensorModule.SubnetAlphaOut.getValue(netuid) + + const message = inkClient.message("recycle_alpha") + const data = message.encode({ + hotkey: Binary.fromBytes(hotkey.publicKey), + netuid, + amount: stakeBefore / BigInt(2), + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + + const stakeAfter = await getContractStake() + const alphaOutAfter = await api.query.SubtensorModule.SubnetAlphaOut.getValue(netuid) + + expect(stakeAfter < stakeBefore).toBeTruthy() + expect(alphaOutAfter < alphaOutBefore).toBeTruthy() + } + }); + + it({ + id: "T18", title: "Can burn alpha from contract stake", test: async () => { + await addStakeViaContract(true) + await waitForFinalizedBlocks(api, 2) + const stakeBefore = await getContractStake() + const alphaBurnedBefore = await api.query.AlphaAssets.AlphaBurned.getValue(netuid) + + const message = inkClient.message("burn_alpha") + const data = message.encode({ + hotkey: Binary.fromBytes(hotkey.publicKey), + netuid, + amount: stakeBefore / BigInt(2), + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + + const stakeAfter = await getContractStake() + const alphaBurnedAfter = await api.query.AlphaAssets.AlphaBurned.getValue(netuid) + + expect(stakeAfter < stakeBefore).toBeTruthy() + expect(alphaBurnedBefore < alphaBurnedAfter).toBeTruthy() + } + }); + + it({ + id: "T19", title: "Can add stake and recycle resulting alpha", test: async () => { + const stakeBefore = await getContractStake() + + const message = inkClient.message("add_stake_recycle") + const data = message.encode({ + hotkey: Binary.fromBytes(hotkey.publicKey), + netuid, + amount: tao(100), + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + + const stakeAfter = await getContractStake() + + expect(stakeAfter).toEqual(stakeBefore) + } + }); + + it({ + id: "T20", title: "Can add stake and burn resulting alpha", test: async () => { + const stakeBefore = await getContractStake() + const alphaOutBefore = await api.query.SubtensorModule.SubnetAlphaOut.getValue(netuid) + + const message = inkClient.message("add_stake_burn") + const data = message.encode({ + hotkey: Binary.fromBytes(hotkey.publicKey), + netuid, + amount: tao(100), + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + + const stakeAfter = await getContractStake() + const alphaOutAfter = await api.query.SubtensorModule.SubnetAlphaOut.getValue(netuid) + + expect(stakeAfter).toEqual(stakeBefore) + expect(alphaOutAfter > alphaOutBefore).toBeTruthy() + } + }); + + it({ + id: "T21", title: "Can caller add stake (fn 20)", test: async () => { + await addStakeViaContract(false) + } + }); + + it({ + id: "T22", title: "Can caller remove stake (fn 21)", test: async () => { + await addStakeViaContract(false) + const stake = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid, + ))?.stake + expect(stake).toBeDefined() + const amount = stake / BigInt(2) + const message = inkClient.message("caller_remove_stake") + const data = message.encode({ + hotkey: Binary.fromBytes(hotkey.publicKey), + netuid, + amount, + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + const stakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid, + ))?.stake + expect(stakeAfter !== undefined && stakeAfter < stake!).toBeTruthy() + } + }); + + it({ + id: "T23", title: "Can caller unstake_all (fn 22)", test: async () => { + await addStakeViaContract(false) + const stakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid, + ))?.stake + expect(stakeBefore !== undefined && stakeBefore > BigInt(0)).toBeTruthy() + const message = inkClient.message("caller_unstake_all") + const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey) }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + const stakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid, + ))?.stake + expect(stakeAfter).toBeDefined() + expect(stakeAfter < stakeBefore!).toBeTruthy() + } + }); + + it({ + id: "T24", title: "Can caller unstake_all_alpha (fn 23)", test: async () => { + await addStakeViaContract(false) + const stakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid, + ))?.stake + expect(stakeBefore !== undefined && stakeBefore > BigInt(0)).toBeTruthy() + const message = inkClient.message("caller_unstake_all_alpha") + const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey) }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + const stakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid, + ))?.stake + expect(stakeAfter).toBeDefined() + expect(stakeAfter < stakeBefore!).toBeTruthy() + } + }); + + it({ + id: "T25", title: "Can caller move_stake (fn 24)", test: async () => { + await addStakeViaContract(false) + await initSecondColdAndHotkey() + const originStakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid, + ))?.stake + const destStakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey2.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid, + ))?.stake || BigInt(0) + expect(originStakeBefore !== undefined && originStakeBefore > BigInt(0)).toBeTruthy() + const moveAmount = originStakeBefore / BigInt(2) + const message = inkClient.message("caller_move_stake") + const data = message.encode({ + origin_hotkey: Binary.fromBytes(hotkey.publicKey), + destination_hotkey: Binary.fromBytes(hotkey2.publicKey), + origin_netuid: netuid, + destination_netuid: netuid, + amount: moveAmount, + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + const originStakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid, + ))?.stake + const destStakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey2.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid, + ))?.stake + expect(originStakeAfter !== undefined && destStakeAfter !== undefined).toBeTruthy() + expect(originStakeAfter < originStakeBefore!).toBeTruthy() + expect(destStakeAfter > destStakeBefore).toBeTruthy() + } + }); + + it({ + id: "T26", title: "Can caller transfer_stake (fn 25)", test: async () => { + await addStakeViaContract(false) + await initSecondColdAndHotkey() + const stakeBeforeOrigin = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid, + ))?.stake + const stakeBeforeDest = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey2.publicKey), + netuid, + ))?.stake + expect(stakeBeforeOrigin !== undefined && stakeBeforeOrigin > BigInt(0)).toBeTruthy() + expect(stakeBeforeDest).toBeDefined() + const transferAmount = stakeBeforeOrigin / BigInt(2) + const message = inkClient.message("caller_transfer_stake") + const data = message.encode({ + destination_coldkey: Binary.fromBytes(coldkey2.publicKey), + hotkey: Binary.fromBytes(hotkey.publicKey), + origin_netuid: netuid, + destination_netuid: netuid, + amount: transferAmount, + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + const stakeAfterOrigin = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid, + ))?.stake + const stakeAfterDest = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey2.publicKey), + netuid, + ))?.stake + expect(stakeAfterOrigin !== undefined && stakeAfterDest !== undefined).toBeTruthy() + expect(stakeAfterOrigin < stakeBeforeOrigin!).toBeTruthy() + expect(stakeAfterDest > stakeBeforeDest!).toBeTruthy() + } + }); + + it({ + id: "T27", title: "Can caller swap_stake (fn 26)", test: async () => { + await addStakeViaContract(false) + await initSecondColdAndHotkey() + const stakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid, + ))?.stake + const stakeBefore2 = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + 1, + ))?.stake || BigInt(0) + expect(stakeBefore !== undefined && stakeBefore > BigInt(0)).toBeTruthy() + const swapAmount = stakeBefore / BigInt(2) + const message = inkClient.message("caller_swap_stake") + const data = message.encode({ + hotkey: Binary.fromBytes(hotkey.publicKey), + origin_netuid: netuid, + destination_netuid: netuid + 1, + amount: swapAmount, + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + const stakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid, + ))?.stake + const stakeAfter2 = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + 1, + ))?.stake + expect(stakeAfter !== undefined && stakeAfter2 !== undefined).toBeTruthy() + expect(stakeAfter < stakeBefore).toBeTruthy() + expect(stakeAfter2 > stakeBefore2).toBeTruthy() + } + }); + + it({ + id: "T28", title: "Can caller add_stake_limit (fn 27)", test: async () => { + const stakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid, + ))?.stake + expect(stakeBefore).toBeDefined() + const message = inkClient.message("caller_add_stake_limit") + const data = message.encode({ + hotkey: Binary.fromBytes(hotkey.publicKey), + netuid, + amount: tao(200), + limit_price: tao(100), + allow_partial: false, + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + const stakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid, + ))?.stake + expect(stakeAfter !== undefined && stakeAfter > stakeBefore!).toBeTruthy() + } + }); + + it({ + id: "T29", title: "Can caller remove_stake_limit (fn 28)", test: async () => { + await addStakeViaContract(false) + const stakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid, + ))?.stake + expect(stakeBefore !== undefined && stakeBefore > BigInt(0)).toBeTruthy() + const message = inkClient.message("caller_remove_stake_limit") + const data = message.encode({ + hotkey: Binary.fromBytes(hotkey.publicKey), + netuid, + amount: stakeBefore / BigInt(2), + limit_price: tao(1), + allow_partial: false, + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + const stakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid, + ))?.stake + expect(stakeAfter !== undefined && stakeAfter < stakeBefore!).toBeTruthy() + } + }); + + it({ + id: "T30", title: "Can caller swap_stake_limit (fn 29)", test: async () => { + await addStakeViaContract(false) + const stakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid, + ))?.stake + const stakeBefore2 = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + 1, + ))?.stake + expect(stakeBefore !== undefined && stakeBefore > BigInt(0)).toBeTruthy() + expect(stakeBefore2).toBeDefined() + const message = inkClient.message("caller_swap_stake_limit") + const data = message.encode({ + hotkey: Binary.fromBytes(hotkey.publicKey), + origin_netuid: netuid, + destination_netuid: netuid + 1, + amount: stakeBefore / BigInt(2), + limit_price: tao(1), + allow_partial: false, + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + const stakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid, + ))?.stake + const stakeAfter2 = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + 1, + ))?.stake + expect(stakeAfter !== undefined && stakeAfter2 !== undefined).toBeTruthy() + expect(stakeAfter < stakeBefore).toBeTruthy() + expect(stakeAfter2 > stakeBefore2!).toBeTruthy() + } + }); + + it({ + id: "T31", title: "Can caller remove_stake_full_limit (fn 30)", test: async () => { + await addStakeViaContract(false) + const stakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid, + ))?.stake + expect(stakeBefore !== undefined && stakeBefore > BigInt(0)).toBeTruthy() + const message = inkClient.message("caller_remove_stake_full_limit") + const data = message.encode({ + hotkey: Binary.fromBytes(hotkey.publicKey), + netuid, + limit_price: BigInt(0), + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + const stakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid, + ))?.stake + expect(stakeAfter !== undefined && stakeAfter < stakeBefore!).toBeTruthy() + } + }); + + it({ + id: "T32", title: "Can caller set_coldkey_auto_stake_hotkey (fn 31)", test: async () => { + await addStakeViaContract(false) + await initSecondColdAndHotkey() + const message = inkClient.message("caller_set_coldkey_auto_stake_hotkey") + const data = message.encode({ + netuid, + hotkey: Binary.fromBytes(hotkey2.publicKey), + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + const autoStakeHotkey = await api.query.SubtensorModule.AutoStakeDestination.getValue( + convertPublicKeyToSs58(coldkey.publicKey), + netuid, + ) + expect(autoStakeHotkey).toEqual(convertPublicKeyToSs58(hotkey2.publicKey)) + } + }); + + it({ + id: "T33", title: "Can caller add_proxy and remove_proxy (fn 32-33)", test: async () => { + const addMessage = inkClient.message("caller_add_proxy") + const addData = addMessage.encode({ + delegate: Binary.fromBytes(hotkey2.publicKey), + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, addData) + let proxies = await api.query.Proxy.Proxies.getValue(convertPublicKeyToSs58(coldkey.publicKey)) + expect(proxies !== undefined && proxies[0].length > 0).toBeTruthy() + expect(proxies[0][0].delegate).toEqual(convertPublicKeyToSs58(hotkey2.publicKey)) + + const removeMessage = inkClient.message("caller_remove_proxy") + const removeData = removeMessage.encode({ + delegate: Binary.fromBytes(hotkey2.publicKey), + }) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, removeData) + proxies = await api.query.Proxy.Proxies.getValue(convertPublicKeyToSs58(coldkey.publicKey)) + expect(proxies !== undefined && proxies[0].length).toEqual(0) + } + }); + + it({ + id: "T34", title: "Check add_stake_recycle is atomic operation", test: async () => { + const stakeBefore = await getContractStakeOnRoot() + const balanceBefore = await getBalance(api, convertPublicKeyToSs58(coldkey.publicKey)) + + // recycle alpha on root subnet is not allowed, the extrinsic should be failed. + const message = inkClient.message("add_stake_recycle") + const data = message.encode({ + hotkey: Binary.fromBytes(hotkey.publicKey), + netuid: 0, + amount: tao(100), + }) + await sendWasmContractExtrinsicAllowFailure(api, coldkey, contractAddress, data) + + const stakeAfter = await getContractStakeOnRoot() + const balanceAfter = await getBalance(api, convertPublicKeyToSs58(coldkey.publicKey)) + + expect(balanceBefore - balanceAfter < 10_000_000).toBeTruthy() + expect(stakeAfter).toEqual(stakeBefore) + } + }); + + it({ + id: "T35", title: "Check add_stake_burn is atomic operation", test: async () => { + const stakeBefore = await getContractStakeOnRoot() + const balanceBefore = await getBalance(api, convertPublicKeyToSs58(coldkey.publicKey)) + const alphaOutBefore = await api.query.SubtensorModule.SubnetAlphaOut.getValue(netuid) + + const message = inkClient.message("add_stake_burn") + const data = message.encode({ + hotkey: Binary.fromBytes(hotkey.publicKey), + netuid: 0, + amount: tao(100), + }) + await sendWasmContractExtrinsicAllowFailure(api, coldkey, contractAddress, data) + + const stakeAfter = await getContractStakeOnRoot() + const alphaOutAfter = await api.query.SubtensorModule.SubnetAlphaOut.getValue(netuid) + const balanceAfter = await getBalance(api, convertPublicKeyToSs58(coldkey.publicKey)) + + expect(balanceBefore - balanceAfter < 10_000_000).toBeTruthy() + expect(stakeAfter).toEqual(stakeBefore) + expect(alphaOutAfter > alphaOutBefore).toBeTruthy() + } + }); + + }, +}); diff --git a/ts-tests/suites/zombienet_evm/04-edge-cases.test.ts b/ts-tests/suites/zombienet_evm/04-edge-cases.test.ts new file mode 100644 index 0000000000..2b7b0eb9e3 --- /dev/null +++ b/ts-tests/suites/zombienet_evm/04-edge-cases.test.ts @@ -0,0 +1,152 @@ +import { beforeAll, describeSuite, expect } from "@moonwall/cli"; +import { subtensor } from "@polkadot-api/descriptors"; +import type { KeyringPair } from "@polkadot/keyring/types"; +import { ethers } from "ethers"; +import type { TypedApi } from "polkadot-api"; +import { + convertH160ToSS58, + convertPublicKeyToSs58, + createEthersWallet, + disableWhiteListCheck, + forceSetBalance, + forceSetChainID, + generateKeyringPair, + IBALANCETRANSFER_ADDRESS, + IBalanceTransferABI, + raoToEth, + sendTransaction, + tao, + waitForFinalizedBlocks, +} from "../../utils"; + +const INIT_CHAIN_ID = 42; + +describeSuite({ + id: "edge-cases", + title: "EVM edge case tests", + foundationMethods: "zombie", + testCases: ({ it, context }) => { + let api: TypedApi; + let provider: ethers.JsonRpcProvider; + let ethWallet: ethers.Wallet; + let ethWallet2: ethers.Wallet; + let transferTarget: KeyringPair; + let nonSudoSigner: KeyringPair; + + beforeAll(async () => { + api = context.papi("Node").getTypedApi(subtensor); + provider = context.ethers("EVM").provider as ethers.JsonRpcProvider; + + ethWallet = createEthersWallet(provider); + ethWallet2 = createEthersWallet(provider); + transferTarget = generateKeyringPair("sr25519"); + nonSudoSigner = generateKeyringPair("sr25519"); + + await forceSetBalance(api, convertH160ToSS58(ethWallet.address)); + await forceSetBalance(api, convertPublicKeyToSs58(nonSudoSigner.publicKey)); + await disableWhiteListCheck(api, true); + await waitForFinalizedBlocks(api, 1); + }, 300000); + + async function getChainId(): Promise { + const network = await provider.getNetwork(); + return network.chainId; + } + + it({ + id: "T01", + title: "EVM chain id update is ok", + test: async () => { + let chainId = await getChainId(); + expect(chainId).toEqual(BigInt(INIT_CHAIN_ID)); + + const newChainId = BigInt(100); + await forceSetChainID(api, newChainId); + await waitForFinalizedBlocks(api, 1); + + chainId = await getChainId(); + expect(chainId).toEqual(newChainId); + + await forceSetChainID(api, BigInt(INIT_CHAIN_ID)); + await waitForFinalizedBlocks(api, 1); + + chainId = await getChainId(); + expect(chainId).toEqual(BigInt(INIT_CHAIN_ID)); + }, + }); + + it({ + id: "T02", + title: "EVM chain id is the same, only sudo can change it", + test: async () => { + let chainId = await getChainId(); + expect(chainId).toEqual(BigInt(INIT_CHAIN_ID)); + + const tx = api.tx.AdminUtils.sudo_set_evm_chain_id({ chain_id: BigInt(100) }); + const result = await sendTransaction(tx, nonSudoSigner); + expect(result.success).toBe(false); + + chainId = await getChainId(); + expect(chainId).toEqual(BigInt(INIT_CHAIN_ID)); + }, + }); + + it({ + id: "T03", + title: "Can replace simple transfer transaction", + test: async () => { + const transferBalance = raoToEth(tao(1)); + const gasPrice = BigInt(10e9); + const gasLimit = BigInt(1_000_000); + const nonce = await provider.getTransactionCount(ethWallet.address); + + for (let i = 1; i < 10; i++) { + try { + await ethWallet.sendTransaction({ + to: ethWallet2.address, + value: transferBalance, + nonce, + gasPrice: gasPrice * BigInt(i), + gasLimit: gasLimit * BigInt(i), + }); + } catch { + // Previous transaction may have been mined with the same nonce. + } + await new Promise((resolve) => setTimeout(resolve, 10)); + } + + await forceSetBalance(api, convertH160ToSS58(ethWallet.address)); + await waitForFinalizedBlocks(api, 1); + }, + }); + + it({ + id: "T04", + title: "Can replace precompile call transaction", + test: async () => { + const contract = new ethers.Contract(IBALANCETRANSFER_ADDRESS, IBalanceTransferABI, ethWallet); + const transferBalance = raoToEth(tao(1)); + const gasPrice = BigInt(10e9); + const gasLimit = BigInt(1_000_000); + const nonce = await provider.getTransactionCount(ethWallet.address); + + for (let i = 1; i < 10; i++) { + try { + await contract.transfer(transferTarget.publicKey, { + value: transferBalance, + nonce, + gasPrice: gasPrice * BigInt(i), + gasLimit: gasLimit * BigInt(i), + }); + } catch { + // Previous transaction may have been mined with the same nonce. + } + await new Promise((resolve) => setTimeout(resolve, 10)); + } + + await forceSetBalance(api, convertH160ToSS58(ethWallet.address)); + await waitForFinalizedBlocks(api, 1); + }, + }); + }, +}); diff --git a/ts-tests/suites/zombienet_evm/05-direct-call-precompile.test.ts b/ts-tests/suites/zombienet_evm/05-direct-call-precompile.test.ts new file mode 100644 index 0000000000..0dbbaad8fe --- /dev/null +++ b/ts-tests/suites/zombienet_evm/05-direct-call-precompile.test.ts @@ -0,0 +1,535 @@ +import { beforeAll, describeSuite, expect } from "@moonwall/cli"; +import { subtensor } from "@polkadot-api/descriptors"; +import type { KeyringPair } from "@polkadot/keyring/types"; +import { ethers } from "ethers"; +import { Binary, type TypedApi } from "polkadot-api"; +import { + addNewSubnetwork, + convertH160ToPublicKey, + convertH160ToSS58, + convertPublicKeyToSs58, + createEthersWallet, + disableWhiteListCheck, + forceSetBalance, + generateKeyringPair, + getBalance, + getStake, + IPROXY_ADDRESS, + IProxyABI, + PRECOMPILE_WRAPPER_ABI, + PRECOMPILE_WRAPPER_BYTECODE, + raoToEth, + startCall, + sudoSetLockReductionInterval, + tao, + waitForFinalizedBlocks, + waitForTransactionWithRetry, +} from "../../utils"; + +describeSuite({ + id: "direct-call-precompile", + title: "PrecompileWrapper direct call tests", + foundationMethods: "zombie", + testCases: ({ it, context }) => { + let api: TypedApi; + let provider: ethers.JsonRpcProvider; + let ethWallet: ethers.Wallet; + let ethWallet2: ethers.Wallet; + let hotkey: KeyringPair; + let coldkey: KeyringPair; + let wrapperContract: ethers.Contract; + let wrapperAddress: string; + let netuid: number; + let subnetReady = false; + + beforeAll(async () => { + api = context.papi("Node").getTypedApi(subtensor); + provider = context.ethers("EVM").provider as ethers.JsonRpcProvider; + + ethWallet = createEthersWallet(provider); + ethWallet2 = createEthersWallet(provider); + + await forceSetBalance(api, convertH160ToSS58(ethWallet.address)); + await forceSetBalance(api, convertH160ToSS58(ethWallet2.address)); + await disableWhiteListCheck(api, true); + + hotkey = generateKeyringPair("sr25519"); + coldkey = generateKeyringPair("sr25519"); + + await sudoSetLockReductionInterval(api, 1); + await forceSetBalance(api, convertPublicKeyToSs58(hotkey.publicKey)); + await forceSetBalance(api, convertPublicKeyToSs58(coldkey.publicKey)); + + netuid = await addNewSubnetwork(api, hotkey, coldkey); + await startCall(api, netuid, coldkey); + + const factory = new ethers.ContractFactory(PRECOMPILE_WRAPPER_ABI, PRECOMPILE_WRAPPER_BYTECODE, ethWallet); + const deployed = await factory.deploy(); + await deployed.waitForDeployment(); + wrapperAddress = await deployed.getAddress(); + await forceSetBalance(api, convertH160ToSS58(wrapperAddress)); + await waitForFinalizedBlocks(api, 1); + + wrapperContract = new ethers.Contract(wrapperAddress, PRECOMPILE_WRAPPER_ABI, ethWallet); + subnetReady = true; + }, 600000); + + async function ensureSubnetAndWrapperReady(): Promise { + expect(subnetReady).toBe(true); + } + + async function getCrowdloanEndBlock(): Promise { + const currentBlock = await api.query.System.Number.getValue(); + const minDuration = await api.constants.Crowdloan.MinimumBlockDuration(); + return currentBlock + minDuration + 100; + } + + async function waitForCrowdloanId(expected: number): Promise { + const deadline = Date.now() + 120_000; + while (Date.now() < deadline) { + const nextId = await api.query.Crowdloan.NextCrowdloanId.getValue(); + if (nextId === expected) { + return; + } + await waitForFinalizedBlocks(api, 1); + } + const nextId = await api.query.Crowdloan.NextCrowdloanId.getValue(); + expect(nextId).toEqual(expected); + } + + async function waitForBalanceAtLeast(ss58Address: string, minimum: bigint): Promise { + const deadline = Date.now() + 120_000; + while (Date.now() < deadline) { + const balance = await getBalance(api, ss58Address); + if (balance >= minimum) { + return balance; + } + await waitForFinalizedBlocks(api, 1); + } + const balance = await getBalance(api, ss58Address); + expect(balance).toBeGreaterThanOrEqual(minimum); + return balance; + } + + async function waitForTotalNetworks(expected: number): Promise { + const deadline = Date.now() + 120_000; + while (Date.now() < deadline) { + const total = await api.query.SubtensorModule.TotalNetworks.getValue(); + if (total === expected) { + return; + } + await waitForFinalizedBlocks(api, 1); + } + const total = await api.query.SubtensorModule.TotalNetworks.getValue(); + expect(total).toEqual(expected); + } + + async function waitForProxyCount(realSs58: string, expected: number): Promise { + const deadline = Date.now() + 120_000; + while (Date.now() < deadline) { + const proxies = await api.query.Proxy.Proxies.getValue(realSs58); + if (proxies[0].length === expected) { + return; + } + await waitForFinalizedBlocks(api, 1); + } + const proxies = await api.query.Proxy.Proxies.getValue(realSs58); + expect(proxies[0].length).toEqual(expected); + } + + it({ + id: "T01", + title: "Should transfer balance via wrapper", + test: async () => { + await ensureSubnetAndWrapperReady(); + + const recipient = generateKeyringPair("sr25519"); + const transferAmount = raoToEth(tao(1)); + + const transferTx = await wrapperContract.transfer(recipient.publicKey, { + value: transferAmount, + }); + const receipt = await transferTx.wait(); + expect(receipt?.status).toEqual(1); + + await waitForBalanceAtLeast(convertPublicKeyToSs58(recipient.publicKey), tao(1)); + }, + }); + + it({ + id: "T02", + title: "Should get UID count via wrapper", + test: async () => { + await ensureSubnetAndWrapperReady(); + const uidCount = await wrapperContract.getUidCount(netuid); + expect(uidCount).toBeDefined(); + }, + }); + + it({ + id: "T03", + title: "Should get serving rate limit via wrapper", + test: async () => { + await ensureSubnetAndWrapperReady(); + const rateLimit = await wrapperContract.getServingRateLimit(netuid); + expect(rateLimit).toBeDefined(); + }, + }); + + it({ + id: "T04", + title: "Should get network registered block via wrapper", + test: async () => { + await ensureSubnetAndWrapperReady(); + + const onchainValue = await api.query.SubtensorModule.NetworkRegisteredAt.getValue(netuid); + const valueViaWrapper = Number(await wrapperContract.getNetworkRegistrationBlock(netuid)); + + expect(valueViaWrapper).toBeGreaterThan(0); + expect(valueViaWrapper).toEqual(Number(onchainValue)); + }, + }); + + it({ + id: "T05", + title: "Should register network with details via wrapper", + test: async () => { + await ensureSubnetAndWrapperReady(); + + const newHotkey = generateKeyringPair("sr25519"); + await forceSetBalance(api, convertPublicKeyToSs58(newHotkey.publicKey)); + + const totalNetworksBefore = await api.query.SubtensorModule.TotalNetworks.getValue(); + const registerTx = await wrapperContract.registerNetworkWithDetails( + newHotkey.publicKey, + "Test Subnet", + "https://github.com/test/repo", + "test@example.com", + "https://test.example.com", + "test#1234", + "Test description", + "Additional info", + { value: raoToEth(tao(100)) } + ); + const receipt = await registerTx.wait(); + expect(receipt?.status).toEqual(1); + await waitForTotalNetworks(totalNetworksBefore + 1); + }, + }); + + it({ + id: "T06", + title: "Should register neuron via wrapper", + test: async () => { + await ensureSubnetAndWrapperReady(); + + const newHotkey = generateKeyringPair("sr25519"); + const newColdkey = generateKeyringPair("sr25519"); + await forceSetBalance(api, convertPublicKeyToSs58(newHotkey.publicKey)); + await forceSetBalance(api, convertPublicKeyToSs58(newColdkey.publicKey)); + + const burnAmount = tao(100); + const registerTx = await wrapperContract.burnedRegister(netuid, newHotkey.publicKey, { + value: raoToEth(burnAmount), + }); + const receipt = await registerTx.wait(); + expect(receipt?.status).toEqual(1); + await waitForFinalizedBlocks(api, 2); + + const uid = await api.query.SubtensorModule.Uids.getValue( + netuid, + convertPublicKeyToSs58(newHotkey.publicKey) + ); + expect(uid).toBeDefined(); + }, + }); + + it({ + id: "T07", + title: "Should get total coldkey stake via wrapper", + test: async () => { + await ensureSubnetAndWrapperReady(); + const stake = await wrapperContract.getTotalColdkeyStake(coldkey.publicKey); + expect(stake).toBeDefined(); + }, + }); + + it({ + id: "T08", + title: "Should get total hotkey stake via wrapper", + test: async () => { + await ensureSubnetAndWrapperReady(); + const stake = await wrapperContract.getTotalHotkeyStake(hotkey.publicKey); + expect(stake).toBeDefined(); + }, + }); + + it({ + id: "T09", + title: "Should add stake via wrapper", + test: async () => { + await ensureSubnetAndWrapperReady(); + + const stakeAmount = tao(2); + const wrapperSs58 = convertH160ToSS58(wrapperAddress); + const hotkeySs58 = convertPublicKeyToSs58(hotkey.publicKey); + const stakeBefore = await getStake(api, hotkeySs58, wrapperSs58, netuid); + + const addStakeTx = await wrapperContract.addStake(hotkey.publicKey, stakeAmount, netuid, { + value: raoToEth(stakeAmount), + }); + const receipt = await addStakeTx.wait(); + expect(receipt?.status).toEqual(1); + await waitForFinalizedBlocks(api, 2); + + const stakeAfter = await getStake(api, hotkeySs58, wrapperSs58, netuid); + expect(stakeAfter).toBeGreaterThan(stakeBefore); + }, + }); + + it({ + id: "T10", + title: "Should remove stake via wrapper", + test: async () => { + await ensureSubnetAndWrapperReady(); + + const removeAmount = tao(1); + const wrapperSs58 = convertH160ToSS58(wrapperAddress); + const hotkeySs58 = convertPublicKeyToSs58(hotkey.publicKey); + const stakeBefore = await getStake(api, hotkeySs58, wrapperSs58, netuid); + + const removeStakeTx = await wrapperContract.removeStake(hotkey.publicKey, removeAmount, netuid); + const receipt = await removeStakeTx.wait(); + expect(receipt?.status).toEqual(1); + await waitForFinalizedBlocks(api, 2); + + const stakeAfter = await getStake(api, hotkeySs58, wrapperSs58, netuid); + expect(stakeAfter).toBeLessThan(stakeBefore); + }, + }); + + it({ + id: "T11", + title: "Should lookup UID via wrapper", + test: async () => { + await ensureSubnetAndWrapperReady(); + const lookup = await wrapperContract.uidLookup(netuid, ethWallet.address, 10); + expect(Array.isArray(lookup)).toBe(true); + }, + }); + + it({ + id: "T12", + title: "Should get alpha price via wrapper", + test: async () => { + await ensureSubnetAndWrapperReady(); + const price = await wrapperContract.getAlphaPrice(netuid); + expect(price).toBeDefined(); + }, + }); + + it({ + id: "T13", + title: "Should get crowdloan via wrapper", + test: async () => { + await ensureSubnetAndWrapperReady(); + + const nextId = await api.query.Crowdloan.NextCrowdloanId.getValue(); + const end = await getCrowdloanEndBlock(); + const deposit = BigInt(15_000_000_000); + const minContribution = BigInt(1_000_000_000); + const cap = BigInt(100_000_000_000); + + const tx = api.tx.Crowdloan.create({ + deposit, + min_contribution: minContribution, + cap, + end, + target_address: undefined, + call: api.tx.System.remark({ remark: Binary.fromText("test") }).decodedCall, + }); + await waitForTransactionWithRetry(api, tx, coldkey, "crowdloan_create", 5); + await waitForFinalizedBlocks(api, 1); + + const crowdloan = await wrapperContract.getCrowdloan(nextId); + expect(crowdloan).toBeDefined(); + }, + }); + + it({ + id: "T14", + title: "Should get contribution via wrapper", + test: async () => { + await ensureSubnetAndWrapperReady(); + + const nextId = await api.query.Crowdloan.NextCrowdloanId.getValue(); + expect(nextId).toBeGreaterThan(0); + const contribution = await wrapperContract.getContribution(nextId - 1, coldkey.publicKey); + expect(contribution).toBeDefined(); + }, + }); + + it({ + id: "T15", + title: "Should create crowdloan via wrapper", + test: async () => { + await ensureSubnetAndWrapperReady(); + + const deposit = BigInt(20_000_000_000); + const minContribution = BigInt(2_000_000_000); + const cap = BigInt(200_000_000_000); + const end = await getCrowdloanEndBlock(); + const nextIdBefore = await api.query.Crowdloan.NextCrowdloanId.getValue(); + + const createTx = await wrapperContract.createCrowdloan( + deposit, + minContribution, + cap, + end, + ethWallet2.address, + { value: raoToEth(deposit) } + ); + const receipt = await createTx.wait(); + expect(receipt?.status).toEqual(1); + await waitForCrowdloanId(nextIdBefore + 1); + }, + }); + + it({ + id: "T16", + title: "Should get contributor share via wrapper", + test: async () => { + await ensureSubnetAndWrapperReady(); + + const crowdloanDeposit = BigInt(100_000_000_000); + const networkLastLockCost = await api.query.SubtensorModule.NetworkLastLockCost.getValue(); + const crowdloanCap = networkLastLockCost * BigInt(2); + const currentBlock = await api.query.System.Number.getValue(); + const crowdloanEnd = await getCrowdloanEndBlock(); + const leasingEmissionsShare = 15; + const leasingEndBlock = crowdloanEnd + 200; + + const tx = api.tx.Crowdloan.create({ + deposit: crowdloanDeposit, + min_contribution: BigInt(1_000_000_000), + cap: crowdloanCap, + end: crowdloanEnd, + target_address: undefined, + call: api.tx.SubtensorModule.register_leased_network({ + emissions_share: leasingEmissionsShare, + end_block: leasingEndBlock, + }).decodedCall, + }); + await waitForTransactionWithRetry(api, tx, coldkey, "lease_crowdloan_create", 5); + await waitForFinalizedBlocks(api, 1); + + const nextLeaseId = await api.query.SubtensorModule.NextSubnetLeaseId.getValue(); + const share = await wrapperContract.getContributorShare(nextLeaseId, coldkey.publicKey); + expect(share).toBeDefined(); + }, + }); + + it({ + id: "T17", + title: "Should create lease crowdloan via wrapper", + test: async () => { + await ensureSubnetAndWrapperReady(); + + const crowdloanDeposit = BigInt(100_000_000_000); + const crowdloanMinContribution = BigInt(1_000_000_000); + const networkLastLockCost = await api.query.SubtensorModule.NetworkLastLockCost.getValue(); + const crowdloanCap = networkLastLockCost * BigInt(2); + const crowdloanEnd = await getCrowdloanEndBlock(); + const leasingEmissionsShare = 15; + const leasingEndBlock = crowdloanEnd + 200; + const nextCrowdloanIdBefore = await api.query.Crowdloan.NextCrowdloanId.getValue(); + + const createTx = await wrapperContract.createLeaseCrowdloan( + crowdloanDeposit, + crowdloanMinContribution, + crowdloanCap, + crowdloanEnd, + leasingEmissionsShare, + true, + leasingEndBlock, + { value: raoToEth(crowdloanDeposit) } + ); + const receipt = await createTx.wait(); + expect(receipt?.status).toEqual(1); + await waitForCrowdloanId(nextCrowdloanIdBefore + 1); + }, + }); + + it({ + id: "T18", + title: "Should get proxies via wrapper", + test: async () => { + await ensureSubnetAndWrapperReady(); + + const accountKey = convertH160ToPublicKey(ethWallet.address); + const proxies = await wrapperContract.getProxies(accountKey); + expect(proxies).toBeDefined(); + expect(Array.isArray(proxies)).toBe(true); + }, + }); + + it({ + id: "T19", + title: "Should add proxy via wrapper", + test: async () => { + await ensureSubnetAndWrapperReady(); + + const delegate = generateKeyringPair("sr25519"); + await forceSetBalance(api, convertPublicKeyToSs58(delegate.publicKey)); + + const wrapperSs58 = convertH160ToSS58(wrapperAddress); + const proxiesBefore = await api.query.Proxy.Proxies.getValue(wrapperSs58); + + const addProxyTx = await wrapperContract.addProxy(delegate.publicKey, 0, 0); + const receipt = await addProxyTx.wait(); + expect(receipt?.status).toEqual(1); + await waitForProxyCount(wrapperSs58, proxiesBefore[0].length + 1); + }, + }); + + it({ + id: "T20", + title: "Should proxy call via wrapper", + test: async () => { + await ensureSubnetAndWrapperReady(); + + const proxyType = 0; + const delay = 0; + const proxyContract = new ethers.Contract(IPROXY_ADDRESS, IProxyABI, ethWallet); + const addProxyTx = await proxyContract.addProxy(convertH160ToPublicKey(wrapperAddress), proxyType, delay); + const receipt = await addProxyTx.wait(); + expect(receipt?.status).toEqual(1); + await waitForFinalizedBlocks(api, 1); + + const remarkCall = api.tx.System.remark({ remark: Binary.fromText("") }); + const callData = await remarkCall.getEncodedData(); + const data = callData.asBytes(); + + const proxyCallTx = await wrapperContract.proxyCall(convertH160ToPublicKey(ethWallet.address), [proxyType], [ + ...data, + ]); + const proxyReceipt = await proxyCallTx.wait(); + expect(proxyReceipt?.status).toEqual(1); + }, + }); + + it({ + id: "T21", + title: "Should map address via wrapper", + test: async () => { + await ensureSubnetAndWrapperReady(); + + const mapped = await wrapperContract.addressMapping(ethWallet.address); + expect(mapped).toBeDefined(); + expect(mapped).not.toEqual( + "0x0000000000000000000000000000000000000000000000000000000000000000" + ); + }, + }); + }, +}); diff --git a/ts-tests/utils/evm-config.ts b/ts-tests/utils/evm-config.ts index 1d6a882f79..4df4e70d30 100644 --- a/ts-tests/utils/evm-config.ts +++ b/ts-tests/utils/evm-config.ts @@ -1,46 +1,2499 @@ -/** Balance transfer precompile (same address as contract-tests). */ +export const ISTAKING_ADDRESS = "0x0000000000000000000000000000000000000801"; +export const ISTAKING_V2_ADDRESS = "0x0000000000000000000000000000000000000805"; +export const IPROXY_ADDRESS = "0x000000000000000000000000000000000000080b"; + +export const IStakingABI = [ + { + inputs: [ + { + internalType: "bytes32", + name: "delegate", + type: "bytes32", + }, + ], + name: "addProxy", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "hotkey", + type: "bytes32", + }, + { + internalType: "uint256", + name: "netuid", + type: "uint256", + }, + ], + name: "addStake", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "delegate", + type: "bytes32", + }, + ], + name: "removeProxy", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "hotkey", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "coldkey", + type: "bytes32", + }, + { + internalType: "uint256", + name: "netuid", + type: "uint256", + }, + ], + name: "getStake", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "hotkey", + type: "bytes32", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + internalType: "uint256", + name: "netuid", + type: "uint256", + }, + ], + name: "removeStake", + outputs: [], + stateMutability: "payable", + type: "function", + }, +]; + +export const IStakingV2ABI = [ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "delegate", + "type": "bytes32" + } + ], + "name": "addProxy", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hotkey", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "netuid", + "type": "uint256" + } + ], + "name": "addStake", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hotkey", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "netuid", + "type": "uint256" + } + ], + "name": "getAlphaStakedValidators", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hotkey", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "coldkey", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "netuid", + "type": "uint256" + } + ], + "name": "getStake", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hotkey", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "netuid", + "type": "uint256" + } + ], + "name": "getTotalAlphaStaked", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "coldkey", + "type": "bytes32" + } + ], + "name": "getTotalColdkeyStake", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "coldkey", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "netuid", + "type": "uint256" + } + ], + "name": "getTotalColdkeyStakeOnSubnet", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hotkey", + "type": "bytes32" + } + ], + "name": "getTotalHotkeyStake", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNominatorMinRequiredStake", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "delegate", + "type": "bytes32" + } + ], + "name": "removeProxy", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hotkey", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "netuid", + "type": "uint256" + } + ], + "name": "removeStake", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hotkey", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "limit_price", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "allow_partial", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "netuid", + "type": "uint256" + } + ], + "name": "addStakeLimit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hotkey", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "limit_price", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "allow_partial", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "netuid", + "type": "uint256" + } + ], + "name": "removeStakeLimit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hotkey", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "netuid", + "type": "uint256" + }, + ], + "name": "removeStakeFull", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hotkey", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "netuid", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "limit_price", + "type": "uint256" + } + ], + "name": "removeStakeFullLimit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hotkey", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "netuid", + "type": "uint256" + } + ], + "name": "burnAlpha", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spenderAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "netuid", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "absoluteAmount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "spenderAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "netuid", + "type": "uint256" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spenderAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "netuid", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "increaseAmount", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [], + "stateMutability": "", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spenderAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "netuid", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "decreaseAmount", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [], + "stateMutability": "", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sourceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "destinationAddress", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "hotkey", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "originNetuid", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "destinationNetuid", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferStakeFrom", + "outputs": [], + "stateMutability": "", + "type": "function" + } +]; + +export const IProxyABI = [ + { + inputs: [ + { + internalType: "uint8", + name: "proxy_type", + type: "uint8", + }, + { + internalType: "uint32", + name: "delay", + type: "uint32", + }, + { + internalType: "uint16", + name: "index", + type: "uint16", + }, + ], + name: "createPureProxy", + outputs: [ + { + internalType: "bytes32", + name: "proxy", + type: "bytes32", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "spawner", + type: "bytes32", + }, + { + internalType: "uint8", + name: "proxy_type", + type: "uint8", + }, + { + internalType: "uint16", + name: "index", + type: "uint16", + }, + { + internalType: "uint32", + name: "height", + type: "uint32", + }, + { + internalType: "uint32", + name: "ext_index", + type: "uint32", + }, + ], + name: "killPureProxy", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "real", + type: "bytes32", + }, + { + internalType: "uint8[]", + name: "force_proxy_type", + type: "uint8[]", + }, + { + internalType: "uint8[]", + name: "call", + type: "uint8[]", + }, + ], + name: "proxyCall", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "removeProxies", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "pokeDeposit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "delegate", + type: "bytes32", + }, + { + internalType: "uint8", + name: "proxy_type", + type: "uint8", + }, + { + internalType: "uint32", + name: "delay", + type: "uint32", + }, + ], + name: "removeProxy", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "delegate", + type: "bytes32", + }, + { + internalType: "uint8", + name: "proxy_type", + type: "uint8", + }, + { + internalType: "uint32", + name: "delay", + type: "uint32", + }, + ], + name: "addProxy", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "account", + type: "bytes32", + }, + ], + name: "getProxies", + outputs: [ + { + components: [ + { + internalType: "bytes32", + name: "delegate", + type: "bytes32", + }, + { + internalType: "uint256", + name: "proxy_type", + type: "uint256", + }, + { + internalType: "uint256", + name: "delay", + type: "uint256", + }, + ], + internalType: "struct IProxy.ProxyInfo[]", + name: "", + type: "tuple[]", + }, + ], + stateMutability: "view", + type: "function", + }, +]; + export const IBALANCETRANSFER_ADDRESS = "0x0000000000000000000000000000000000000800"; -export const IBalanceTransferABI = [ +export const IBalanceTransferABI = [ + { + inputs: [ + { + internalType: "bytes32", + name: "data", + type: "bytes32", + }, + ], + name: "transfer", + outputs: [], + stateMutability: "payable", + type: "function", + }, +] as const; + +export const WITHDRAW_CONTRACT_ABI = [ + { + inputs: [], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [ + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "withdraw", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + stateMutability: "payable", + type: "receive", + }, +] as const; + +export const WITHDRAW_CONTRACT_BYTECODE = + "6080604052348015600e575f80fd5b506101148061001c5f395ff3fe608060405260043610601e575f3560e01c80632e1a7d4d146028576024565b36602457005b5f80fd5b603e6004803603810190603a919060b8565b6040565b005b3373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156082573d5f803e3d5ffd5b5050565b5f80fd5b5f819050919050565b609a81608a565b811460a3575f80fd5b50565b5f8135905060b2816093565b92915050565b5f6020828403121560ca5760c96086565b5b5f60d58482850160a6565b9150509291505056fea2646970667358221220f43400858bfe4fcc0bf3c1e2e06d3a9e6ced86454a00bd7e4866b3d4d64e46bb64736f6c634300081a0033"; +export const ALPHA_POOL_CONTRACT_ABI = [ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_contract_hotkey", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "ISTAKING_V2_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "alphaBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "contract_coldkey", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "contract_hotkey", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_netuid", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_alphaAmount", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "_hotkey", + "type": "bytes32" + } + ], + "name": "depositAlpha", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "netuid", + "type": "uint256" + } + ], + "name": "getContractStake", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_contract_coldkey", + "type": "bytes32" + } + ], + "name": "setContractColdkey", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_netuid", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_alphaAmount", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "_user_coldkey", + "type": "bytes32" + } + ], + "name": "withdrawAlpha", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +]; + +export const ALPHA_POOL_CONTRACT_BYTECODE = "6080604052348015600e575f5ffd5b506040516110d83803806110d88339818101604052810190602e9190606c565b80600181905550506092565b5f5ffd5b5f819050919050565b604e81603e565b81146057575f5ffd5b50565b5f815190506066816047565b92915050565b5f60208284031215607e57607d603a565b5b5f608984828501605a565b91505092915050565b6110398061009f5f395ff3fe608060405234801561000f575f5ffd5b5060043610610086575f3560e01c8063cdcde3e911610059578063cdcde3e914610110578063d67c076114610140578063f0d6bb891461015e578063fdbcdce91461017a57610086565b80632849912d1461008a5780633af975ff146100a657806359948a67146100c4578063bee0bca1146100f4575b5f5ffd5b6100a4600480360381019061009f919061090d565b610198565b005b6100ae610518565b6040516100bb919061096c565b60405180910390f35b6100de60048036038101906100d991906109df565b61051d565b6040516100eb9190610a2c565b60405180910390f35b61010e6004803603810190610109919061090d565b61053d565b005b61012a60048036038101906101259190610a45565b610805565b6040516101379190610a2c565b60405180910390f35b61014861088e565b604051610155919061096c565b60405180910390f35b61017860048036038101906101739190610a70565b610894565b005b61018261089d565b60405161018f9190610aaa565b60405180910390f35b5f5f1b5f54036101dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d490610b1d565b60405180910390fd5b5f6101e784610805565b90505f6317ce5f6260e01b5f548487888860405160240161020c959493929190610b3b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090505f61080573ffffffffffffffffffffffffffffffffffffffff165a836040516102949190610bde565b5f604051808303818686f4925050503d805f81146102cd576040519150601f19603f3d011682016040523d82523d5f602084013e6102d2565b606091505b5050905080610316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030d90610c3e565b60405180910390fd5b5f61032087610805565b9050838111610364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035b90610ccc565b60405180910390fd5b5f84826103719190610d17565b905060015486146104ac57631149f65960e01b866001548a8b8560405160240161039f959493929190610b3b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050935061080573ffffffffffffffffffffffffffffffffffffffff165a856040516104269190610bde565b5f604051808303815f8787f1925050503d805f8114610460576040519150601f19603f3d011682016040523d82523d5f602084013e610465565b606091505b505080935050826104ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a290610dba565b60405180910390fd5b5b8060025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a81526020019081526020015f205f8282546105079190610dd8565b925050819055505050505050505050565b5f5481565b6002602052815f5260405f20602052805f5260405f205f91509150505481565b5f5f1b5f5403610582576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057990610b1d565b60405180910390fd5b8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f20541015610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060890610e7b565b60405180910390fd5b5f61061b84610805565b90508260025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8681526020019081526020015f205f8282546106789190610d17565b925050819055505f6317ce5f6260e01b836001548788886040516024016106a3959493929190610b3b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090505f61080573ffffffffffffffffffffffffffffffffffffffff165a8360405161072b9190610bde565b5f604051808303815f8787f1925050503d805f8114610765576040519150601f19603f3d011682016040523d82523d5f602084013e61076a565b606091505b505090505f61077887610805565b90508381106107bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b390610f09565b60405180910390fd5b816107fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f390610f71565b60405180910390fd5b50505050505050565b5f61080573ffffffffffffffffffffffffffffffffffffffff1663e3b598fa6001545f54856040518463ffffffff1660e01b815260040161084893929190610f8f565b602060405180830381865afa158015610863573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108879190610fd8565b9050919050565b60015481565b805f8190555050565b61080581565b5f5ffd5b5f819050919050565b6108b9816108a7565b81146108c3575f5ffd5b50565b5f813590506108d4816108b0565b92915050565b5f819050919050565b6108ec816108da565b81146108f6575f5ffd5b50565b5f81359050610907816108e3565b92915050565b5f5f5f60608486031215610924576109236108a3565b5b5f610931868287016108c6565b9350506020610942868287016108c6565b9250506040610953868287016108f9565b9150509250925092565b610966816108da565b82525050565b5f60208201905061097f5f83018461095d565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6109ae82610985565b9050919050565b6109be816109a4565b81146109c8575f5ffd5b50565b5f813590506109d9816109b5565b92915050565b5f5f604083850312156109f5576109f46108a3565b5b5f610a02858286016109cb565b9250506020610a13858286016108c6565b9150509250929050565b610a26816108a7565b82525050565b5f602082019050610a3f5f830184610a1d565b92915050565b5f60208284031215610a5a57610a596108a3565b5b5f610a67848285016108c6565b91505092915050565b5f60208284031215610a8557610a846108a3565b5b5f610a92848285016108f9565b91505092915050565b610aa4816109a4565b82525050565b5f602082019050610abd5f830184610a9b565b92915050565b5f82825260208201905092915050565b7f636f6e747261637420636f6c646b6579206e6f742073657400000000000000005f82015250565b5f610b07601883610ac3565b9150610b1282610ad3565b602082019050919050565b5f6020820190508181035f830152610b3481610afb565b9050919050565b5f60a082019050610b4e5f83018861095d565b610b5b602083018761095d565b610b686040830186610a1d565b610b756060830185610a1d565b610b826080830184610a1d565b9695505050505050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f610bb882610b8c565b610bc28185610b96565b9350610bd2818560208601610ba0565b80840191505092915050565b5f610be98284610bae565b915081905092915050565b7f75736572206465706f73697420616c7068612063616c6c206661696c656400005f82015250565b5f610c28601e83610ac3565b9150610c3382610bf4565b602082019050919050565b5f6020820190508181035f830152610c5581610c1c565b9050919050565b7f636f6e7472616374207374616b652064656372656173656420616674657220645f8201527f65706f7369740000000000000000000000000000000000000000000000000000602082015250565b5f610cb6602683610ac3565b9150610cc182610c5c565b604082019050919050565b5f6020820190508181035f830152610ce381610caa565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610d21826108a7565b9150610d2c836108a7565b9250828203905081811115610d4457610d43610cea565b5b92915050565b7f75736572206465706f7369742c206d6f7665207374616b652063616c6c2066615f8201527f696c656400000000000000000000000000000000000000000000000000000000602082015250565b5f610da4602483610ac3565b9150610daf82610d4a565b604082019050919050565b5f6020820190508181035f830152610dd181610d98565b9050919050565b5f610de2826108a7565b9150610ded836108a7565b9250828201905080821115610e0557610e04610cea565b5b92915050565b7f757365722077697468647261772c20696e73756666696369656e7420616c70685f8201527f612062616c616e63650000000000000000000000000000000000000000000000602082015250565b5f610e65602983610ac3565b9150610e7082610e0b565b604082019050919050565b5f6020820190508181035f830152610e9281610e59565b9050919050565b7f636f6e7472616374207374616b6520696e6372656173656420616674657220775f8201527f6974686472617700000000000000000000000000000000000000000000000000602082015250565b5f610ef3602783610ac3565b9150610efe82610e99565b604082019050919050565b5f6020820190508181035f830152610f2081610ee7565b9050919050565b7f7573657220776974686472617720616c7068612063616c6c206661696c6564005f82015250565b5f610f5b601f83610ac3565b9150610f6682610f27565b602082019050919050565b5f6020820190508181035f830152610f8881610f4f565b9050919050565b5f606082019050610fa25f83018661095d565b610faf602083018561095d565b610fbc6040830184610a1d565b949350505050565b5f81519050610fd2816108b0565b92915050565b5f60208284031215610fed57610fec6108a3565b5b5f610ffa84828501610fc4565b9150509291505056fea2646970667358221220a0d4b2eb5f0c7f74a27f987e803ae1c8465e0da35f09c240ddb6bac757ce422164736f6c634300081e0033"; + +export const BRIDGE_TOKEN_CONTRACT_ABI = [ + { + "inputs": [ + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "address", + "name": "admin", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + }, + { + "inputs": [], + "name": "UnauthorizedHandler", + "type": "error" + }, + { + "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": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "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": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "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": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isAdmin", + "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": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "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": "value", + "type": "uint256" + } + ], + "name": "transfer", + "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": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } +]; + +export const BRIDGE_TOKEN_CONTRACT_BYTECODE = "0x60806040523480156200001157600080fd5b5060405162000fac38038062000fac8339810160408190526200003491620001ea565b8282600362000044838262000308565b50600462000053828262000308565b5062000065915060009050826200006f565b50505050620003d4565b60008281526005602090815260408083206001600160a01b038516845290915281205460ff16620001185760008381526005602090815260408083206001600160a01b03861684529091529020805460ff19166001179055620000cf3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016200011c565b5060005b92915050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200014a57600080fd5b81516001600160401b038082111562000167576200016762000122565b604051601f8301601f19908116603f0116810190828211818310171562000192576200019262000122565b8160405283815260209250866020858801011115620001b057600080fd5b600091505b83821015620001d45785820183015181830184015290820190620001b5565b6000602085830101528094505050505092915050565b6000806000606084860312156200020057600080fd5b83516001600160401b03808211156200021857600080fd5b620002268783880162000138565b945060208601519150808211156200023d57600080fd5b506200024c8682870162000138565b604086015190935090506001600160a01b03811681146200026c57600080fd5b809150509250925092565b600181811c908216806200028c57607f821691505b602082108103620002ad57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000303576000816000526020600020601f850160051c81016020861015620002de5750805b601f850160051c820191505b81811015620002ff57828155600101620002ea565b5050505b505050565b81516001600160401b0381111562000324576200032462000122565b6200033c8162000335845462000277565b84620002b3565b602080601f8311600181146200037457600084156200035b5750858301515b600019600386901b1c1916600185901b178555620002ff565b600085815260208120601f198616915b82811015620003a55788860151825594840194600190910190840162000384565b5085821015620003c45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bc880620003e46000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806340c10f19116100ad57806395d89b411161007157806395d89b4114610288578063a217fddf14610290578063a9059cbb14610298578063d547741f146102ab578063dd62ed3e146102be57600080fd5b806340c10f191461021357806342966c681461022657806370a082311461023957806379cc67901461026257806391d148541461027557600080fd5b8063248a9ca3116100f4578063248a9ca3146101a657806324d7806c146101c95780632f2ff15d146101dc578063313ce567146101f157806336568abe1461020057600080fd5b806301ffc9a71461013157806306fdde0314610159578063095ea7b31461016e57806318160ddd1461018157806323b872dd14610193575b600080fd5b61014461013f3660046109ab565b6102f7565b60405190151581526020015b60405180910390f35b61016161032e565b60405161015091906109dc565b61014461017c366004610a47565b6103c0565b6002545b604051908152602001610150565b6101446101a1366004610a71565b6103d8565b6101856101b4366004610aad565b60009081526005602052604090206001015490565b6101446101d7366004610ac6565b6103fc565b6101ef6101ea366004610ae1565b610408565b005b60405160128152602001610150565b6101ef61020e366004610ae1565b610433565b6101ef610221366004610a47565b61046b565b6101ef610234366004610aad565b610480565b610185610247366004610ac6565b6001600160a01b031660009081526020819052604090205490565b6101ef610270366004610a47565b61048d565b610144610283366004610ae1565b6104a2565b6101616104cd565b610185600081565b6101446102a6366004610a47565b6104dc565b6101ef6102b9366004610ae1565b6104ea565b6101856102cc366004610b0d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60006001600160e01b03198216637965db0b60e01b148061032857506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606003805461033d90610b37565b80601f016020809104026020016040519081016040528092919081815260200182805461036990610b37565b80156103b65780601f1061038b576101008083540402835291602001916103b6565b820191906000526020600020905b81548152906001019060200180831161039957829003601f168201915b5050505050905090565b6000336103ce81858561050f565b5060019392505050565b6000336103e685828561051c565b6103f1858585610599565b506001949350505050565b600061032881836104a2565b600082815260056020526040902060010154610423816105f8565b61042d8383610602565b50505050565b6001600160a01b038116331461045c5760405163334bd91960e11b815260040160405180910390fd5b6104668282610696565b505050565b6000610476816105f8565b6104668383610703565b61048a338261073d565b50565b6000610498816105f8565b610466838361073d565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606004805461033d90610b37565b6000336103ce818585610599565b600082815260056020526040902060010154610505816105f8565b61042d8383610696565b6104668383836001610773565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461042d578181101561058a57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61042d84848484036000610773565b6001600160a01b0383166105c357604051634b637e8f60e11b815260006004820152602401610581565b6001600160a01b0382166105ed5760405163ec442f0560e01b815260006004820152602401610581565b610466838383610848565b61048a8133610972565b600061060e83836104a2565b61068e5760008381526005602090815260408083206001600160a01b03861684529091529020805460ff191660011790556106463390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610328565b506000610328565b60006106a283836104a2565b1561068e5760008381526005602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610328565b6001600160a01b03821661072d5760405163ec442f0560e01b815260006004820152602401610581565b61073960008383610848565b5050565b6001600160a01b03821661076757604051634b637e8f60e11b815260006004820152602401610581565b61073982600083610848565b6001600160a01b03841661079d5760405163e602df0560e01b815260006004820152602401610581565b6001600160a01b0383166107c757604051634a1406b160e11b815260006004820152602401610581565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161083a91815260200190565b60405180910390a350505050565b6001600160a01b0383166108735780600260008282546108689190610b71565b909155506108e59050565b6001600160a01b038316600090815260208190526040902054818110156108c65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610581565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661090157600280548290039055610920565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161096591815260200190565b60405180910390a3505050565b61097c82826104a2565b6107395760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610581565b6000602082840312156109bd57600080fd5b81356001600160e01b0319811681146109d557600080fd5b9392505050565b60006020808352835180602085015260005b81811015610a0a578581018301518582016040015282016109ee565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610a4257600080fd5b919050565b60008060408385031215610a5a57600080fd5b610a6383610a2b565b946020939093013593505050565b600080600060608486031215610a8657600080fd5b610a8f84610a2b565b9250610a9d60208501610a2b565b9150604084013590509250925092565b600060208284031215610abf57600080fd5b5035919050565b600060208284031215610ad857600080fd5b6109d582610a2b565b60008060408385031215610af457600080fd5b82359150610b0460208401610a2b565b90509250929050565b60008060408385031215610b2057600080fd5b610b2983610a2b565b9150610b0460208401610a2b565b600181811c90821680610b4b57607f821691505b602082108103610b6b57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561032857634e487b7160e01b600052601160045260246000fdfea2646970667358221220e179fc58c926e64cb6e87416f8ca64c117044e3195b184afe45038857606c15364736f6c63430008160033" + +export const PRECOMPILE_WRAPPER_ABI = [ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "delegate", + "type": "bytes32" + }, + { + "internalType": "uint8", + "name": "proxy_type", + "type": "uint8" + }, + { + "internalType": "uint32", + "name": "delay", + "type": "uint32" + } + ], + "name": "addProxy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hotkey", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "netuid", + "type": "uint256" + } + ], + "name": "addStake", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target_address", + "type": "address" + } + ], + "name": "addressMapping", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "addressMappingPrecompile", + "outputs": [ + { + "internalType": "contract IAddressMapping", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "alpha", + "outputs": [ + { + "internalType": "contract IAlpha", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "balanceTransfer", + "outputs": [ + { + "internalType": "contract ISubtensorBalanceTransfer", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "netuid", + "type": "uint16" + }, + { + "internalType": "bytes32", + "name": "hotkey", + "type": "bytes32" + } + ], + "name": "burnedRegister", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "deposit", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "minContribution", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "cap", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "end", + "type": "uint32" + }, + { + "internalType": "address", + "name": "targetAddress", + "type": "address" + } + ], + "name": "createCrowdloan", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "crowdloanDeposit", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "crowdloanMinContribution", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "crowdloanCap", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "crowdloanEnd", + "type": "uint32" + }, + { + "internalType": "uint8", + "name": "leasingEmissionsShare", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "hasLeasingEndBlock", + "type": "bool" + }, + { + "internalType": "uint32", + "name": "leasingEndBlock", + "type": "uint32" + } + ], + "name": "createLeaseCrowdloan", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "crowdloan", + "outputs": [ + { + "internalType": "contract ICrowdloan", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "netuid", + "type": "uint16" + } + ], + "name": "getAlphaPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "crowdloanId", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "coldkey", + "type": "bytes32" + } + ], + "name": "getContribution", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "leaseId", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "contributor", + "type": "bytes32" + } + ], + "name": "getContributorShare", + "outputs": [ + { + "internalType": "uint128", + "name": "", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "crowdloanId", + "type": "uint32" + } + ], + "name": "getCrowdloan", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "creator", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "deposit", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "min_contribution", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "end", + "type": "uint32" + }, + { + "internalType": "uint64", + "name": "cap", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "funds_account", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "raised", + "type": "uint64" + }, + { + "internalType": "bool", + "name": "has_target_address", + "type": "bool" + }, + { + "internalType": "bytes32", + "name": "target_address", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "finalized", + "type": "bool" + }, + { + "internalType": "uint32", + "name": "contributors_count", + "type": "uint32" + } + ], + "internalType": "struct CrowdloanInfo", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "account", + "type": "bytes32" + } + ], + "name": "getProxies", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "delegate", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "proxy_type", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "delay", + "type": "uint256" + } + ], + "internalType": "struct IProxy.ProxyInfo[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "netuid", + "type": "uint16" + } + ], + "name": "getServingRateLimit", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "netuid", + "type": "uint16" + } + ], + "name": "getNetworkRegistrationBlock", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "coldkey", + "type": "bytes32" + } + ], + "name": "getTotalColdkeyStake", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hotkey", + "type": "bytes32" + } + ], + "name": "getTotalHotkeyStake", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "netuid", + "type": "uint16" + } + ], + "name": "getUidCount", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "leasing", + "outputs": [ + { + "internalType": "contract ILeasing", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "metagraph", + "outputs": [ + { + "internalType": "contract IMetagraph", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "neuron", + "outputs": [ + { + "internalType": "contract INeuron", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxy", + "outputs": [ + { + "internalType": "contract IProxy", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "real", + "type": "bytes32" + }, + { + "internalType": "uint8[]", + "name": "force_proxy_type", + "type": "uint8[]" + }, + { + "internalType": "uint8[]", + "name": "call", + "type": "uint8[]" + } + ], + "name": "proxyCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hotkey", + "type": "bytes32" + }, + { + "internalType": "string", + "name": "subnetName", + "type": "string" + }, + { + "internalType": "string", + "name": "githubRepo", + "type": "string" + }, + { + "internalType": "string", + "name": "subnetContact", + "type": "string" + }, + { + "internalType": "string", + "name": "subnetUrl", + "type": "string" + }, + { + "internalType": "string", + "name": "discord", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "string", + "name": "additional", + "type": "string" + } + ], + "name": "registerNetworkWithDetails", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hotkey", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "netuid", + "type": "uint256" + } + ], + "name": "removeStake", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "staking", + "outputs": [ + { + "internalType": "contract IStaking", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "subnet", + "outputs": [ + { + "internalType": "contract ISubnet", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "data", + "type": "bytes32" + } + ], + "name": "transfer", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "netuid", + "type": "uint16" + }, + { + "internalType": "address", + "name": "evm_address", + "type": "address" + }, + { + "internalType": "uint16", + "name": "limit", + "type": "uint16" + } + ], + "name": "uidLookup", + "outputs": [ + { + "components": [ + { + "internalType": "uint16", + "name": "uid", + "type": "uint16" + }, + { + "internalType": "uint64", + "name": "block_associated", + "type": "uint64" + } + ], + "internalType": "struct LookupItem[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "uidLookupPrecompile", + "outputs": [ + { + "internalType": "contract IUidLookup", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } +]; + +export const PRECOMPILE_WRAPPER_BYTECODE = "6080604052348015600e575f5ffd5b506119368061001c5f395ff3fe6080604052600436106101da575f3560e01c80638bba466c116100fd578063b1f789ef11610092578063d75e3e0d11610062578063d75e3e0d14610547578063db1d0fd51461055c578063ec55688914610571578063fc6679fb14610586575f5ffd5b8063b1f789ef146104de578063bfe252a21461050a578063caf2ebf21461051f578063cd6f4eb114610534575f5ffd5b8063a2176276116100cd578063a217627614610482578063ac3166bf14610497578063afed65f9146104ac578063b0c751b0146104bf575f5ffd5b80638bba466c146103ec57806394e3ac6f14610418578063998538c4146104445780639f246f6f14610463575f5ffd5b80634cf088d91161017357806369e38bc31161014357806369e38bc31461038857806371214e27146103a75780637444dadc146103ba5780637d691e30146103d9575f5ffd5b80634cf088d9146103145780635b53ddde146103295780635b7210c51461033e5780635e25f3f814610375575f5ffd5b80631fc9b141116101ae5780631fc9b141146102825780633175bd98146102955780634054ecca146102d45780634c378a96146102e7575f5ffd5b80620ae759146101de5780630494cd9a146101ff5780630cadeda5146102315780631f19357214610250575b5f5ffd5b3480156101e9575f5ffd5b506101fd6101f8366004610e85565b61059b565b005b34801561020a575f5ffd5b5061021e610219366004610f06565b6105f4565b6040519081526020015b60405180910390f35b34801561023c575f5ffd5b506101fd61024b366004610f33565b610665565b34801561025b575f5ffd5b5061026f61026a366004610f7f565b6106a0565b60405161ffff9091168152602001610228565b6101fd610290366004610f9a565b610705565b3480156102a0575f5ffd5b506102b46102af366004610fc3565b610739565b604080516001600160801b03938416815292909116602083015201610228565b6101fd6102e2366004610fed565b6107b3565b3480156102f2575f5ffd5b506102fc61080481565b6040516001600160a01b039091168152602001610228565b34801561031f575f5ffd5b506102fc61080581565b348015610334575f5ffd5b506102fc61080a81565b348015610349575f5ffd5b5061035d610358366004610fc3565b6107f7565b6040516001600160401b039091168152602001610228565b6101fd610383366004611074565b61086c565b348015610393575f5ffd5b5061021e6103a2366004610f7f565b6108d6565b6101fd6103b53660046111c2565b610901565b3480156103c5575f5ffd5b5061035d6103d4366004610f7f565b610989565b6101fd6103e7366004610f9a565b6109ef565b3480156103f7575f5ffd5b5061040b61040636600461122b565b610a23565b6040516102289190611246565b348015610423575f5ffd5b50610437610432366004611334565b610add565b604051610228919061134b565b34801561044f575f5ffd5b5061021e61045e366004611334565b610b42565b34801561046e575f5ffd5b5061021e61047d366004611334565b610b6a565b34801561048d575f5ffd5b506102fc61080681565b3480156104a2575f5ffd5b506102fc61080c81565b6101fd6104ba3660046113b6565b610b92565b3480156104ca575f5ffd5b5061035d6104d9366004610f7f565b610c26565b3480156104e9575f5ffd5b506104fd6104f8366004611445565b610c51565b6040516102289190611480565b348015610515575f5ffd5b506102fc61080981565b34801561052a575f5ffd5b506102fc61080381565b6101fd610542366004611334565b610cd8565b348015610552575f5ffd5b506102fc61080081565b348015610567575f5ffd5b506102fc61080881565b34801561057c575f5ffd5b506102fc61080b81565b348015610591575f5ffd5b506102fc61080281565b604051620ae75960e01b815261080b90620ae759906105c29086908690869060040161150d565b5f604051808303815f87803b1580156105d9575f5ffd5b505af11580156105eb573d5f5f3e3d5ffd5b50505050505050565b60405163024a66cd60e11b81526001600160a01b03821660048201525f9061080c90630494cd9a906024015b602060405180830381865afa15801561063b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065f9190611541565b92915050565b604051630cadeda560e01b81526004810184905260ff8316602482015263ffffffff8216604482015261080b90630cadeda5906064016105c2565b604051630f8c9ab960e11b815261ffff821660048201525f9061080290631f19357290602401602060405180830381865afa1580156106e1573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065f9190611558565b604051631fc9b14160e01b815260048101849052602481018390526044810182905261080590631fc9b141906064016105c2565b60405163062eb7b360e31b815263ffffffff83166004820152602481018290525f90819061080a90633175bd98906044016040805180830381865afa158015610784573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a89190611589565b915091509250929050565b60405163202a766560e11b815261ffff831660048201526024810182905261080490634054ecca9034906044015f604051808303818588803b1580156105d9575f5ffd5b604051635b7210c560e01b815263ffffffff83166004820152602481018290525f9061080990635b7210c590604401602060405180830381865afa158015610841573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061086591906115c5565b9392505050565b604051631cf98c6b60e01b815261080390631cf98c6b9061089f908b908b908b908b908b908b908b908b9060040161160e565b5f604051808303815f87803b1580156108b6575f5ffd5b505af11580156108c8573d5f5f3e3d5ffd5b505050505050505050505050565b6040516369e38bc360e01b815261ffff821660048201525f90610808906369e38bc390602401610620565b60405163127e1adb60e01b81526001600160401b03808716600483015280861660248301528416604482015263ffffffff831660648201526001600160a01b03821660848201526108099063127e1adb9060a4015f604051808303815f87803b15801561096c575f5ffd5b505af115801561097e573d5f5f3e3d5ffd5b505050505050505050565b604051631d1136b760e21b815261ffff821660048201525f9061080390637444dadc906024015b602060405180830381865afa1580156109cb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065f91906115c5565b6040516307d691e360e41b815260048101849052602481018390526044810182905261080590637d691e30906064016105c2565b60408051610160810182525f80825260208201819052818301819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082015290516322ee919b60e21b815263ffffffff8316600482015261080990638bba466c9060240161016060405180830381865afa158015610ab9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065f91906116c3565b6040516394e3ac6f60e01b81526004810182905260609061080b906394e3ac6f906024015f60405180830381865afa158015610b1b573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261065f919081019061178a565b6040516326614e3160e21b8152600481018290525f906108059063998538c490602401610620565b604051639f246f6f60e01b8152600481018290525f9061080590639f246f6f90602401610620565b60405163afed65f960e01b81526001600160401b03808916600483015280881660248301528616604482015263ffffffff808616606483015260ff8516608483015283151560a4830152821660c482015261080a9063afed65f99060e4015f604051808303815f87803b158015610c07575f5ffd5b505af1158015610c19573d5f5f3e3d5ffd5b5050505050505050505050565b604051630b0c751b60e41b815261ffff821660048201525f906108039063b0c751b0906024016109b0565b60405163b1f789ef60e01b815261ffff80851660048301526001600160a01b0384166024830152821660448201526060906108069063b1f789ef906064015f60405180830381865afa158015610ca9573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610cd0919081019061183f565b949350505050565b60405163cd6f4eb160e01b8152600481018290526108009063cd6f4eb19034906024015f604051808303818588803b158015610d12575f5ffd5b505af1158015610d24573d5f5f3e3d5ffd5b505050505050565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b0381118282101715610d6357610d63610d2c565b60405290565b604051606081016001600160401b0381118282101715610d6357610d63610d2c565b604080519081016001600160401b0381118282101715610d6357610d63610d2c565b604051601f8201601f191681016001600160401b0381118282101715610dd557610dd5610d2c565b604052919050565b5f6001600160401b03821115610df557610df5610d2c565b5060051b60200190565b803560ff81168114610e0f575f5ffd5b919050565b5f82601f830112610e23575f5ffd5b8135610e36610e3182610ddd565b610dad565b8082825260208201915060208360051b860101925085831115610e57575f5ffd5b602085015b83811015610e7b57610e6d81610dff565b835260209283019201610e5c565b5095945050505050565b5f5f5f60608486031215610e97575f5ffd5b8335925060208401356001600160401b03811115610eb3575f5ffd5b610ebf86828701610e14565b92505060408401356001600160401b03811115610eda575f5ffd5b610ee686828701610e14565b9150509250925092565b80356001600160a01b0381168114610e0f575f5ffd5b5f60208284031215610f16575f5ffd5b61086582610ef0565b63ffffffff81168114610f30575f5ffd5b50565b5f5f5f60608486031215610f45575f5ffd5b83359250610f5560208501610dff565b91506040840135610f6581610f1f565b809150509250925092565b61ffff81168114610f30575f5ffd5b5f60208284031215610f8f575f5ffd5b813561086581610f70565b5f5f5f60608486031215610fac575f5ffd5b505081359360208301359350604090920135919050565b5f5f60408385031215610fd4575f5ffd5b8235610fdf81610f1f565b946020939093013593505050565b5f5f60408385031215610ffe575f5ffd5b8235610fdf81610f70565b5f82601f830112611018575f5ffd5b81356001600160401b0381111561103157611031610d2c565b611044601f8201601f1916602001610dad565b818152846020838601011115611058575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f5f5f5f610100898b03121561108c575f5ffd5b8835975060208901356001600160401b038111156110a8575f5ffd5b6110b48b828c01611009565b97505060408901356001600160401b038111156110cf575f5ffd5b6110db8b828c01611009565b96505060608901356001600160401b038111156110f6575f5ffd5b6111028b828c01611009565b95505060808901356001600160401b0381111561111d575f5ffd5b6111298b828c01611009565b94505060a08901356001600160401b03811115611144575f5ffd5b6111508b828c01611009565b93505060c08901356001600160401b0381111561116b575f5ffd5b6111778b828c01611009565b92505060e08901356001600160401b03811115611192575f5ffd5b61119e8b828c01611009565b9150509295985092959890939650565b6001600160401b0381168114610f30575f5ffd5b5f5f5f5f5f60a086880312156111d6575f5ffd5b85356111e1816111ae565b945060208601356111f1816111ae565b93506040860135611201816111ae565b9250606086013561121181610f1f565b915061121f60808701610ef0565b90509295509295909350565b5f6020828403121561123b575f5ffd5b813561086581610f1f565b8151815260208083015161016083019161126a908401826001600160401b03169052565b50604083015161128560408401826001600160401b03169052565b50606083015161129d606084018263ffffffff169052565b5060808301516112b860808401826001600160401b03169052565b5060a083015160a083015260c08301516112dd60c08401826001600160401b03169052565b5060e08301516112f160e084018215159052565b5061010083015161010083015261012083015161131361012084018215159052565b5061014083015161132d61014084018263ffffffff169052565b5092915050565b5f60208284031215611344575f5ffd5b5035919050565b602080825282518282018190525f918401906040840190835b8181101561139e57835180518452602081015160208501526040810151604085015250606083019250602084019350600181019050611364565b509095945050505050565b8015158114610f30575f5ffd5b5f5f5f5f5f5f5f60e0888a0312156113cc575f5ffd5b87356113d7816111ae565b965060208801356113e7816111ae565b955060408801356113f7816111ae565b9450606088013561140781610f1f565b935061141560808901610dff565b925060a0880135611425816113a9565b915060c088013561143581610f1f565b8091505092959891949750929550565b5f5f5f60608486031215611457575f5ffd5b833561146281610f70565b925061147060208501610ef0565b91506040840135610f6581610f70565b602080825282518282018190525f918401906040840190835b8181101561139e578351805161ffff1684526020908101516001600160401b03168185015290930192604090920191600101611499565b5f8151808452602084019350602083015f5b8281101561150357815160ff168652602095860195909101906001016114e2565b5093949350505050565b838152606060208201525f61152560608301856114d0565b828103604084015261153781856114d0565b9695505050505050565b5f60208284031215611551575f5ffd5b5051919050565b5f60208284031215611568575f5ffd5b815161086581610f70565b80516001600160801b0381168114610e0f575f5ffd5b5f5f6040838503121561159a575f5ffd5b6115a383611573565b91506115b160208401611573565b90509250929050565b8051610e0f816111ae565b5f602082840312156115d5575f5ffd5b8151610865816111ae565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b88815261010060208201525f61162861010083018a6115e0565b828103604084015261163a818a6115e0565b9050828103606084015261164e81896115e0565b9050828103608084015261166281886115e0565b905082810360a084015261167681876115e0565b905082810360c084015261168a81866115e0565b905082810360e084015261169e81856115e0565b9b9a5050505050505050505050565b8051610e0f81610f1f565b8051610e0f816113a9565b5f6101608284031280156116d5575f5ffd5b506116de610d40565b825181526116ee602084016115ba565b60208201526116ff604084016115ba565b6040820152611710606084016116ad565b6060820152611721608084016115ba565b608082015260a0838101519082015261173c60c084016115ba565b60c082015261174d60e084016116b8565b60e0820152610100838101519082015261176a61012084016116b8565b61012082015261177d61014084016116ad565b6101408201529392505050565b5f6020828403121561179a575f5ffd5b81516001600160401b038111156117af575f5ffd5b8201601f810184136117bf575f5ffd5b80516117cd610e3182610ddd565b808282526020820191506020606084028501019250868311156117ee575f5ffd5b6020840193505b82841015611537576060848803121561180c575f5ffd5b611814610d69565b84518152602080860151818301526040808701519083015290835260609094019391909101906117f5565b5f6020828403121561184f575f5ffd5b81516001600160401b03811115611864575f5ffd5b8201601f81018413611874575f5ffd5b8051611882610e3182610ddd565b8082825260208201915060208360061b8501019250868311156118a3575f5ffd5b6020840193505b8284101561153757604084880312156118c1575f5ffd5b6118c9610d8b565b84516118d481610f70565b815260208501516118e4816111ae565b80602083015250808352506020820191506040840193506118aa56fea264697066735822122026460b0cf8f5e17c58e4083c1b1155431c8d2cb9962cd9d5f6105ce473df73ee64736f6c63430008230033"; + +export const STAKE_WRAP_ABI = [ + { + inputs: [], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { internalType: "bytes32", - name: "data", + name: "hotkey", type: "bytes32", }, + { + internalType: "uint256", + name: "netuid", + type: "uint256", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, ], - name: "transfer", + name: "removeStake", outputs: [], - stateMutability: "payable", + stateMutability: "nonpayable", type: "function", }, -] as const; - -export const WITHDRAW_CONTRACT_ABI = [ { - inputs: [], + inputs: [ + { + internalType: "bytes32", + name: "hotkey", + type: "bytes32", + }, + { + internalType: "uint256", + name: "netuid", + type: "uint256", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "stake", + outputs: [], stateMutability: "nonpayable", - type: "constructor", + type: "function", }, { inputs: [ + { + internalType: "bytes32", + name: "hotkey", + type: "bytes32", + }, { internalType: "uint256", - name: "value", + name: "netuid", + type: "uint256", + }, + { + internalType: "uint256", + name: "limitPrice", + type: "uint256", + }, + { + internalType: "uint256", + name: "amount", type: "uint256", }, + { + internalType: "bool", + name: "allowPartial", + type: "bool", + }, ], - name: "withdraw", + name: "stakeLimit", outputs: [], - stateMutability: "payable", + stateMutability: "nonpayable", type: "function", }, { stateMutability: "payable", type: "receive", }, -] as const; +]; -export const WITHDRAW_CONTRACT_BYTECODE = - "6080604052348015600e575f80fd5b506101148061001c5f395ff3fe608060405260043610601e575f3560e01c80632e1a7d4d146028576024565b36602457005b5f80fd5b603e6004803603810190603a919060b8565b6040565b005b3373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156082573d5f803e3d5ffd5b5050565b5f80fd5b5f819050919050565b609a81608a565b811460a3575f80fd5b50565b5f8135905060b2816093565b92915050565b5f6020828403121560ca5760c96086565b5b5f60d58482850160a6565b9150509291505056fea2646970667358221220f43400858bfe4fcc0bf3c1e2e06d3a9e6ced86454a00bd7e4866b3d4d64e46bb64736f6c634300081a0033"; +export const STAKE_WRAP_BYTECODE = + "6080604052348015600e575f5ffd5b50335f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ad08061005b5f395ff3fe608060405260043610610042575f3560e01c80632daedd521461004d5780637d691e30146100755780638da5cb5b1461009d57806390b9d534146100c757610049565b3661004957005b5f5ffd5b348015610058575f5ffd5b50610073600480360381019061006e91906106bd565b6100ef565b005b348015610080575f5ffd5b5061009b600480360381019061009691906106bd565b6102ad565b005b3480156100a8575f5ffd5b506100b161046b565b6040516100be919061074c565b60405180910390f35b3480156100d2575f5ffd5b506100ed60048036038101906100e8919061079a565b61048f565b005b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461017d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017490610891565b60405180910390fd5b5f631fc9b14160e01b84838560405160240161019b939291906108cd565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090505f61080573ffffffffffffffffffffffffffffffffffffffff165a836040516102239190610954565b5f604051808303815f8787f1925050503d805f811461025d576040519150601f19603f3d011682016040523d82523d5f602084013e610262565b606091505b50509050806102a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161029d906109b4565b60405180910390fd5b5050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461033b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033290610891565b60405180910390fd5b5f637d691e3060e01b848385604051602401610359939291906108cd565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090505f61080573ffffffffffffffffffffffffffffffffffffffff165a836040516103e19190610954565b5f604051808303815f8787f1925050503d805f811461041b576040519150601f19603f3d011682016040523d82523d5f602084013e610420565b606091505b5050905080610464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045b906109b4565b60405180910390fd5b5050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461051d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051490610891565b60405180910390fd5b5f635beb6b7460e01b868486858960405160240161053f9594939291906109e1565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090505f61080573ffffffffffffffffffffffffffffffffffffffff165a836040516105c79190610954565b5f604051808303815f8787f1925050503d805f8114610601576040519150601f19603f3d011682016040523d82523d5f602084013e610606565b606091505b505090508061064a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064190610a7c565b60405180910390fd5b50505050505050565b5f5ffd5b5f819050919050565b61066981610657565b8114610673575f5ffd5b50565b5f8135905061068481610660565b92915050565b5f819050919050565b61069c8161068a565b81146106a6575f5ffd5b50565b5f813590506106b781610693565b92915050565b5f5f5f606084860312156106d4576106d3610653565b5b5f6106e186828701610676565b93505060206106f2868287016106a9565b9250506040610703868287016106a9565b9150509250925092565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6107368261070d565b9050919050565b6107468161072c565b82525050565b5f60208201905061075f5f83018461073d565b92915050565b5f8115159050919050565b61077981610765565b8114610783575f5ffd5b50565b5f8135905061079481610770565b92915050565b5f5f5f5f5f60a086880312156107b3576107b2610653565b5b5f6107c088828901610676565b95505060206107d1888289016106a9565b94505060406107e2888289016106a9565b93505060606107f3888289016106a9565b925050608061080488828901610786565b9150509295509295909350565b5f82825260208201905092915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f5f8201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f61087b602183610811565b915061088682610821565b604082019050919050565b5f6020820190508181035f8301526108a88161086f565b9050919050565b6108b881610657565b82525050565b6108c78161068a565b82525050565b5f6060820190506108e05f8301866108af565b6108ed60208301856108be565b6108fa60408301846108be565b949350505050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f61092e82610902565b610938818561090c565b9350610948818560208601610916565b80840191505092915050565b5f61095f8284610924565b915081905092915050565b7f6164645374616b652063616c6c206661696c65640000000000000000000000005f82015250565b5f61099e601483610811565b91506109a98261096a565b602082019050919050565b5f6020820190508181035f8301526109cb81610992565b9050919050565b6109db81610765565b82525050565b5f60a0820190506109f45f8301886108af565b610a0160208301876108be565b610a0e60408301866108be565b610a1b60608301856109d2565b610a2860808301846108be565b9695505050505050565b7f6164645374616b654c696d69742063616c6c206661696c6564000000000000005f82015250565b5f610a66601983610811565b9150610a7182610a32565b602082019050919050565b5f6020820190508181035f830152610a9381610a5a565b905091905056fea2646970667358221220f8ad692d7919fb10f08e5311c64a0aa705a4e665689967633c2ddade5398076664736f6c634300081e0033"; + + +export const PRECOMPILE_GAS_CONTRACT_ABI = [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "message", + "type": "string" + } + ], + "name": "Log", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "iterations", + "type": "uint64" + } + ], + "name": "callED25519", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "iterations", + "type": "uint64" + } + ], + "name": "callSR25519", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] + +export const PRECOMPILE_GAS_CONTRACT_BYTECODE = "60806040527f1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef5f1b5f555f5f1b6001555f5f1b6002555f5f1b6003553480156045575f5ffd5b5061048b806100535f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806356554a5714610038578063bd9cac2b14610054575b5f5ffd5b610052600480360381019061004d919061028f565b610070565b005b61006e6004803603810190610069919061028f565b61015f565b005b5f5f90505b8167ffffffffffffffff168167ffffffffffffffff1610156101265761040373ffffffffffffffffffffffffffffffffffffffff1663869adcb95f546001546002546003546040518563ffffffff1660e01b81526004016100d994939291906102d2565b602060405180830381865afa1580156100f4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610118919061034a565b508080600101915050610075565b507fcf34ef537ac33ee1ac626ca1587a0a7e8e51561e5514f8cb36afa1c5102b3bab604051610154906103cf565b60405180910390a150565b5f5f90505b8167ffffffffffffffff168167ffffffffffffffff1610156102155761040273ffffffffffffffffffffffffffffffffffffffff1663869adcb95f546001546002546003546040518563ffffffff1660e01b81526004016101c894939291906102d2565b602060405180830381865afa1580156101e3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610207919061034a565b508080600101915050610164565b507fcf34ef537ac33ee1ac626ca1587a0a7e8e51561e5514f8cb36afa1c5102b3bab60405161024390610437565b60405180910390a150565b5f5ffd5b5f67ffffffffffffffff82169050919050565b61026e81610252565b8114610278575f5ffd5b50565b5f8135905061028981610265565b92915050565b5f602082840312156102a4576102a361024e565b5b5f6102b18482850161027b565b91505092915050565b5f819050919050565b6102cc816102ba565b82525050565b5f6080820190506102e55f8301876102c3565b6102f260208301866102c3565b6102ff60408301856102c3565b61030c60608301846102c3565b95945050505050565b5f8115159050919050565b61032981610315565b8114610333575f5ffd5b50565b5f8151905061034481610320565b92915050565b5f6020828403121561035f5761035e61024e565b5b5f61036c84828501610336565b91505092915050565b5f82825260208201905092915050565b7f63616c6c535232353531390000000000000000000000000000000000000000005f82015250565b5f6103b9600b83610375565b91506103c482610385565b602082019050919050565b5f6020820190508181035f8301526103e6816103ad565b9050919050565b7f63616c6c454432353531390000000000000000000000000000000000000000005f82015250565b5f610421600b83610375565b915061042c826103ed565b602082019050919050565b5f6020820190508181035f83015261044e81610415565b905091905056fea26469706673582212202addcdae9c59ee78157cddedc3148678edf455132bdfc62347f85e7c660b4d2164736f6c634300081e0033" \ No newline at end of file diff --git a/ts-tests/utils/evm.ts b/ts-tests/utils/evm.ts index f8d9f6f251..78ac6ce8f7 100644 --- a/ts-tests/utils/evm.ts +++ b/ts-tests/utils/evm.ts @@ -24,3 +24,15 @@ export function createEthersWallet(provider: ethers.JsonRpcProvider): ethers.Wal export async function getEthBalance(provider: ethers.Provider, address: string): Promise { return provider.getBalance(address); } + +export async function forceSetChainID(api: TypedApi, chainId: bigint): Promise { + const value = await api.query.EVMChainId.ChainId.getValue(); + if (value === chainId) { + return; + } + + const alice = new Keyring({ type: "sr25519" }).addFromUri("//Alice"); + const internalCall = api.tx.AdminUtils.sudo_set_evm_chain_id({ chain_id: chainId }); + const tx = api.tx.Sudo.sudo({ call: internalCall.decodedCall }); + await waitForTransactionWithRetry(api, tx, alice, "sudo_set_evm_chain_id", 5); +} diff --git a/ts-tests/utils/index.ts b/ts-tests/utils/index.ts index c05e5dd280..781dde0d2e 100644 --- a/ts-tests/utils/index.ts +++ b/ts-tests/utils/index.ts @@ -8,3 +8,6 @@ export * from "./shield_helpers.ts"; export * from "./staking.js"; export * from "./subnet.js"; export * from "./transactions.js"; +export * from "./contracts/index.ts"; +export * from "./proxy.ts"; +export * from "./wasm-contract.ts"; diff --git a/ts-tests/utils/staking.ts b/ts-tests/utils/staking.ts index 4efdc19802..57c08e2501 100644 --- a/ts-tests/utils/staking.ts +++ b/ts-tests/utils/staking.ts @@ -371,7 +371,7 @@ export async function sudoSetAdminFreezeWindow(api: TypedApi, window: window, }); const tx = api.tx.Sudo.sudo({ call: internalCall.decodedCall }); - await waitForTransactionWithRetry(api, tx, alice, "sudo_set_admin_freeze_window"); + await waitForTransactionWithRetry(api, tx, alice, "sudo_set_admin_freeze_window", 5); } export async function sudoSetEmaPriceHalvingPeriod( @@ -396,7 +396,7 @@ export async function sudoSetLockReductionInterval(api: TypedApi, alpha: bigint): Promise { diff --git a/ts-tests/utils/subnet.ts b/ts-tests/utils/subnet.ts index b45f4a7934..e5b26e81ff 100644 --- a/ts-tests/utils/subnet.ts +++ b/ts-tests/utils/subnet.ts @@ -25,7 +25,7 @@ export async function addNewSubnetwork( const registerNetworkTx = api.tx.SubtensorModule.register_network({ hotkey: hotkey.address, }); - await waitForTransactionWithRetry(api, registerNetworkTx, coldkey, "register_network"); + await waitForTransactionWithRetry(api, registerNetworkTx, coldkey, "register_network", 5); return totalNetworks; } @@ -44,15 +44,21 @@ export async function burnedRegister( await new Promise((resolve) => setTimeout(resolve, 1000)); const tx = api.tx.SubtensorModule.burned_register({ hotkey: hotkeyAddress, netuid: netuid }); - await waitForTransactionWithRetry(api, tx, coldkey, "burned_register"); + await waitForTransactionWithRetry(api, tx, coldkey, "burned_register", 5); } export async function startCall(api: TypedApi, netuid: number, coldkey: KeyringPair): Promise { const registerBlock = Number(await api.query.SubtensorModule.NetworkRegisteredAt.getValue(netuid)); let currentBlock = await api.query.System.Number.getValue(); const duration = Number(await api.constants.SubtensorModule.InitialStartCallDelay); + const deadline = Date.now() + 120_000; while (currentBlock - registerBlock <= duration) { + if (Date.now() > deadline) { + throw new Error( + `startCall timed out for netuid ${netuid} (registerBlock=${registerBlock}, currentBlock=${currentBlock}, duration=${duration})` + ); + } await new Promise((resolve) => setTimeout(resolve, 2000)); currentBlock = await api.query.System.Number.getValue(); } @@ -60,7 +66,7 @@ export async function startCall(api: TypedApi, netuid: number, await new Promise((resolve) => setTimeout(resolve, 2000)); const tx = api.tx.SubtensorModule.start_call({ netuid: netuid }); - await waitForTransactionWithRetry(api, tx, coldkey, "start_call"); + await waitForTransactionWithRetry(api, tx, coldkey, "start_call", 5); await new Promise((resolve) => setTimeout(resolve, 1000)); } diff --git a/ts-tests/utils/wasm-contract.ts b/ts-tests/utils/wasm-contract.ts new file mode 100644 index 0000000000..2434de5134 --- /dev/null +++ b/ts-tests/utils/wasm-contract.ts @@ -0,0 +1,151 @@ +import { MultiAddress, subtensor } from "@polkadot-api/descriptors"; +import { Keyring } from "@polkadot/keyring"; +import type { KeyringPair } from "@polkadot/keyring/types"; +import type { TypedApi } from "polkadot-api"; +import { Binary } from "polkadot-api"; +import { convertPublicKeyToSs58 } from "./address.ts"; +import { getBalance } from "./balance.ts"; +import { sudoSetAdminFreezeWindow } from "./staking.ts"; +import { sendTransaction, waitForTransactionWithRetry } from "./transactions.ts"; + +export const BITTENSOR_WASM_PATH = "../ink/bittensor.wasm" + +export async function getTransferCallCode( + api: TypedApi, + receiver: KeyringPair, + transferAmount: number +): Promise { + const unsignedTx = api.tx.Balances.transfer_keep_alive({ + dest: MultiAddress.Id(convertPublicKeyToSs58(receiver.publicKey)), + value: BigInt(transferAmount), + }); + const encodedCallDataBytes = await unsignedTx.getEncodedData(); + return [...encodedCallDataBytes.asBytes()]; +} + +export async function getProxies(api: TypedApi, address: string): Promise { + const entries = await api.query.Proxy.Proxies.getEntries(); + const result: string[] = []; + for (const entry of entries) { + const proxyAddress = entry.keyArgs[0]; + const values = entry.value; + const proxies = values[0]; + for (const proxy of proxies) { + if (proxy.delegate === address) { + result.push(proxyAddress); + } + } + } + return result; +} + +export async function setAdminFreezeWindow(api: TypedApi): Promise { + await sudoSetAdminFreezeWindow(api, 0); + const window = await api.query.SubtensorModule.AdminFreezeWindow.getValue(); + if (window !== 0) { + throw new Error(`Expected AdminFreezeWindow=0, got ${window}`); + } +} + +export async function setTargetRegistrationsPerInterval( + api: TypedApi, + netuid: number +): Promise { + const keyring = new Keyring({ type: "sr25519" }); + const alice = keyring.addFromUri("//Alice"); + const internalTx = api.tx.AdminUtils.sudo_set_target_registrations_per_interval({ + netuid, + target_registrations_per_interval: 1000, + }); + const tx = api.tx.Sudo.sudo({ call: internalTx.decodedCall }); + await waitForTransactionWithRetry(api, tx, alice, "sudo_set_target_registrations_per_interval"); + + const target = await api.query.SubtensorModule.TargetRegistrationsPerInterval.getValue(netuid); + if (target !== 1000) { + throw new Error(`Expected TargetRegistrationsPerInterval=1000 for netuid ${netuid}, got ${target}`); + } +} + +export async function sendWasmContractExtrinsic( + api: TypedApi, + coldkey: KeyringPair, + contractAddress: string, + data: { asBytes(): Uint8Array } +): Promise { + const tx = api.tx.Contracts.call({ + value: BigInt(0), + dest: MultiAddress.Id(contractAddress), + data: Binary.fromBytes(data.asBytes()), + gas_limit: { + ref_time: BigInt(10_000_000_000), + proof_size: BigInt(10_000_000), + }, + storage_deposit_limit: BigInt(1_000_000_000), + }); + await waitForTransactionWithRetry(api, tx, coldkey, "contracts_call", 5); +} + +/** Submit a contract call without failing when the contract reverts (expected for atomic-failure tests). */ +export async function sendWasmContractExtrinsicAllowFailure( + api: TypedApi, + coldkey: KeyringPair, + contractAddress: string, + data: { asBytes(): Uint8Array } +): Promise { + const tx = api.tx.Contracts.call({ + value: BigInt(0), + dest: MultiAddress.Id(contractAddress), + data: Binary.fromBytes(data.asBytes()), + gas_limit: { + ref_time: BigInt(10_000_000_000), + proof_size: BigInt(10_000_000), + }, + storage_deposit_limit: BigInt(1_000_000_000), + }); + await sendTransaction(tx, coldkey); +} + +export async function getStakeInfoForHotkeyColdkeyNetuid( + api: TypedApi, + hotkey: string, + coldkey: string, + netuid: number +): Promise { + return ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid(hotkey, coldkey, netuid) + )?.stake; +} + +export async function instantiateWasmContract( + api: TypedApi, + coldkey: KeyringPair, + wasmBytecode: Uint8Array, + constructorData: { asBytes(): Uint8Array } +): Promise { + const tx = api.tx.Contracts.instantiate_with_code({ + code: Binary.fromBytes(wasmBytecode), + storage_deposit_limit: BigInt(10_000_000), + value: BigInt(0), + gas_limit: { + ref_time: BigInt(1_000_000_000), + proof_size: BigInt(1_000_000), + }, + data: Binary.fromBytes(constructorData.asBytes()), + salt: Binary.fromHex("0x"), + }); + + const result = await sendTransaction(tx, coldkey); + if (!result.success) { + throw new Error(`instantiate_with_code failed: ${result.errorMessage ?? "unknown error"}`); + } + + const instantiatedEvents = await api.event.Contracts.Instantiated.filter(result.events); + if (instantiatedEvents.length === 0) { + throw new Error("No Contracts.Instantiated events found after instantiate_with_code"); + } + + return instantiatedEvents[0].contract; +} + +export { convertPublicKeyToSs58, getBalance }; + From 501290e4e2a22e84fc04f7823e120ef154cac449 Mon Sep 17 00:00:00 2001 From: open-junius Date: Tue, 16 Jun 2026 11:07:15 +0800 Subject: [PATCH 14/36] add first evm test file --- ts-tests/biome.jsonc | 30 +++++++++---------- .../01-contract-deploy-call.test.ts | 29 ++++++++++-------- ts-tests/utils/evm.ts | 19 ++++++++++++ ts-tests/utils/index.ts | 3 +- ts-tests/utils/wasm-contract.ts | 2 +- 5 files changed, 53 insertions(+), 30 deletions(-) diff --git a/ts-tests/biome.jsonc b/ts-tests/biome.jsonc index 426aca155a..033d799010 100644 --- a/ts-tests/biome.jsonc +++ b/ts-tests/biome.jsonc @@ -3,7 +3,7 @@ "vcs": { "enabled": false, "clientKind": "git", - "useIgnoreFile": false, + "useIgnoreFile": false }, "files": { "ignoreUnknown": false, @@ -16,17 +16,17 @@ "**/.yarn/**", "test/tsconfig.json", "tmp", - "**/tmp/", + "**/tmp/" ] }, "formatter": { "enabled": true, "indentStyle": "space", "lineWidth": 120, - "indentWidth": 4, + "indentWidth": 4 }, "organizeImports": { - "enabled": true, + "enabled": true }, "linter": { "enabled": true, @@ -34,27 +34,27 @@ "recommended": true, "suspicious": { "noExplicitAny": "off", - "noShadowRestrictedNames": "off", + "noShadowRestrictedNames": "off" }, "correctness": { - "noUnusedImports": "error", - }, + "noUnusedImports": "error" + } }, - "ignore": [], + "ignore": [] }, "javascript": { "formatter": { "quoteStyle": "double", "semicolons": "always", - "trailingCommas": "es5", - }, + "trailingCommas": "es5" + } }, "json": { "formatter": { - "enabled": false, + "enabled": false }, "linter": { - "enabled": false, - }, - }, -} + "enabled": false + } + } +} \ No newline at end of file diff --git a/ts-tests/suites/zombienet_evm/01-contract-deploy-call.test.ts b/ts-tests/suites/zombienet_evm/01-contract-deploy-call.test.ts index 379bbeb8a0..8b7305bcd9 100644 --- a/ts-tests/suites/zombienet_evm/01-contract-deploy-call.test.ts +++ b/ts-tests/suites/zombienet_evm/01-contract-deploy-call.test.ts @@ -29,6 +29,8 @@ import { ISTAKING_V2_ADDRESS, IStakingV2ABI, raoToEth, + reconnectEthersWallet, + refreshEthersProvider, STAKE_WRAP_ABI, STAKE_WRAP_BYTECODE, startCall, @@ -161,14 +163,25 @@ describeSuite({ return delegates; } + function refreshProviderAndWallets(): void { + provider = refreshEthersProvider(provider); + ethWallet = reconnectEthersWallet(ethWallet, provider); + if (proxyWalletsReady) { + stakeWallet = reconnectEthersWallet(stakeWallet, provider); + proxyWallet1 = reconnectEthersWallet(proxyWallet1, provider); + proxyWallet2 = reconnectEthersWallet(proxyWallet2, provider); + proxyWallet3 = reconnectEthersWallet(proxyWallet3, provider); + proxyWallet4 = reconnectEthersWallet(proxyWallet4, provider); + } + } + async function ensureChainIdStable(): Promise { const chainId = await api.query.EVMChainId.ChainId.getValue(); if (chainId !== BigInt(42)) { await forceSetChainID(api, BigInt(42)); await waitForFinalizedBlocks(api, 1); } - // Clear ethers cached network so a mid-run chain-id change does not abort calls. - (provider as { _network?: unknown })._network = null; + refreshProviderAndWallets(); } async function waitForBalanceIncrease( @@ -294,11 +307,7 @@ describeSuite({ const alphaInPool = await contractForCall.getContractStake(netuid); expect(alphaInPool).toEqual(BigInt(0)); - const depositAlphaTx = await contractForCall.depositAlpha( - netuid, - tao(10).toString(), - hotkey.publicKey - ); + const depositAlphaTx = await contractForCall.depositAlpha(netuid, tao(10).toString(), hotkey.publicKey); const depositReceipt = await depositAlphaTx.wait(); expect(depositReceipt?.status).toEqual(1); await waitForFinalizedBlocks(api, 2); @@ -510,11 +519,7 @@ describeSuite({ for (let i = 0; i < 5; i++) { const delegateWallet = createEthersWallet(provider); - const addTx = await contract.addProxy( - convertH160ToPublicKey(delegateWallet.address), - type, - delay - ); + const addTx = await contract.addProxy(convertH160ToPublicKey(delegateWallet.address), type, delay); await addTx.wait(); } diff --git a/ts-tests/utils/evm.ts b/ts-tests/utils/evm.ts index 78ac6ce8f7..12eddca8e6 100644 --- a/ts-tests/utils/evm.ts +++ b/ts-tests/utils/evm.ts @@ -25,6 +25,25 @@ export async function getEthBalance(provider: ethers.Provider, address: string): return provider.getBalance(address); } +/** Read chain ID via RPC without ethers' cached-network checks. */ +export async function getEthChainId(provider: ethers.JsonRpcProvider): Promise { + const chainId = await provider.send("eth_chainId", []); + return BigInt(chainId); +} + +/** Recreate the provider so a mid-run chain-id change does not abort later calls. */ +export function refreshEthersProvider(provider: ethers.JsonRpcProvider): ethers.JsonRpcProvider { + const url = provider._getConnection().url; + return new ethers.JsonRpcProvider(url); +} + +export function reconnectEthersWallet( + wallet: ethers.Wallet, + provider: ethers.JsonRpcProvider +): ethers.Wallet { + return wallet.connect(provider) as ethers.Wallet; +} + export async function forceSetChainID(api: TypedApi, chainId: bigint): Promise { const value = await api.query.EVMChainId.ChainId.getValue(); if (value === chainId) { diff --git a/ts-tests/utils/index.ts b/ts-tests/utils/index.ts index 781dde0d2e..27e010e7c1 100644 --- a/ts-tests/utils/index.ts +++ b/ts-tests/utils/index.ts @@ -8,6 +8,5 @@ export * from "./shield_helpers.ts"; export * from "./staking.js"; export * from "./subnet.js"; export * from "./transactions.js"; -export * from "./contracts/index.ts"; -export * from "./proxy.ts"; export * from "./wasm-contract.ts"; + diff --git a/ts-tests/utils/wasm-contract.ts b/ts-tests/utils/wasm-contract.ts index 2434de5134..4bd1cd2d24 100644 --- a/ts-tests/utils/wasm-contract.ts +++ b/ts-tests/utils/wasm-contract.ts @@ -8,7 +8,7 @@ import { getBalance } from "./balance.ts"; import { sudoSetAdminFreezeWindow } from "./staking.ts"; import { sendTransaction, waitForTransactionWithRetry } from "./transactions.ts"; -export const BITTENSOR_WASM_PATH = "../ink/bittensor.wasm" +export const BITTENSOR_WASM_PATH = "./ink/bittensor.wasm" export async function getTransferCallCode( api: TypedApi, From 32593ae47e4607c3423f6b5c350334ad4bde80ed Mon Sep 17 00:00:00 2001 From: open-junius Date: Tue, 16 Jun 2026 11:17:38 +0800 Subject: [PATCH 15/36] format code --- .../zombienet_evm/02-precompile-gas.test.ts | 26 +- .../zombienet_evm/03-wasm-contract.test.ts | 1346 ++++---- .../zombienet_evm/04-edge-cases.test.ts | 14 +- .../05-direct-call-precompile.test.ts | 18 +- ts-tests/utils/evm-config.ts | 2725 +++++++++-------- ts-tests/utils/evm.ts | 5 +- ts-tests/utils/index.ts | 1 - ts-tests/utils/wasm-contract.ts | 8 +- 8 files changed, 2155 insertions(+), 1988 deletions(-) diff --git a/ts-tests/suites/zombienet_evm/02-precompile-gas.test.ts b/ts-tests/suites/zombienet_evm/02-precompile-gas.test.ts index 963e157c9a..1f288ebdd4 100644 --- a/ts-tests/suites/zombienet_evm/02-precompile-gas.test.ts +++ b/ts-tests/suites/zombienet_evm/02-precompile-gas.test.ts @@ -21,31 +21,30 @@ async function assertPrecompileGasScaling( api: TypedApi, contract: ethers.Contract, wallet: ethers.Wallet, - call: (iterations: number) => Promise, - baseFee: bigint + call: (iterations: number) => Promise ): Promise { let oneIterationGas = BigInt(0); for (const iterations of ITERATION_COUNTS) { const balanceBefore = await getBalance(api, convertH160ToSS58(wallet.address)); const tx = await call(iterations); - await tx.wait(); + const receipt = await tx.wait(); await waitForFinalizedBlocks(api, 1); const balanceAfter = await getBalance(api, convertH160ToSS58(wallet.address)); expect(balanceAfter).toBeLessThan(balanceBefore); - const usedGas = balanceBefore - balanceAfter; + const gasUsed = receipt!.gasUsed; if (iterations === 1) { - oneIterationGas = usedGas; + oneIterationGas = gasUsed; continue; } - expect(usedGas >= oneIterationGas).toBe(true); + expect(gasUsed >= oneIterationGas).toBe(true); - const precompileUsedGas = usedGas - oneIterationGas; - const minExpected = MIN_PRECOMPILE_GAS * BigInt(iterations - 1) * baseFee; - const maxExpected = MAX_PRECOMPILE_GAS * BigInt(iterations - 1) * baseFee; + const precompileUsedGas = gasUsed - oneIterationGas; + const minExpected = MIN_PRECOMPILE_GAS * BigInt(iterations - 1); + const maxExpected = MAX_PRECOMPILE_GAS * BigInt(iterations - 1); expect(precompileUsedGas >= minExpected).toBe(true); expect(precompileUsedGas <= maxExpected).toBe(true); @@ -76,7 +75,6 @@ describeSuite({ test: async () => { const fee = await api.query.BaseFee.BaseFeePerGas.getValue(); expect(fee[0]).toBeGreaterThan(1_000_000_000); - const baseFee = BigInt(fee[0]) / BigInt(1_000_000_000); const contractFactory = new ethers.ContractFactory( PRECOMPILE_GAS_CONTRACT_ABI, @@ -92,8 +90,12 @@ describeSuite({ const contract = new ethers.Contract(contractAddress, PRECOMPILE_GAS_CONTRACT_ABI, ethWallet); - await assertPrecompileGasScaling(api, contract, ethWallet, (iterations) => contract.callED25519(iterations), baseFee); - await assertPrecompileGasScaling(api, contract, ethWallet, (iterations) => contract.callSR25519(iterations), baseFee); + await assertPrecompileGasScaling(api, contract, ethWallet, (iterations) => + contract.callED25519(iterations) + ); + await assertPrecompileGasScaling(api, contract, ethWallet, (iterations) => + contract.callSR25519(iterations) + ); }, }); }, diff --git a/ts-tests/suites/zombienet_evm/03-wasm-contract.test.ts b/ts-tests/suites/zombienet_evm/03-wasm-contract.test.ts index 95f0a3986e..614facda15 100644 --- a/ts-tests/suites/zombienet_evm/03-wasm-contract.test.ts +++ b/ts-tests/suites/zombienet_evm/03-wasm-contract.test.ts @@ -60,14 +60,14 @@ describeSuite({ return; } - const amount = tao(100) - let message - let dest + const amount = tao(100); + let message; + let dest; if (addStakeToContract) { - message = inkClient.message("add_stake") + message = inkClient.message("add_stake"); dest = contractAddress; } else { - message = inkClient.message("caller_add_stake") + message = inkClient.message("caller_add_stake"); dest = convertPublicKeyToSs58(coldkey.publicKey); } @@ -75,50 +75,55 @@ describeSuite({ hotkey: Binary.fromBytes(hotkey.publicKey), netuid: netuid, amount: amount, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); - const stake = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - dest, - netuid, - ))?.stake + const stake = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + dest, + netuid + ) + )?.stake; - expect(stake).toBeDefined() - expect(stake > BigInt(0)).toBeTruthy() + expect(stake).toBeDefined(); + expect(stake > BigInt(0)).toBeTruthy(); } async function getContractStake(): Promise { - const stake = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - contractAddress, - netuid, - ))?.stake - - expect(stake).toBeDefined() - return stake as bigint + const stake = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + contractAddress, + netuid + ) + )?.stake; + + expect(stake).toBeDefined(); + return stake as bigint; } async function getContractStakeOnRoot(): Promise { - const stake = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - contractAddress, - 0, - ))?.stake - - expect(stake).toBeDefined() - return stake as bigint + const stake = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + contractAddress, + 0 + ) + )?.stake; + + expect(stake).toBeDefined(); + return stake as bigint; } async function initSecondColdAndHotkey() { hotkey2 = generateKeyringPair("sr25519"); coldkey2 = generateKeyringPair("sr25519"); - await fundAccount(api, faucet, convertPublicKeyToSs58(coldkey2.publicKey)) - await fundAccount(api, faucet, convertPublicKeyToSs58(hotkey2.publicKey)) - await burnedRegister(api, netuid, convertPublicKeyToSs58(hotkey2.publicKey), coldkey2) + await fundAccount(api, faucet, convertPublicKeyToSs58(coldkey2.publicKey)); + await fundAccount(api, faucet, convertPublicKeyToSs58(hotkey2.publicKey)); + await burnedRegister(api, netuid, convertPublicKeyToSs58(hotkey2.publicKey), coldkey2); } - beforeAll(async () => { api = context.papi("Node").getTypedApi(subtensor); await waitForFinalizedBlocks(api, 2); @@ -151,7 +156,9 @@ describeSuite({ }, 300000); it({ - id: "T01", title: "Can instantiate contract", test: async () => { + id: "T01", + title: "Can instantiate contract", + test: async () => { const constructor = inkClient.constructor("new"); const data = constructor.encode(); contractAddress = await instantiateWasmContract(api, coldkey, bittensorBytecode, data); @@ -162,19 +169,20 @@ describeSuite({ }); await waitForTransactionWithRetry(api, transfer, coldkey, "transfer_to_contract", 5); await waitForFinalizedBlocks(api, 1); - } + }, }); it({ - id: "T02", title: "Can query stake info from contract", test: async () => { - - const queryMessage = inkClient.message("get_stake_info_for_hotkey_coldkey_netuid") + id: "T02", + title: "Can query stake info from contract", + test: async () => { + const queryMessage = inkClient.message("get_stake_info_for_hotkey_coldkey_netuid"); const data = queryMessage.encode({ hotkey: Binary.fromBytes(hotkey.publicKey), coldkey: Binary.fromBytes(coldkey.publicKey), netuid: netuid, - }) + }); const response = await api.apis.ContractsApi.call( convertPublicKeyToSs58(hotkey.publicKey), @@ -182,280 +190,326 @@ describeSuite({ BigInt(0), undefined, undefined, - Binary.fromBytes(data.asBytes()), - ) - - expect(response.result.success).toBeTruthy() - const result = queryMessage.decode(response.result.value).value.value - - if (typeof result === "object" && "hotkey" in result && "coldkey" in result && "netuid" in result && "stake" in result && "locked" in result && "emission" in result && "tao_emission" in result && "drain" in result && "is_registered" in result) { - expect(result.hotkey).toEqual(convertPublicKeyToSs58(hotkey.publicKey)) - expect(result.coldkey).toEqual(convertPublicKeyToSs58(coldkey.publicKey)) - expect(result.netuid).toEqual(netuid) - expect(result.is_registered).toEqual(true) + Binary.fromBytes(data.asBytes()) + ); + + expect(response.result.success).toBeTruthy(); + const result = queryMessage.decode(response.result.value).value.value; + + if ( + typeof result === "object" && + "hotkey" in result && + "coldkey" in result && + "netuid" in result && + "stake" in result && + "locked" in result && + "emission" in result && + "tao_emission" in result && + "drain" in result && + "is_registered" in result + ) { + expect(result.hotkey).toEqual(convertPublicKeyToSs58(hotkey.publicKey)); + expect(result.coldkey).toEqual(convertPublicKeyToSs58(coldkey.publicKey)); + expect(result.netuid).toEqual(netuid); + expect(result.is_registered).toEqual(true); } else { - throw new Error("result is not an object") + throw new Error("result is not an object"); } - - } + }, }); it({ - id: "T03", title: "Can add stake to contract", test: async () => { - await addStakeViaContract(true) - } + id: "T03", + title: "Can add stake to contract", + test: async () => { + await addStakeViaContract(true); + }, }); it({ - id: "T04", title: "Can remove stake to contract", test: async () => { - await addStakeViaContract(true) - const stake = await getContractStake() - - let amount = stake / BigInt(2) - const message = inkClient.message("remove_stake") + id: "T04", + title: "Can remove stake to contract", + test: async () => { + await addStakeViaContract(true); + const stake = await getContractStake(); + + let amount = stake / BigInt(2); + const message = inkClient.message("remove_stake"); const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey), netuid: netuid, amount: amount, - }) + }); - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); - const stakeAfterAddStake = await getContractStake() + const stakeAfterAddStake = await getContractStake(); - expect(stakeAfterAddStake < stake).toBeTruthy() - } + expect(stakeAfterAddStake < stake).toBeTruthy(); + }, }); it({ - id: "T05", title: "Can unstake all from contract", test: async () => { - await addStakeViaContract(true) + id: "T05", + title: "Can unstake all from contract", + test: async () => { + await addStakeViaContract(true); // Get stake before unstake_all - const stakeBefore = await getContractStake() + const stakeBefore = await getContractStake(); - expect(stakeBefore > BigInt(0)).toBeTruthy() + expect(stakeBefore > BigInt(0)).toBeTruthy(); // Call unstake_all - const unstakeMessage = inkClient.message("unstake_all") + const unstakeMessage = inkClient.message("unstake_all"); const unstakeData = unstakeMessage.encode({ hotkey: Binary.fromBytes(hotkey.publicKey), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, unstakeData) + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, unstakeData); // Verify stake is now zero - const stakeAfter = await getContractStake() + const stakeAfter = await getContractStake(); - expect(stakeAfter).toEqual(BigInt(0)) - } + expect(stakeAfter).toEqual(BigInt(0)); + }, }); it({ - id: "T06", title: "Can unstake all alpha from contract", test: async () => { - await addStakeViaContract(true) + id: "T06", + title: "Can unstake all alpha from contract", + test: async () => { + await addStakeViaContract(true); // Get stake before unstake_all_alpha - const stakeBefore = await getContractStake() + const stakeBefore = await getContractStake(); - expect(stakeBefore > BigInt(0)).toBeTruthy() + expect(stakeBefore > BigInt(0)).toBeTruthy(); // Call unstake_all_alpha - const message = inkClient.message("unstake_all_alpha") + const message = inkClient.message("unstake_all_alpha"); const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); // Verify stake is now zero - const stakeAfter = await getContractStake() + const stakeAfter = await getContractStake(); - expect(stakeAfter).toEqual(BigInt(0)) - } + expect(stakeAfter).toEqual(BigInt(0)); + }, }); it({ - id: "T07", title: "Can move stake between hotkeys", test: async () => { - await addStakeViaContract(true) - await initSecondColdAndHotkey() + id: "T07", + title: "Can move stake between hotkeys", + test: async () => { + await addStakeViaContract(true); + await initSecondColdAndHotkey(); // Get initial stakes - const originStakeBefore = await getContractStake() + const originStakeBefore = await getContractStake(); - const destStakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey2.publicKey), - contractAddress, - netuid, - ))?.stake || BigInt(0) + const destStakeBefore = + ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey2.publicKey), + contractAddress, + netuid + ) + )?.stake || BigInt(0); - expect(originStakeBefore > BigInt(0)).toBeTruthy() + expect(originStakeBefore > BigInt(0)).toBeTruthy(); // Move stake - const moveAmount = originStakeBefore / BigInt(2) - const message = inkClient.message("move_stake") + const moveAmount = originStakeBefore / BigInt(2); + const message = inkClient.message("move_stake"); const data = message.encode({ origin_hotkey: Binary.fromBytes(hotkey.publicKey), destination_hotkey: Binary.fromBytes(hotkey2.publicKey), origin_netuid: netuid, destination_netuid: netuid, amount: moveAmount, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); // Verify stakes changed - const originStakeAfter = await getContractStake() - - const destStakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey2.publicKey), - contractAddress, - netuid, - ))?.stake - - expect(destStakeAfter).toBeDefined() - expect(originStakeAfter < originStakeBefore).toBeTruthy() - expect(destStakeAfter > destStakeBefore).toBeTruthy() - } + const originStakeAfter = await getContractStake(); + + const destStakeAfter = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey2.publicKey), + contractAddress, + netuid + ) + )?.stake; + + expect(destStakeAfter).toBeDefined(); + expect(originStakeAfter < originStakeBefore).toBeTruthy(); + expect(destStakeAfter > destStakeBefore).toBeTruthy(); + }, }); it({ - id: "T08", title: "Can transfer stake between coldkeys", test: async () => { - await addStakeViaContract(true) - await initSecondColdAndHotkey() + id: "T08", + title: "Can transfer stake between coldkeys", + test: async () => { + await addStakeViaContract(true); + await initSecondColdAndHotkey(); // Get initial stake - const stakeBeforeOrigin = await getContractStake() + const stakeBeforeOrigin = await getContractStake(); - const stakeBeforeDest = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey2.publicKey), - netuid, - ))?.stake + const stakeBeforeDest = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey2.publicKey), + netuid + ) + )?.stake; - expect(stakeBeforeOrigin > BigInt(0)).toBeTruthy() - expect(stakeBeforeDest).toBeDefined() + expect(stakeBeforeOrigin > BigInt(0)).toBeTruthy(); + expect(stakeBeforeDest).toBeDefined(); // Transfer stake - const transferAmount = stakeBeforeOrigin / BigInt(2) - const message = inkClient.message("transfer_stake") + const transferAmount = stakeBeforeOrigin / BigInt(2); + const message = inkClient.message("transfer_stake"); const data = message.encode({ destination_coldkey: Binary.fromBytes(coldkey2.publicKey), hotkey: Binary.fromBytes(hotkey.publicKey), origin_netuid: netuid, destination_netuid: netuid, amount: transferAmount, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); // Verify stake transferred - const stakeAfterOrigin = await getContractStake() - - const stakeAfterDest = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey2.publicKey), - netuid, - ))?.stake - - expect(stakeAfterDest).toBeDefined() - expect(stakeAfterOrigin < stakeBeforeOrigin).toBeTruthy() - expect(stakeAfterDest > stakeBeforeDest!).toBeTruthy() - } + const stakeAfterOrigin = await getContractStake(); + + const stakeAfterDest = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey2.publicKey), + netuid + ) + )?.stake; + + expect(stakeAfterDest).toBeDefined(); + expect(stakeAfterOrigin < stakeBeforeOrigin).toBeTruthy(); + expect(stakeAfterDest > stakeBeforeDest!).toBeTruthy(); + }, }); it({ - id: "T09", title: "Can swap stake between networks", test: async () => { - await addStakeViaContract(true) + id: "T09", + title: "Can swap stake between networks", + test: async () => { + await addStakeViaContract(true); // Get initial stakes - const stakeBefore = await getContractStake() + const stakeBefore = await getContractStake(); - const stakeBefore2 = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - contractAddress, - netuid + 1, - ))?.stake || BigInt(0) + const stakeBefore2 = + ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + contractAddress, + netuid + 1 + ) + )?.stake || BigInt(0); - expect(stakeBefore > BigInt(0)).toBeTruthy() + expect(stakeBefore > BigInt(0)).toBeTruthy(); // Swap stake - const swapAmount = stakeBefore / BigInt(2) - const message = inkClient.message("swap_stake") + const swapAmount = stakeBefore / BigInt(2); + const message = inkClient.message("swap_stake"); const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey), origin_netuid: netuid, destination_netuid: netuid + 1, amount: swapAmount, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); // Verify stakes swapped - const stakeAfter = await getContractStake() - - const stakeAfter2 = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - contractAddress, - netuid + 1, - ))?.stake - - expect(stakeAfter2).toBeDefined() - expect(stakeAfter < stakeBefore).toBeTruthy() - expect(stakeAfter2 > stakeBefore2).toBeTruthy() - } + const stakeAfter = await getContractStake(); + + const stakeAfter2 = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + contractAddress, + netuid + 1 + ) + )?.stake; + + expect(stakeAfter2).toBeDefined(); + expect(stakeAfter < stakeBefore).toBeTruthy(); + expect(stakeAfter2 > stakeBefore2).toBeTruthy(); + }, }); it({ - id: "T10", title: "Can add stake with limit", test: async () => { - const stakeBefore = await getContractStake() + id: "T10", + title: "Can add stake with limit", + test: async () => { + const stakeBefore = await getContractStake(); - const message = inkClient.message("add_stake_limit") + const message = inkClient.message("add_stake_limit"); const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey), netuid: netuid, amount: tao(200), limit_price: tao(100), allow_partial: false, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); // Verify stake was added - const stakeAfter = await getContractStake() + const stakeAfter = await getContractStake(); - expect(stakeAfter > stakeBefore).toBeTruthy() - } + expect(stakeAfter > stakeBefore).toBeTruthy(); + }, }); it({ - id: "T11", title: "Can remove stake with limit", test: async () => { - await addStakeViaContract(true) - const stakeBefore = await getContractStake() + id: "T11", + title: "Can remove stake with limit", + test: async () => { + await addStakeViaContract(true); + const stakeBefore = await getContractStake(); - expect(stakeBefore > BigInt(0)).toBeTruthy() + expect(stakeBefore > BigInt(0)).toBeTruthy(); - const message = inkClient.message("remove_stake_limit") + const message = inkClient.message("remove_stake_limit"); const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey), netuid: netuid, amount: stakeBefore / BigInt(2), limit_price: tao(1), allow_partial: false, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); - const stakeAfter = await getContractStake() + const stakeAfter = await getContractStake(); - expect(stakeAfter < stakeBefore).toBeTruthy() - } + expect(stakeAfter < stakeBefore).toBeTruthy(); + }, }); it({ - id: "T12", title: "Can swap stake with limit", test: async () => { - await addStakeViaContract(true) + id: "T12", + title: "Can swap stake with limit", + test: async () => { + await addStakeViaContract(true); - const stakeBefore = await getContractStake() + const stakeBefore = await getContractStake(); - const stakeBefore2 = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - contractAddress, - netuid + 1, - ))?.stake + const stakeBefore2 = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + contractAddress, + netuid + 1 + ) + )?.stake; - expect(stakeBefore > BigInt(0)).toBeTruthy() - expect(stakeBefore2).toBeDefined() + expect(stakeBefore > BigInt(0)).toBeTruthy(); + expect(stakeBefore2).toBeDefined(); - const message = inkClient.message("swap_stake_limit") + const message = inkClient.message("swap_stake_limit"); const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey), origin_netuid: netuid, @@ -463,98 +517,103 @@ describeSuite({ amount: stakeBefore / BigInt(2), limit_price: tao(1), allow_partial: false, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - - const stakeAfter = await getContractStake() - - const stakeAfter2 = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - contractAddress, - netuid + 1, - ))?.stake - - expect(stakeAfter2).toBeDefined() - expect(stakeAfter < stakeBefore).toBeTruthy() - expect(stakeAfter2 > stakeBefore2).toBeTruthy() - } + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); + + const stakeAfter = await getContractStake(); + + const stakeAfter2 = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + contractAddress, + netuid + 1 + ) + )?.stake; + + expect(stakeAfter2).toBeDefined(); + expect(stakeAfter < stakeBefore).toBeTruthy(); + expect(stakeAfter2 > stakeBefore2).toBeTruthy(); + }, }); it({ - id: "T13", title: "Can remove stake full limit", test: async () => { - await addStakeViaContract(true) - const stakeBefore = await getContractStake() + id: "T13", + title: "Can remove stake full limit", + test: async () => { + await addStakeViaContract(true); + const stakeBefore = await getContractStake(); - expect(stakeBefore > BigInt(0)).toBeTruthy() + expect(stakeBefore > BigInt(0)).toBeTruthy(); - const message = inkClient.message("remove_stake_full_limit") + const message = inkClient.message("remove_stake_full_limit"); const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey), netuid: netuid, limit_price: BigInt(0), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); - const stakeAfter = await getContractStake() + const stakeAfter = await getContractStake(); - expect(stakeAfter < stakeBefore).toBeTruthy() - } + expect(stakeAfter < stakeBefore).toBeTruthy(); + }, }); it({ - id: "T14", title: "Can set coldkey auto stake hotkey", test: async () => { - const message = inkClient.message("set_coldkey_auto_stake_hotkey") + id: "T14", + title: "Can set coldkey auto stake hotkey", + test: async () => { + const message = inkClient.message("set_coldkey_auto_stake_hotkey"); const data = message.encode({ netuid: netuid, hotkey: Binary.fromBytes(hotkey.publicKey), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); let autoStakeHotkey = await api.query.SubtensorModule.AutoStakeDestination.getValue( contractAddress, - netuid, - ) + netuid + ); - expect(autoStakeHotkey).toBeDefined() - expect(autoStakeHotkey).toEqual(convertPublicKeyToSs58(hotkey.publicKey)) - } + expect(autoStakeHotkey).toBeDefined(); + expect(autoStakeHotkey).toEqual(convertPublicKeyToSs58(hotkey.publicKey)); + }, }); it({ - id: "T15", title: "Can add and remove proxy", test: async () => { - const message = inkClient.message("add_proxy") + id: "T15", + title: "Can add and remove proxy", + test: async () => { + const message = inkClient.message("add_proxy"); const data = message.encode({ delegate: Binary.fromBytes(hotkey.publicKey), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - let proxies = await api.query.Proxy.Proxies.getValue( - contractAddress, - ) - expect(proxies).toBeDefined() - expect(proxies.length > 0 && proxies[0].length > 0).toBeTruthy() - expect(proxies[0][0].delegate).toEqual(convertPublicKeyToSs58(hotkey.publicKey)) - + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); + let proxies = await api.query.Proxy.Proxies.getValue(contractAddress); + expect(proxies).toBeDefined(); + expect(proxies.length > 0 && proxies[0].length > 0).toBeTruthy(); + expect(proxies[0][0].delegate).toEqual(convertPublicKeyToSs58(hotkey.publicKey)); - const removeMessage = inkClient.message("remove_proxy") + const removeMessage = inkClient.message("remove_proxy"); const removeData = removeMessage.encode({ delegate: Binary.fromBytes(hotkey.publicKey), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, removeData) + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, removeData); - let proxiesAfterRemove = await api.query.Proxy.Proxies.getValue( - contractAddress, - ) - expect(proxiesAfterRemove).toBeDefined() - expect(proxiesAfterRemove[0].length).toEqual(0) - } + let proxiesAfterRemove = await api.query.Proxy.Proxies.getValue(contractAddress); + expect(proxiesAfterRemove).toBeDefined(); + expect(proxiesAfterRemove[0].length).toEqual(0); + }, }); it({ - id: "T16", title: "Can get alpha price", test: async () => { - const message = inkClient.message("get_alpha_price") + id: "T16", + title: "Can get alpha price", + test: async () => { + const message = inkClient.message("get_alpha_price"); const data = message.encode({ netuid: netuid, - }) + }); const response = await api.apis.ContractsApi.call( convertPublicKeyToSs58(hotkey.publicKey), @@ -562,369 +621,447 @@ describeSuite({ BigInt(0), undefined, undefined, - Binary.fromBytes(data.asBytes()), - ) + Binary.fromBytes(data.asBytes()) + ); - expect(response.result.success).toBeTruthy() - const result = message.decode(response.result.value).value.value + expect(response.result.success).toBeTruthy(); + const result = message.decode(response.result.value).value.value; - expect(result).toBeDefined() - } + expect(result).toBeDefined(); + }, }); it({ - id: "T17", title: "Can recycle alpha from contract stake", test: async () => { - await addStakeViaContract(true) - await waitForFinalizedBlocks(api, 2) - const stakeBefore = await getContractStake() - const alphaOutBefore = await api.query.SubtensorModule.SubnetAlphaOut.getValue(netuid) - - const message = inkClient.message("recycle_alpha") + id: "T17", + title: "Can recycle alpha from contract stake", + test: async () => { + await addStakeViaContract(true); + await waitForFinalizedBlocks(api, 2); + const stakeBefore = await getContractStake(); + const alphaOutBefore = await api.query.SubtensorModule.SubnetAlphaOut.getValue(netuid); + + const message = inkClient.message("recycle_alpha"); const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey), netuid, amount: stakeBefore / BigInt(2), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); - const stakeAfter = await getContractStake() - const alphaOutAfter = await api.query.SubtensorModule.SubnetAlphaOut.getValue(netuid) + const stakeAfter = await getContractStake(); + const alphaOutAfter = await api.query.SubtensorModule.SubnetAlphaOut.getValue(netuid); - expect(stakeAfter < stakeBefore).toBeTruthy() - expect(alphaOutAfter < alphaOutBefore).toBeTruthy() - } + expect(stakeAfter < stakeBefore).toBeTruthy(); + expect(alphaOutAfter < alphaOutBefore).toBeTruthy(); + }, }); it({ - id: "T18", title: "Can burn alpha from contract stake", test: async () => { - await addStakeViaContract(true) - await waitForFinalizedBlocks(api, 2) - const stakeBefore = await getContractStake() - const alphaBurnedBefore = await api.query.AlphaAssets.AlphaBurned.getValue(netuid) - - const message = inkClient.message("burn_alpha") + id: "T18", + title: "Can burn alpha from contract stake", + test: async () => { + await addStakeViaContract(true); + await waitForFinalizedBlocks(api, 2); + const stakeBefore = await getContractStake(); + const alphaBurnedBefore = await api.query.AlphaAssets.AlphaBurned.getValue(netuid); + + const message = inkClient.message("burn_alpha"); const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey), netuid, amount: stakeBefore / BigInt(2), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); - const stakeAfter = await getContractStake() - const alphaBurnedAfter = await api.query.AlphaAssets.AlphaBurned.getValue(netuid) + const stakeAfter = await getContractStake(); + const alphaBurnedAfter = await api.query.AlphaAssets.AlphaBurned.getValue(netuid); - expect(stakeAfter < stakeBefore).toBeTruthy() - expect(alphaBurnedBefore < alphaBurnedAfter).toBeTruthy() - } + expect(stakeAfter < stakeBefore).toBeTruthy(); + expect(alphaBurnedBefore < alphaBurnedAfter).toBeTruthy(); + }, }); it({ - id: "T19", title: "Can add stake and recycle resulting alpha", test: async () => { - const stakeBefore = await getContractStake() + id: "T19", + title: "Can add stake and recycle resulting alpha", + test: async () => { + const stakeBefore = await getContractStake(); - const message = inkClient.message("add_stake_recycle") + const message = inkClient.message("add_stake_recycle"); const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey), netuid, amount: tao(100), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); - const stakeAfter = await getContractStake() + const stakeAfter = await getContractStake(); - expect(stakeAfter).toEqual(stakeBefore) - } + expect(stakeAfter).toEqual(stakeBefore); + }, }); it({ - id: "T20", title: "Can add stake and burn resulting alpha", test: async () => { - const stakeBefore = await getContractStake() - const alphaOutBefore = await api.query.SubtensorModule.SubnetAlphaOut.getValue(netuid) + id: "T20", + title: "Can add stake and burn resulting alpha", + test: async () => { + const stakeBefore = await getContractStake(); + const alphaOutBefore = await api.query.SubtensorModule.SubnetAlphaOut.getValue(netuid); - const message = inkClient.message("add_stake_burn") + const message = inkClient.message("add_stake_burn"); const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey), netuid, amount: tao(100), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); - const stakeAfter = await getContractStake() - const alphaOutAfter = await api.query.SubtensorModule.SubnetAlphaOut.getValue(netuid) + const stakeAfter = await getContractStake(); + const alphaOutAfter = await api.query.SubtensorModule.SubnetAlphaOut.getValue(netuid); - expect(stakeAfter).toEqual(stakeBefore) - expect(alphaOutAfter > alphaOutBefore).toBeTruthy() - } + expect(stakeAfter).toEqual(stakeBefore); + expect(alphaOutAfter > alphaOutBefore).toBeTruthy(); + }, }); it({ - id: "T21", title: "Can caller add stake (fn 20)", test: async () => { - await addStakeViaContract(false) - } + id: "T21", + title: "Can caller add stake (fn 20)", + test: async () => { + await addStakeViaContract(false); + }, }); it({ - id: "T22", title: "Can caller remove stake (fn 21)", test: async () => { - await addStakeViaContract(false) - const stake = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - expect(stake).toBeDefined() - const amount = stake / BigInt(2) - const message = inkClient.message("caller_remove_stake") + id: "T22", + title: "Can caller remove stake (fn 21)", + test: async () => { + await addStakeViaContract(false); + const stake = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + ) + )?.stake; + expect(stake).toBeDefined(); + const amount = stake / BigInt(2); + const message = inkClient.message("caller_remove_stake"); const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey), netuid, amount, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - const stakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - expect(stakeAfter !== undefined && stakeAfter < stake!).toBeTruthy() - } + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); + const stakeAfter = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + ) + )?.stake; + expect(stakeAfter !== undefined && stakeAfter < stake!).toBeTruthy(); + }, }); it({ - id: "T23", title: "Can caller unstake_all (fn 22)", test: async () => { - await addStakeViaContract(false) - const stakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - expect(stakeBefore !== undefined && stakeBefore > BigInt(0)).toBeTruthy() - const message = inkClient.message("caller_unstake_all") - const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey) }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - const stakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - expect(stakeAfter).toBeDefined() - expect(stakeAfter < stakeBefore!).toBeTruthy() - } + id: "T23", + title: "Can caller unstake_all (fn 22)", + test: async () => { + await addStakeViaContract(false); + const stakeBefore = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + ) + )?.stake; + expect(stakeBefore !== undefined && stakeBefore > BigInt(0)).toBeTruthy(); + const message = inkClient.message("caller_unstake_all"); + const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey) }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); + const stakeAfter = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + ) + )?.stake; + expect(stakeAfter).toBeDefined(); + expect(stakeAfter < stakeBefore!).toBeTruthy(); + }, }); it({ - id: "T24", title: "Can caller unstake_all_alpha (fn 23)", test: async () => { - await addStakeViaContract(false) - const stakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - expect(stakeBefore !== undefined && stakeBefore > BigInt(0)).toBeTruthy() - const message = inkClient.message("caller_unstake_all_alpha") - const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey) }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - const stakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - expect(stakeAfter).toBeDefined() - expect(stakeAfter < stakeBefore!).toBeTruthy() - } + id: "T24", + title: "Can caller unstake_all_alpha (fn 23)", + test: async () => { + await addStakeViaContract(false); + const stakeBefore = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + ) + )?.stake; + expect(stakeBefore !== undefined && stakeBefore > BigInt(0)).toBeTruthy(); + const message = inkClient.message("caller_unstake_all_alpha"); + const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey) }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); + const stakeAfter = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + ) + )?.stake; + expect(stakeAfter).toBeDefined(); + expect(stakeAfter < stakeBefore!).toBeTruthy(); + }, }); it({ - id: "T25", title: "Can caller move_stake (fn 24)", test: async () => { - await addStakeViaContract(false) - await initSecondColdAndHotkey() - const originStakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - const destStakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey2.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake || BigInt(0) - expect(originStakeBefore !== undefined && originStakeBefore > BigInt(0)).toBeTruthy() - const moveAmount = originStakeBefore / BigInt(2) - const message = inkClient.message("caller_move_stake") + id: "T25", + title: "Can caller move_stake (fn 24)", + test: async () => { + await addStakeViaContract(false); + await initSecondColdAndHotkey(); + const originStakeBefore = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + ) + )?.stake; + const destStakeBefore = + ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey2.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + ) + )?.stake || BigInt(0); + expect(originStakeBefore !== undefined && originStakeBefore > BigInt(0)).toBeTruthy(); + const moveAmount = originStakeBefore / BigInt(2); + const message = inkClient.message("caller_move_stake"); const data = message.encode({ origin_hotkey: Binary.fromBytes(hotkey.publicKey), destination_hotkey: Binary.fromBytes(hotkey2.publicKey), origin_netuid: netuid, destination_netuid: netuid, amount: moveAmount, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - const originStakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - const destStakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey2.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - expect(originStakeAfter !== undefined && destStakeAfter !== undefined).toBeTruthy() - expect(originStakeAfter < originStakeBefore!).toBeTruthy() - expect(destStakeAfter > destStakeBefore).toBeTruthy() - } + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); + const originStakeAfter = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + ) + )?.stake; + const destStakeAfter = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey2.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + ) + )?.stake; + expect(originStakeAfter !== undefined && destStakeAfter !== undefined).toBeTruthy(); + expect(originStakeAfter < originStakeBefore!).toBeTruthy(); + expect(destStakeAfter > destStakeBefore).toBeTruthy(); + }, }); it({ - id: "T26", title: "Can caller transfer_stake (fn 25)", test: async () => { - await addStakeViaContract(false) - await initSecondColdAndHotkey() - const stakeBeforeOrigin = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - const stakeBeforeDest = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey2.publicKey), - netuid, - ))?.stake - expect(stakeBeforeOrigin !== undefined && stakeBeforeOrigin > BigInt(0)).toBeTruthy() - expect(stakeBeforeDest).toBeDefined() - const transferAmount = stakeBeforeOrigin / BigInt(2) - const message = inkClient.message("caller_transfer_stake") + id: "T26", + title: "Can caller transfer_stake (fn 25)", + test: async () => { + await addStakeViaContract(false); + await initSecondColdAndHotkey(); + const stakeBeforeOrigin = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + ) + )?.stake; + const stakeBeforeDest = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey2.publicKey), + netuid + ) + )?.stake; + expect(stakeBeforeOrigin !== undefined && stakeBeforeOrigin > BigInt(0)).toBeTruthy(); + expect(stakeBeforeDest).toBeDefined(); + const transferAmount = stakeBeforeOrigin / BigInt(2); + const message = inkClient.message("caller_transfer_stake"); const data = message.encode({ destination_coldkey: Binary.fromBytes(coldkey2.publicKey), hotkey: Binary.fromBytes(hotkey.publicKey), origin_netuid: netuid, destination_netuid: netuid, amount: transferAmount, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - const stakeAfterOrigin = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - const stakeAfterDest = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey2.publicKey), - netuid, - ))?.stake - expect(stakeAfterOrigin !== undefined && stakeAfterDest !== undefined).toBeTruthy() - expect(stakeAfterOrigin < stakeBeforeOrigin!).toBeTruthy() - expect(stakeAfterDest > stakeBeforeDest!).toBeTruthy() - } + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); + const stakeAfterOrigin = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + ) + )?.stake; + const stakeAfterDest = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey2.publicKey), + netuid + ) + )?.stake; + expect(stakeAfterOrigin !== undefined && stakeAfterDest !== undefined).toBeTruthy(); + expect(stakeAfterOrigin < stakeBeforeOrigin!).toBeTruthy(); + expect(stakeAfterDest > stakeBeforeDest!).toBeTruthy(); + }, }); it({ - id: "T27", title: "Can caller swap_stake (fn 26)", test: async () => { - await addStakeViaContract(false) - await initSecondColdAndHotkey() - const stakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - const stakeBefore2 = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid + 1, - ))?.stake || BigInt(0) - expect(stakeBefore !== undefined && stakeBefore > BigInt(0)).toBeTruthy() - const swapAmount = stakeBefore / BigInt(2) - const message = inkClient.message("caller_swap_stake") + id: "T27", + title: "Can caller swap_stake (fn 26)", + test: async () => { + await addStakeViaContract(false); + await initSecondColdAndHotkey(); + const stakeBefore = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + ) + )?.stake; + const stakeBefore2 = + ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + 1 + ) + )?.stake || BigInt(0); + expect(stakeBefore !== undefined && stakeBefore > BigInt(0)).toBeTruthy(); + const swapAmount = stakeBefore / BigInt(2); + const message = inkClient.message("caller_swap_stake"); const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey), origin_netuid: netuid, destination_netuid: netuid + 1, amount: swapAmount, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - const stakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - const stakeAfter2 = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid + 1, - ))?.stake - expect(stakeAfter !== undefined && stakeAfter2 !== undefined).toBeTruthy() - expect(stakeAfter < stakeBefore).toBeTruthy() - expect(stakeAfter2 > stakeBefore2).toBeTruthy() - } + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); + const stakeAfter = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + ) + )?.stake; + const stakeAfter2 = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + 1 + ) + )?.stake; + expect(stakeAfter !== undefined && stakeAfter2 !== undefined).toBeTruthy(); + expect(stakeAfter < stakeBefore).toBeTruthy(); + expect(stakeAfter2 > stakeBefore2).toBeTruthy(); + }, }); it({ - id: "T28", title: "Can caller add_stake_limit (fn 27)", test: async () => { - const stakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - expect(stakeBefore).toBeDefined() - const message = inkClient.message("caller_add_stake_limit") + id: "T28", + title: "Can caller add_stake_limit (fn 27)", + test: async () => { + const stakeBefore = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + ) + )?.stake; + expect(stakeBefore).toBeDefined(); + const message = inkClient.message("caller_add_stake_limit"); const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey), netuid, amount: tao(200), limit_price: tao(100), allow_partial: false, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - const stakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - expect(stakeAfter !== undefined && stakeAfter > stakeBefore!).toBeTruthy() - } + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); + const stakeAfter = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + ) + )?.stake; + expect(stakeAfter !== undefined && stakeAfter > stakeBefore!).toBeTruthy(); + }, }); it({ - id: "T29", title: "Can caller remove_stake_limit (fn 28)", test: async () => { - await addStakeViaContract(false) - const stakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - expect(stakeBefore !== undefined && stakeBefore > BigInt(0)).toBeTruthy() - const message = inkClient.message("caller_remove_stake_limit") + id: "T29", + title: "Can caller remove_stake_limit (fn 28)", + test: async () => { + await addStakeViaContract(false); + const stakeBefore = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + ) + )?.stake; + expect(stakeBefore !== undefined && stakeBefore > BigInt(0)).toBeTruthy(); + const message = inkClient.message("caller_remove_stake_limit"); const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey), netuid, amount: stakeBefore / BigInt(2), limit_price: tao(1), allow_partial: false, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - const stakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - expect(stakeAfter !== undefined && stakeAfter < stakeBefore!).toBeTruthy() - } + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); + const stakeAfter = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + ) + )?.stake; + expect(stakeAfter !== undefined && stakeAfter < stakeBefore!).toBeTruthy(); + }, }); it({ - id: "T30", title: "Can caller swap_stake_limit (fn 29)", test: async () => { - await addStakeViaContract(false) - const stakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - const stakeBefore2 = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid + 1, - ))?.stake - expect(stakeBefore !== undefined && stakeBefore > BigInt(0)).toBeTruthy() - expect(stakeBefore2).toBeDefined() - const message = inkClient.message("caller_swap_stake_limit") + id: "T30", + title: "Can caller swap_stake_limit (fn 29)", + test: async () => { + await addStakeViaContract(false); + const stakeBefore = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + ) + )?.stake; + const stakeBefore2 = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + 1 + ) + )?.stake; + expect(stakeBefore !== undefined && stakeBefore > BigInt(0)).toBeTruthy(); + expect(stakeBefore2).toBeDefined(); + const message = inkClient.message("caller_swap_stake_limit"); const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey), origin_netuid: netuid, @@ -932,133 +1069,150 @@ describeSuite({ amount: stakeBefore / BigInt(2), limit_price: tao(1), allow_partial: false, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - const stakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - const stakeAfter2 = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid + 1, - ))?.stake - expect(stakeAfter !== undefined && stakeAfter2 !== undefined).toBeTruthy() - expect(stakeAfter < stakeBefore).toBeTruthy() - expect(stakeAfter2 > stakeBefore2!).toBeTruthy() - } + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); + const stakeAfter = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + ) + )?.stake; + const stakeAfter2 = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + 1 + ) + )?.stake; + expect(stakeAfter !== undefined && stakeAfter2 !== undefined).toBeTruthy(); + expect(stakeAfter < stakeBefore).toBeTruthy(); + expect(stakeAfter2 > stakeBefore2!).toBeTruthy(); + }, }); it({ - id: "T31", title: "Can caller remove_stake_full_limit (fn 30)", test: async () => { - await addStakeViaContract(false) - const stakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - expect(stakeBefore !== undefined && stakeBefore > BigInt(0)).toBeTruthy() - const message = inkClient.message("caller_remove_stake_full_limit") + id: "T31", + title: "Can caller remove_stake_full_limit (fn 30)", + test: async () => { + await addStakeViaContract(false); + const stakeBefore = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + ) + )?.stake; + expect(stakeBefore !== undefined && stakeBefore > BigInt(0)).toBeTruthy(); + const message = inkClient.message("caller_remove_stake_full_limit"); const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey), netuid, limit_price: BigInt(0), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - const stakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - expect(stakeAfter !== undefined && stakeAfter < stakeBefore!).toBeTruthy() - } + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); + const stakeAfter = ( + await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( + convertPublicKeyToSs58(hotkey.publicKey), + convertPublicKeyToSs58(coldkey.publicKey), + netuid + ) + )?.stake; + expect(stakeAfter !== undefined && stakeAfter < stakeBefore!).toBeTruthy(); + }, }); it({ - id: "T32", title: "Can caller set_coldkey_auto_stake_hotkey (fn 31)", test: async () => { - await addStakeViaContract(false) - await initSecondColdAndHotkey() - const message = inkClient.message("caller_set_coldkey_auto_stake_hotkey") + id: "T32", + title: "Can caller set_coldkey_auto_stake_hotkey (fn 31)", + test: async () => { + await addStakeViaContract(false); + await initSecondColdAndHotkey(); + const message = inkClient.message("caller_set_coldkey_auto_stake_hotkey"); const data = message.encode({ netuid, hotkey: Binary.fromBytes(hotkey2.publicKey), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, data); const autoStakeHotkey = await api.query.SubtensorModule.AutoStakeDestination.getValue( convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ) - expect(autoStakeHotkey).toEqual(convertPublicKeyToSs58(hotkey2.publicKey)) - } + netuid + ); + expect(autoStakeHotkey).toEqual(convertPublicKeyToSs58(hotkey2.publicKey)); + }, }); it({ - id: "T33", title: "Can caller add_proxy and remove_proxy (fn 32-33)", test: async () => { - const addMessage = inkClient.message("caller_add_proxy") + id: "T33", + title: "Can caller add_proxy and remove_proxy (fn 32-33)", + test: async () => { + const addMessage = inkClient.message("caller_add_proxy"); const addData = addMessage.encode({ delegate: Binary.fromBytes(hotkey2.publicKey), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, addData) - let proxies = await api.query.Proxy.Proxies.getValue(convertPublicKeyToSs58(coldkey.publicKey)) - expect(proxies !== undefined && proxies[0].length > 0).toBeTruthy() - expect(proxies[0][0].delegate).toEqual(convertPublicKeyToSs58(hotkey2.publicKey)) + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, addData); + let proxies = await api.query.Proxy.Proxies.getValue(convertPublicKeyToSs58(coldkey.publicKey)); + expect(proxies !== undefined && proxies[0].length > 0).toBeTruthy(); + expect(proxies[0][0].delegate).toEqual(convertPublicKeyToSs58(hotkey2.publicKey)); - const removeMessage = inkClient.message("caller_remove_proxy") + const removeMessage = inkClient.message("caller_remove_proxy"); const removeData = removeMessage.encode({ delegate: Binary.fromBytes(hotkey2.publicKey), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, removeData) - proxies = await api.query.Proxy.Proxies.getValue(convertPublicKeyToSs58(coldkey.publicKey)) - expect(proxies !== undefined && proxies[0].length).toEqual(0) - } + }); + await sendWasmContractExtrinsic(api, coldkey, contractAddress, removeData); + proxies = await api.query.Proxy.Proxies.getValue(convertPublicKeyToSs58(coldkey.publicKey)); + expect(proxies !== undefined && proxies[0].length).toEqual(0); + }, }); it({ - id: "T34", title: "Check add_stake_recycle is atomic operation", test: async () => { - const stakeBefore = await getContractStakeOnRoot() - const balanceBefore = await getBalance(api, convertPublicKeyToSs58(coldkey.publicKey)) + id: "T34", + title: "Check add_stake_recycle is atomic operation", + test: async () => { + const stakeBefore = await getContractStakeOnRoot(); + const balanceBefore = await getBalance(api, convertPublicKeyToSs58(coldkey.publicKey)); // recycle alpha on root subnet is not allowed, the extrinsic should be failed. - const message = inkClient.message("add_stake_recycle") + const message = inkClient.message("add_stake_recycle"); const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey), netuid: 0, amount: tao(100), - }) - await sendWasmContractExtrinsicAllowFailure(api, coldkey, contractAddress, data) + }); + await sendWasmContractExtrinsicAllowFailure(api, coldkey, contractAddress, data); - const stakeAfter = await getContractStakeOnRoot() - const balanceAfter = await getBalance(api, convertPublicKeyToSs58(coldkey.publicKey)) + const stakeAfter = await getContractStakeOnRoot(); + const balanceAfter = await getBalance(api, convertPublicKeyToSs58(coldkey.publicKey)); - expect(balanceBefore - balanceAfter < 10_000_000).toBeTruthy() - expect(stakeAfter).toEqual(stakeBefore) - } + expect(balanceBefore - balanceAfter < 10_000_000).toBeTruthy(); + expect(stakeAfter).toEqual(stakeBefore); + }, }); it({ - id: "T35", title: "Check add_stake_burn is atomic operation", test: async () => { - const stakeBefore = await getContractStakeOnRoot() - const balanceBefore = await getBalance(api, convertPublicKeyToSs58(coldkey.publicKey)) - const alphaOutBefore = await api.query.SubtensorModule.SubnetAlphaOut.getValue(netuid) - - const message = inkClient.message("add_stake_burn") + id: "T35", + title: "Check add_stake_burn is atomic operation", + test: async () => { + const stakeBefore = await getContractStakeOnRoot(); + const balanceBefore = await getBalance(api, convertPublicKeyToSs58(coldkey.publicKey)); + const alphaOutBefore = await api.query.SubtensorModule.SubnetAlphaOut.getValue(netuid); + + const message = inkClient.message("add_stake_burn"); const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey), netuid: 0, amount: tao(100), - }) - await sendWasmContractExtrinsicAllowFailure(api, coldkey, contractAddress, data) + }); + await sendWasmContractExtrinsicAllowFailure(api, coldkey, contractAddress, data); - const stakeAfter = await getContractStakeOnRoot() - const alphaOutAfter = await api.query.SubtensorModule.SubnetAlphaOut.getValue(netuid) - const balanceAfter = await getBalance(api, convertPublicKeyToSs58(coldkey.publicKey)) + const stakeAfter = await getContractStakeOnRoot(); + const alphaOutAfter = await api.query.SubtensorModule.SubnetAlphaOut.getValue(netuid); + const balanceAfter = await getBalance(api, convertPublicKeyToSs58(coldkey.publicKey)); - expect(balanceBefore - balanceAfter < 10_000_000).toBeTruthy() - expect(stakeAfter).toEqual(stakeBefore) - expect(alphaOutAfter > alphaOutBefore).toBeTruthy() - } + expect(balanceBefore - balanceAfter < 10_000_000).toBeTruthy(); + expect(stakeAfter).toEqual(stakeBefore); + expect(alphaOutAfter > alphaOutBefore).toBeTruthy(); + }, }); - }, }); diff --git a/ts-tests/suites/zombienet_evm/04-edge-cases.test.ts b/ts-tests/suites/zombienet_evm/04-edge-cases.test.ts index 2b7b0eb9e3..d503987b6d 100644 --- a/ts-tests/suites/zombienet_evm/04-edge-cases.test.ts +++ b/ts-tests/suites/zombienet_evm/04-edge-cases.test.ts @@ -11,6 +11,9 @@ import { forceSetBalance, forceSetChainID, generateKeyringPair, + getEthChainId, + reconnectEthersWallet, + refreshEthersProvider, IBALANCETRANSFER_ADDRESS, IBalanceTransferABI, raoToEth, @@ -48,9 +51,14 @@ describeSuite({ await waitForFinalizedBlocks(api, 1); }, 300000); + function refreshProviderAndWallets(): void { + provider = refreshEthersProvider(provider); + ethWallet = reconnectEthersWallet(ethWallet, provider); + ethWallet2 = reconnectEthersWallet(ethWallet2, provider); + } + async function getChainId(): Promise { - const network = await provider.getNetwork(); - return network.chainId; + return getEthChainId(provider); } it({ @@ -63,12 +71,14 @@ describeSuite({ const newChainId = BigInt(100); await forceSetChainID(api, newChainId); await waitForFinalizedBlocks(api, 1); + refreshProviderAndWallets(); chainId = await getChainId(); expect(chainId).toEqual(newChainId); await forceSetChainID(api, BigInt(INIT_CHAIN_ID)); await waitForFinalizedBlocks(api, 1); + refreshProviderAndWallets(); chainId = await getChainId(); expect(chainId).toEqual(BigInt(INIT_CHAIN_ID)); diff --git a/ts-tests/suites/zombienet_evm/05-direct-call-precompile.test.ts b/ts-tests/suites/zombienet_evm/05-direct-call-precompile.test.ts index 0dbbaad8fe..45dfc1491c 100644 --- a/ts-tests/suites/zombienet_evm/05-direct-call-precompile.test.ts +++ b/ts-tests/suites/zombienet_evm/05-direct-call-precompile.test.ts @@ -501,7 +501,11 @@ describeSuite({ const proxyType = 0; const delay = 0; const proxyContract = new ethers.Contract(IPROXY_ADDRESS, IProxyABI, ethWallet); - const addProxyTx = await proxyContract.addProxy(convertH160ToPublicKey(wrapperAddress), proxyType, delay); + const addProxyTx = await proxyContract.addProxy( + convertH160ToPublicKey(wrapperAddress), + proxyType, + delay + ); const receipt = await addProxyTx.wait(); expect(receipt?.status).toEqual(1); await waitForFinalizedBlocks(api, 1); @@ -510,9 +514,11 @@ describeSuite({ const callData = await remarkCall.getEncodedData(); const data = callData.asBytes(); - const proxyCallTx = await wrapperContract.proxyCall(convertH160ToPublicKey(ethWallet.address), [proxyType], [ - ...data, - ]); + const proxyCallTx = await wrapperContract.proxyCall( + convertH160ToPublicKey(ethWallet.address), + [proxyType], + [...data] + ); const proxyReceipt = await proxyCallTx.wait(); expect(proxyReceipt?.status).toEqual(1); }, @@ -526,9 +532,7 @@ describeSuite({ const mapped = await wrapperContract.addressMapping(ethWallet.address); expect(mapped).toBeDefined(); - expect(mapped).not.toEqual( - "0x0000000000000000000000000000000000000000000000000000000000000000" - ); + expect(mapped).not.toEqual("0x0000000000000000000000000000000000000000000000000000000000000000"); }, }); }, diff --git a/ts-tests/utils/evm-config.ts b/ts-tests/utils/evm-config.ts index 4df4e70d30..7ea940d572 100644 --- a/ts-tests/utils/evm-config.ts +++ b/ts-tests/utils/evm-config.ts @@ -103,495 +103,495 @@ export const IStakingABI = [ export const IStakingV2ABI = [ { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "delegate", - "type": "bytes32" - } + internalType: "bytes32", + name: "delegate", + type: "bytes32", + }, ], - "name": "addProxy", - "outputs": [], - "stateMutability": "payable", - "type": "function" + name: "addProxy", + outputs: [], + stateMutability: "payable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" + internalType: "bytes32", + name: "hotkey", + type: "bytes32", }, { - "internalType": "uint256", - "name": "amount", - "type": "uint256" + internalType: "uint256", + name: "amount", + type: "uint256", }, { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - } + internalType: "uint256", + name: "netuid", + type: "uint256", + }, ], - "name": "addStake", - "outputs": [], - "stateMutability": "payable", - "type": "function" + name: "addStake", + outputs: [], + stateMutability: "payable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" + internalType: "bytes32", + name: "hotkey", + type: "bytes32", }, { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - } + internalType: "uint256", + name: "netuid", + type: "uint256", + }, ], - "name": "getAlphaStakedValidators", - "outputs": [ + name: "getAlphaStakedValidators", + outputs: [ { - "internalType": "uint256[]", - "name": "", - "type": "uint256[]" - } + internalType: "uint256[]", + name: "", + type: "uint256[]", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" + internalType: "bytes32", + name: "hotkey", + type: "bytes32", }, { - "internalType": "bytes32", - "name": "coldkey", - "type": "bytes32" + internalType: "bytes32", + name: "coldkey", + type: "bytes32", }, { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - } + internalType: "uint256", + name: "netuid", + type: "uint256", + }, ], - "name": "getStake", - "outputs": [ + name: "getStake", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" + internalType: "bytes32", + name: "hotkey", + type: "bytes32", }, { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - } + internalType: "uint256", + name: "netuid", + type: "uint256", + }, ], - "name": "getTotalAlphaStaked", - "outputs": [ + name: "getTotalAlphaStaked", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "coldkey", - "type": "bytes32" - } + internalType: "bytes32", + name: "coldkey", + type: "bytes32", + }, ], - "name": "getTotalColdkeyStake", - "outputs": [ + name: "getTotalColdkeyStake", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "coldkey", - "type": "bytes32" + internalType: "bytes32", + name: "coldkey", + type: "bytes32", }, { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - } + internalType: "uint256", + name: "netuid", + type: "uint256", + }, ], - "name": "getTotalColdkeyStakeOnSubnet", - "outputs": [ + name: "getTotalColdkeyStakeOnSubnet", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" - } + internalType: "bytes32", + name: "hotkey", + type: "bytes32", + }, ], - "name": "getTotalHotkeyStake", - "outputs": [ + name: "getTotalHotkeyStake", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [], - "name": "getNominatorMinRequiredStake", - "outputs": [ + inputs: [], + name: "getNominatorMinRequiredStake", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "delegate", - "type": "bytes32" - } + internalType: "bytes32", + name: "delegate", + type: "bytes32", + }, ], - "name": "removeProxy", - "outputs": [], - "stateMutability": "payable", - "type": "function" + name: "removeProxy", + outputs: [], + stateMutability: "payable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" + internalType: "bytes32", + name: "hotkey", + type: "bytes32", }, { - "internalType": "uint256", - "name": "amount", - "type": "uint256" + internalType: "uint256", + name: "amount", + type: "uint256", }, { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - } + internalType: "uint256", + name: "netuid", + type: "uint256", + }, ], - "name": "removeStake", - "outputs": [], - "stateMutability": "payable", - "type": "function" + name: "removeStake", + outputs: [], + stateMutability: "payable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" + internalType: "bytes32", + name: "hotkey", + type: "bytes32", }, { - "internalType": "uint256", - "name": "amount", - "type": "uint256" + internalType: "uint256", + name: "amount", + type: "uint256", }, { - "internalType": "uint256", - "name": "limit_price", - "type": "uint256" + internalType: "uint256", + name: "limit_price", + type: "uint256", }, { - "internalType": "bool", - "name": "allow_partial", - "type": "bool" + internalType: "bool", + name: "allow_partial", + type: "bool", }, { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - } + internalType: "uint256", + name: "netuid", + type: "uint256", + }, ], - "name": "addStakeLimit", - "outputs": [], - "stateMutability": "payable", - "type": "function" + name: "addStakeLimit", + outputs: [], + stateMutability: "payable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" + internalType: "bytes32", + name: "hotkey", + type: "bytes32", }, { - "internalType": "uint256", - "name": "amount", - "type": "uint256" + internalType: "uint256", + name: "amount", + type: "uint256", }, { - "internalType": "uint256", - "name": "limit_price", - "type": "uint256" + internalType: "uint256", + name: "limit_price", + type: "uint256", }, { - "internalType": "bool", - "name": "allow_partial", - "type": "bool" + internalType: "bool", + name: "allow_partial", + type: "bool", }, { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - } + internalType: "uint256", + name: "netuid", + type: "uint256", + }, ], - "name": "removeStakeLimit", - "outputs": [], - "stateMutability": "payable", - "type": "function" + name: "removeStakeLimit", + outputs: [], + stateMutability: "payable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" + internalType: "bytes32", + name: "hotkey", + type: "bytes32", }, { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" + internalType: "uint256", + name: "netuid", + type: "uint256", }, ], - "name": "removeStakeFull", - "outputs": [], - "stateMutability": "payable", - "type": "function" + name: "removeStakeFull", + outputs: [], + stateMutability: "payable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" + internalType: "bytes32", + name: "hotkey", + type: "bytes32", }, { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" + internalType: "uint256", + name: "netuid", + type: "uint256", }, { - "internalType": "uint256", - "name": "limit_price", - "type": "uint256" - } + internalType: "uint256", + name: "limit_price", + type: "uint256", + }, ], - "name": "removeStakeFullLimit", - "outputs": [], - "stateMutability": "payable", - "type": "function" + name: "removeStakeFullLimit", + outputs: [], + stateMutability: "payable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" + internalType: "bytes32", + name: "hotkey", + type: "bytes32", }, { - "internalType": "uint256", - "name": "amount", - "type": "uint256" + internalType: "uint256", + name: "amount", + type: "uint256", }, { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - } + internalType: "uint256", + name: "netuid", + type: "uint256", + }, ], - "name": "burnAlpha", - "outputs": [], - "stateMutability": "payable", - "type": "function" + name: "burnAlpha", + outputs: [], + stateMutability: "payable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "spenderAddress", - "type": "address" + internalType: "address", + name: "spenderAddress", + type: "address", }, { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" + internalType: "uint256", + name: "netuid", + type: "uint256", }, { - "internalType": "uint256", - "name": "absoluteAmount", - "type": "uint256" - } + internalType: "uint256", + name: "absoluteAmount", + type: "uint256", + }, ], - "name": "approve", - "outputs": [], - "stateMutability": "", - "type": "function" + name: "approve", + outputs: [], + stateMutability: "", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "sourceAddress", - "type": "address" + internalType: "address", + name: "sourceAddress", + type: "address", }, { - "internalType": "address", - "name": "spenderAddress", - "type": "address" + internalType: "address", + name: "spenderAddress", + type: "address", }, { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - } + internalType: "uint256", + name: "netuid", + type: "uint256", + }, ], - "name": "allowance", - "outputs": [ + name: "allowance", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "spenderAddress", - "type": "address" + internalType: "address", + name: "spenderAddress", + type: "address", }, { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" + internalType: "uint256", + name: "netuid", + type: "uint256", }, { - "internalType": "uint256", - "name": "increaseAmount", - "type": "uint256" - } + internalType: "uint256", + name: "increaseAmount", + type: "uint256", + }, ], - "name": "increaseAllowance", - "outputs": [], - "stateMutability": "", - "type": "function" + name: "increaseAllowance", + outputs: [], + stateMutability: "", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "spenderAddress", - "type": "address" + internalType: "address", + name: "spenderAddress", + type: "address", }, { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" + internalType: "uint256", + name: "netuid", + type: "uint256", }, { - "internalType": "uint256", - "name": "decreaseAmount", - "type": "uint256" - } + internalType: "uint256", + name: "decreaseAmount", + type: "uint256", + }, ], - "name": "decreaseAllowance", - "outputs": [], - "stateMutability": "", - "type": "function" + name: "decreaseAllowance", + outputs: [], + stateMutability: "", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "sourceAddress", - "type": "address" + internalType: "address", + name: "sourceAddress", + type: "address", }, { - "internalType": "address", - "name": "destinationAddress", - "type": "address" + internalType: "address", + name: "destinationAddress", + type: "address", }, { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" + internalType: "bytes32", + name: "hotkey", + type: "bytes32", }, { - "internalType": "uint256", - "name": "originNetuid", - "type": "uint256" + internalType: "uint256", + name: "originNetuid", + type: "uint256", }, { - "internalType": "uint256", - "name": "destinationNetuid", - "type": "uint256" + internalType: "uint256", + name: "destinationNetuid", + type: "uint256", }, { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } + internalType: "uint256", + name: "amount", + type: "uint256", + }, ], - "name": "transferStakeFrom", - "outputs": [], - "stateMutability": "", - "type": "function" - } + name: "transferStakeFrom", + outputs: [], + stateMutability: "", + type: "function", + }, ]; export const IProxyABI = [ @@ -825,1526 +825,1529 @@ export const WITHDRAW_CONTRACT_BYTECODE = "6080604052348015600e575f80fd5b506101148061001c5f395ff3fe608060405260043610601e575f3560e01c80632e1a7d4d146028576024565b36602457005b5f80fd5b603e6004803603810190603a919060b8565b6040565b005b3373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156082573d5f803e3d5ffd5b5050565b5f80fd5b5f819050919050565b609a81608a565b811460a3575f80fd5b50565b5f8135905060b2816093565b92915050565b5f6020828403121560ca5760c96086565b5b5f60d58482850160a6565b9150509291505056fea2646970667358221220f43400858bfe4fcc0bf3c1e2e06d3a9e6ced86454a00bd7e4866b3d4d64e46bb64736f6c634300081a0033"; export const ALPHA_POOL_CONTRACT_ABI = [ { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "_contract_hotkey", - "type": "bytes32" - } + internalType: "bytes32", + name: "_contract_hotkey", + type: "bytes32", + }, ], - "stateMutability": "nonpayable", - "type": "constructor" + stateMutability: "nonpayable", + type: "constructor", }, { - "inputs": [], - "name": "ISTAKING_V2_ADDRESS", - "outputs": [ + inputs: [], + name: "ISTAKING_V2_ADDRESS", + outputs: [ { - "internalType": "address", - "name": "", - "type": "address" - } + internalType: "address", + name: "", + type: "address", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "", - "type": "address" + internalType: "address", + name: "", + type: "address", }, { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "name": "alphaBalance", - "outputs": [ + name: "alphaBalance", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [], - "name": "contract_coldkey", - "outputs": [ + inputs: [], + name: "contract_coldkey", + outputs: [ { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } + internalType: "bytes32", + name: "", + type: "bytes32", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [], - "name": "contract_hotkey", - "outputs": [ + inputs: [], + name: "contract_hotkey", + outputs: [ { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } + internalType: "bytes32", + name: "", + type: "bytes32", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint256", - "name": "_netuid", - "type": "uint256" + internalType: "uint256", + name: "_netuid", + type: "uint256", }, { - "internalType": "uint256", - "name": "_alphaAmount", - "type": "uint256" + internalType: "uint256", + name: "_alphaAmount", + type: "uint256", }, { - "internalType": "bytes32", - "name": "_hotkey", - "type": "bytes32" - } + internalType: "bytes32", + name: "_hotkey", + type: "bytes32", + }, ], - "name": "depositAlpha", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "depositAlpha", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - } + internalType: "uint256", + name: "netuid", + type: "uint256", + }, ], - "name": "getContractStake", - "outputs": [ + name: "getContractStake", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "_contract_coldkey", - "type": "bytes32" - } + internalType: "bytes32", + name: "_contract_coldkey", + type: "bytes32", + }, ], - "name": "setContractColdkey", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "setContractColdkey", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint256", - "name": "_netuid", - "type": "uint256" + internalType: "uint256", + name: "_netuid", + type: "uint256", }, { - "internalType": "uint256", - "name": "_alphaAmount", - "type": "uint256" + internalType: "uint256", + name: "_alphaAmount", + type: "uint256", }, { - "internalType": "bytes32", - "name": "_user_coldkey", - "type": "bytes32" - } + internalType: "bytes32", + name: "_user_coldkey", + type: "bytes32", + }, ], - "name": "withdrawAlpha", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } + name: "withdrawAlpha", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, ]; -export const ALPHA_POOL_CONTRACT_BYTECODE = "6080604052348015600e575f5ffd5b506040516110d83803806110d88339818101604052810190602e9190606c565b80600181905550506092565b5f5ffd5b5f819050919050565b604e81603e565b81146057575f5ffd5b50565b5f815190506066816047565b92915050565b5f60208284031215607e57607d603a565b5b5f608984828501605a565b91505092915050565b6110398061009f5f395ff3fe608060405234801561000f575f5ffd5b5060043610610086575f3560e01c8063cdcde3e911610059578063cdcde3e914610110578063d67c076114610140578063f0d6bb891461015e578063fdbcdce91461017a57610086565b80632849912d1461008a5780633af975ff146100a657806359948a67146100c4578063bee0bca1146100f4575b5f5ffd5b6100a4600480360381019061009f919061090d565b610198565b005b6100ae610518565b6040516100bb919061096c565b60405180910390f35b6100de60048036038101906100d991906109df565b61051d565b6040516100eb9190610a2c565b60405180910390f35b61010e6004803603810190610109919061090d565b61053d565b005b61012a60048036038101906101259190610a45565b610805565b6040516101379190610a2c565b60405180910390f35b61014861088e565b604051610155919061096c565b60405180910390f35b61017860048036038101906101739190610a70565b610894565b005b61018261089d565b60405161018f9190610aaa565b60405180910390f35b5f5f1b5f54036101dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d490610b1d565b60405180910390fd5b5f6101e784610805565b90505f6317ce5f6260e01b5f548487888860405160240161020c959493929190610b3b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090505f61080573ffffffffffffffffffffffffffffffffffffffff165a836040516102949190610bde565b5f604051808303818686f4925050503d805f81146102cd576040519150601f19603f3d011682016040523d82523d5f602084013e6102d2565b606091505b5050905080610316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030d90610c3e565b60405180910390fd5b5f61032087610805565b9050838111610364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035b90610ccc565b60405180910390fd5b5f84826103719190610d17565b905060015486146104ac57631149f65960e01b866001548a8b8560405160240161039f959493929190610b3b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050935061080573ffffffffffffffffffffffffffffffffffffffff165a856040516104269190610bde565b5f604051808303815f8787f1925050503d805f8114610460576040519150601f19603f3d011682016040523d82523d5f602084013e610465565b606091505b505080935050826104ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a290610dba565b60405180910390fd5b5b8060025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a81526020019081526020015f205f8282546105079190610dd8565b925050819055505050505050505050565b5f5481565b6002602052815f5260405f20602052805f5260405f205f91509150505481565b5f5f1b5f5403610582576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057990610b1d565b60405180910390fd5b8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f20541015610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060890610e7b565b60405180910390fd5b5f61061b84610805565b90508260025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8681526020019081526020015f205f8282546106789190610d17565b925050819055505f6317ce5f6260e01b836001548788886040516024016106a3959493929190610b3b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090505f61080573ffffffffffffffffffffffffffffffffffffffff165a8360405161072b9190610bde565b5f604051808303815f8787f1925050503d805f8114610765576040519150601f19603f3d011682016040523d82523d5f602084013e61076a565b606091505b505090505f61077887610805565b90508381106107bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b390610f09565b60405180910390fd5b816107fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f390610f71565b60405180910390fd5b50505050505050565b5f61080573ffffffffffffffffffffffffffffffffffffffff1663e3b598fa6001545f54856040518463ffffffff1660e01b815260040161084893929190610f8f565b602060405180830381865afa158015610863573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108879190610fd8565b9050919050565b60015481565b805f8190555050565b61080581565b5f5ffd5b5f819050919050565b6108b9816108a7565b81146108c3575f5ffd5b50565b5f813590506108d4816108b0565b92915050565b5f819050919050565b6108ec816108da565b81146108f6575f5ffd5b50565b5f81359050610907816108e3565b92915050565b5f5f5f60608486031215610924576109236108a3565b5b5f610931868287016108c6565b9350506020610942868287016108c6565b9250506040610953868287016108f9565b9150509250925092565b610966816108da565b82525050565b5f60208201905061097f5f83018461095d565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6109ae82610985565b9050919050565b6109be816109a4565b81146109c8575f5ffd5b50565b5f813590506109d9816109b5565b92915050565b5f5f604083850312156109f5576109f46108a3565b5b5f610a02858286016109cb565b9250506020610a13858286016108c6565b9150509250929050565b610a26816108a7565b82525050565b5f602082019050610a3f5f830184610a1d565b92915050565b5f60208284031215610a5a57610a596108a3565b5b5f610a67848285016108c6565b91505092915050565b5f60208284031215610a8557610a846108a3565b5b5f610a92848285016108f9565b91505092915050565b610aa4816109a4565b82525050565b5f602082019050610abd5f830184610a9b565b92915050565b5f82825260208201905092915050565b7f636f6e747261637420636f6c646b6579206e6f742073657400000000000000005f82015250565b5f610b07601883610ac3565b9150610b1282610ad3565b602082019050919050565b5f6020820190508181035f830152610b3481610afb565b9050919050565b5f60a082019050610b4e5f83018861095d565b610b5b602083018761095d565b610b686040830186610a1d565b610b756060830185610a1d565b610b826080830184610a1d565b9695505050505050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f610bb882610b8c565b610bc28185610b96565b9350610bd2818560208601610ba0565b80840191505092915050565b5f610be98284610bae565b915081905092915050565b7f75736572206465706f73697420616c7068612063616c6c206661696c656400005f82015250565b5f610c28601e83610ac3565b9150610c3382610bf4565b602082019050919050565b5f6020820190508181035f830152610c5581610c1c565b9050919050565b7f636f6e7472616374207374616b652064656372656173656420616674657220645f8201527f65706f7369740000000000000000000000000000000000000000000000000000602082015250565b5f610cb6602683610ac3565b9150610cc182610c5c565b604082019050919050565b5f6020820190508181035f830152610ce381610caa565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610d21826108a7565b9150610d2c836108a7565b9250828203905081811115610d4457610d43610cea565b5b92915050565b7f75736572206465706f7369742c206d6f7665207374616b652063616c6c2066615f8201527f696c656400000000000000000000000000000000000000000000000000000000602082015250565b5f610da4602483610ac3565b9150610daf82610d4a565b604082019050919050565b5f6020820190508181035f830152610dd181610d98565b9050919050565b5f610de2826108a7565b9150610ded836108a7565b9250828201905080821115610e0557610e04610cea565b5b92915050565b7f757365722077697468647261772c20696e73756666696369656e7420616c70685f8201527f612062616c616e63650000000000000000000000000000000000000000000000602082015250565b5f610e65602983610ac3565b9150610e7082610e0b565b604082019050919050565b5f6020820190508181035f830152610e9281610e59565b9050919050565b7f636f6e7472616374207374616b6520696e6372656173656420616674657220775f8201527f6974686472617700000000000000000000000000000000000000000000000000602082015250565b5f610ef3602783610ac3565b9150610efe82610e99565b604082019050919050565b5f6020820190508181035f830152610f2081610ee7565b9050919050565b7f7573657220776974686472617720616c7068612063616c6c206661696c6564005f82015250565b5f610f5b601f83610ac3565b9150610f6682610f27565b602082019050919050565b5f6020820190508181035f830152610f8881610f4f565b9050919050565b5f606082019050610fa25f83018661095d565b610faf602083018561095d565b610fbc6040830184610a1d565b949350505050565b5f81519050610fd2816108b0565b92915050565b5f60208284031215610fed57610fec6108a3565b5b5f610ffa84828501610fc4565b9150509291505056fea2646970667358221220a0d4b2eb5f0c7f74a27f987e803ae1c8465e0da35f09c240ddb6bac757ce422164736f6c634300081e0033"; +export const ALPHA_POOL_CONTRACT_BYTECODE = + "6080604052348015600e575f5ffd5b506040516110d83803806110d88339818101604052810190602e9190606c565b80600181905550506092565b5f5ffd5b5f819050919050565b604e81603e565b81146057575f5ffd5b50565b5f815190506066816047565b92915050565b5f60208284031215607e57607d603a565b5b5f608984828501605a565b91505092915050565b6110398061009f5f395ff3fe608060405234801561000f575f5ffd5b5060043610610086575f3560e01c8063cdcde3e911610059578063cdcde3e914610110578063d67c076114610140578063f0d6bb891461015e578063fdbcdce91461017a57610086565b80632849912d1461008a5780633af975ff146100a657806359948a67146100c4578063bee0bca1146100f4575b5f5ffd5b6100a4600480360381019061009f919061090d565b610198565b005b6100ae610518565b6040516100bb919061096c565b60405180910390f35b6100de60048036038101906100d991906109df565b61051d565b6040516100eb9190610a2c565b60405180910390f35b61010e6004803603810190610109919061090d565b61053d565b005b61012a60048036038101906101259190610a45565b610805565b6040516101379190610a2c565b60405180910390f35b61014861088e565b604051610155919061096c565b60405180910390f35b61017860048036038101906101739190610a70565b610894565b005b61018261089d565b60405161018f9190610aaa565b60405180910390f35b5f5f1b5f54036101dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d490610b1d565b60405180910390fd5b5f6101e784610805565b90505f6317ce5f6260e01b5f548487888860405160240161020c959493929190610b3b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090505f61080573ffffffffffffffffffffffffffffffffffffffff165a836040516102949190610bde565b5f604051808303818686f4925050503d805f81146102cd576040519150601f19603f3d011682016040523d82523d5f602084013e6102d2565b606091505b5050905080610316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030d90610c3e565b60405180910390fd5b5f61032087610805565b9050838111610364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035b90610ccc565b60405180910390fd5b5f84826103719190610d17565b905060015486146104ac57631149f65960e01b866001548a8b8560405160240161039f959493929190610b3b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050935061080573ffffffffffffffffffffffffffffffffffffffff165a856040516104269190610bde565b5f604051808303815f8787f1925050503d805f8114610460576040519150601f19603f3d011682016040523d82523d5f602084013e610465565b606091505b505080935050826104ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a290610dba565b60405180910390fd5b5b8060025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a81526020019081526020015f205f8282546105079190610dd8565b925050819055505050505050505050565b5f5481565b6002602052815f5260405f20602052805f5260405f205f91509150505481565b5f5f1b5f5403610582576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057990610b1d565b60405180910390fd5b8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f20541015610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060890610e7b565b60405180910390fd5b5f61061b84610805565b90508260025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8681526020019081526020015f205f8282546106789190610d17565b925050819055505f6317ce5f6260e01b836001548788886040516024016106a3959493929190610b3b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090505f61080573ffffffffffffffffffffffffffffffffffffffff165a8360405161072b9190610bde565b5f604051808303815f8787f1925050503d805f8114610765576040519150601f19603f3d011682016040523d82523d5f602084013e61076a565b606091505b505090505f61077887610805565b90508381106107bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b390610f09565b60405180910390fd5b816107fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f390610f71565b60405180910390fd5b50505050505050565b5f61080573ffffffffffffffffffffffffffffffffffffffff1663e3b598fa6001545f54856040518463ffffffff1660e01b815260040161084893929190610f8f565b602060405180830381865afa158015610863573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108879190610fd8565b9050919050565b60015481565b805f8190555050565b61080581565b5f5ffd5b5f819050919050565b6108b9816108a7565b81146108c3575f5ffd5b50565b5f813590506108d4816108b0565b92915050565b5f819050919050565b6108ec816108da565b81146108f6575f5ffd5b50565b5f81359050610907816108e3565b92915050565b5f5f5f60608486031215610924576109236108a3565b5b5f610931868287016108c6565b9350506020610942868287016108c6565b9250506040610953868287016108f9565b9150509250925092565b610966816108da565b82525050565b5f60208201905061097f5f83018461095d565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6109ae82610985565b9050919050565b6109be816109a4565b81146109c8575f5ffd5b50565b5f813590506109d9816109b5565b92915050565b5f5f604083850312156109f5576109f46108a3565b5b5f610a02858286016109cb565b9250506020610a13858286016108c6565b9150509250929050565b610a26816108a7565b82525050565b5f602082019050610a3f5f830184610a1d565b92915050565b5f60208284031215610a5a57610a596108a3565b5b5f610a67848285016108c6565b91505092915050565b5f60208284031215610a8557610a846108a3565b5b5f610a92848285016108f9565b91505092915050565b610aa4816109a4565b82525050565b5f602082019050610abd5f830184610a9b565b92915050565b5f82825260208201905092915050565b7f636f6e747261637420636f6c646b6579206e6f742073657400000000000000005f82015250565b5f610b07601883610ac3565b9150610b1282610ad3565b602082019050919050565b5f6020820190508181035f830152610b3481610afb565b9050919050565b5f60a082019050610b4e5f83018861095d565b610b5b602083018761095d565b610b686040830186610a1d565b610b756060830185610a1d565b610b826080830184610a1d565b9695505050505050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f610bb882610b8c565b610bc28185610b96565b9350610bd2818560208601610ba0565b80840191505092915050565b5f610be98284610bae565b915081905092915050565b7f75736572206465706f73697420616c7068612063616c6c206661696c656400005f82015250565b5f610c28601e83610ac3565b9150610c3382610bf4565b602082019050919050565b5f6020820190508181035f830152610c5581610c1c565b9050919050565b7f636f6e7472616374207374616b652064656372656173656420616674657220645f8201527f65706f7369740000000000000000000000000000000000000000000000000000602082015250565b5f610cb6602683610ac3565b9150610cc182610c5c565b604082019050919050565b5f6020820190508181035f830152610ce381610caa565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610d21826108a7565b9150610d2c836108a7565b9250828203905081811115610d4457610d43610cea565b5b92915050565b7f75736572206465706f7369742c206d6f7665207374616b652063616c6c2066615f8201527f696c656400000000000000000000000000000000000000000000000000000000602082015250565b5f610da4602483610ac3565b9150610daf82610d4a565b604082019050919050565b5f6020820190508181035f830152610dd181610d98565b9050919050565b5f610de2826108a7565b9150610ded836108a7565b9250828201905080821115610e0557610e04610cea565b5b92915050565b7f757365722077697468647261772c20696e73756666696369656e7420616c70685f8201527f612062616c616e63650000000000000000000000000000000000000000000000602082015250565b5f610e65602983610ac3565b9150610e7082610e0b565b604082019050919050565b5f6020820190508181035f830152610e9281610e59565b9050919050565b7f636f6e7472616374207374616b6520696e6372656173656420616674657220775f8201527f6974686472617700000000000000000000000000000000000000000000000000602082015250565b5f610ef3602783610ac3565b9150610efe82610e99565b604082019050919050565b5f6020820190508181035f830152610f2081610ee7565b9050919050565b7f7573657220776974686472617720616c7068612063616c6c206661696c6564005f82015250565b5f610f5b601f83610ac3565b9150610f6682610f27565b602082019050919050565b5f6020820190508181035f830152610f8881610f4f565b9050919050565b5f606082019050610fa25f83018661095d565b610faf602083018561095d565b610fbc6040830184610a1d565b949350505050565b5f81519050610fd2816108b0565b92915050565b5f60208284031215610fed57610fec6108a3565b5b5f610ffa84828501610fc4565b9150509291505056fea2646970667358221220a0d4b2eb5f0c7f74a27f987e803ae1c8465e0da35f09c240ddb6bac757ce422164736f6c634300081e0033"; export const BRIDGE_TOKEN_CONTRACT_ABI = [ { - "inputs": [ + inputs: [ { - "internalType": "string", - "name": "name_", - "type": "string" + internalType: "string", + name: "name_", + type: "string", }, { - "internalType": "string", - "name": "symbol_", - "type": "string" + internalType: "string", + name: "symbol_", + type: "string", }, { - "internalType": "address", - "name": "admin", - "type": "address" - } + internalType: "address", + name: "admin", + type: "address", + }, ], - "stateMutability": "nonpayable", - "type": "constructor" + stateMutability: "nonpayable", + type: "constructor", }, { - "inputs": [], - "name": "AccessControlBadConfirmation", - "type": "error" + inputs: [], + name: "AccessControlBadConfirmation", + type: "error", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "account", - "type": "address" + internalType: "address", + name: "account", + type: "address", }, { - "internalType": "bytes32", - "name": "neededRole", - "type": "bytes32" - } + internalType: "bytes32", + name: "neededRole", + type: "bytes32", + }, ], - "name": "AccessControlUnauthorizedAccount", - "type": "error" + name: "AccessControlUnauthorizedAccount", + type: "error", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "spender", - "type": "address" + internalType: "address", + name: "spender", + type: "address", }, { - "internalType": "uint256", - "name": "allowance", - "type": "uint256" + internalType: "uint256", + name: "allowance", + type: "uint256", }, { - "internalType": "uint256", - "name": "needed", - "type": "uint256" - } + internalType: "uint256", + name: "needed", + type: "uint256", + }, ], - "name": "ERC20InsufficientAllowance", - "type": "error" + name: "ERC20InsufficientAllowance", + type: "error", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "sender", - "type": "address" + internalType: "address", + name: "sender", + type: "address", }, { - "internalType": "uint256", - "name": "balance", - "type": "uint256" + internalType: "uint256", + name: "balance", + type: "uint256", }, { - "internalType": "uint256", - "name": "needed", - "type": "uint256" - } + internalType: "uint256", + name: "needed", + type: "uint256", + }, ], - "name": "ERC20InsufficientBalance", - "type": "error" + name: "ERC20InsufficientBalance", + type: "error", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "approver", - "type": "address" - } + internalType: "address", + name: "approver", + type: "address", + }, ], - "name": "ERC20InvalidApprover", - "type": "error" + name: "ERC20InvalidApprover", + type: "error", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "receiver", - "type": "address" - } + internalType: "address", + name: "receiver", + type: "address", + }, ], - "name": "ERC20InvalidReceiver", - "type": "error" + name: "ERC20InvalidReceiver", + type: "error", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "sender", - "type": "address" - } + internalType: "address", + name: "sender", + type: "address", + }, ], - "name": "ERC20InvalidSender", - "type": "error" + name: "ERC20InvalidSender", + type: "error", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "spender", - "type": "address" - } + internalType: "address", + name: "spender", + type: "address", + }, ], - "name": "ERC20InvalidSpender", - "type": "error" + name: "ERC20InvalidSpender", + type: "error", }, { - "inputs": [], - "name": "UnauthorizedHandler", - "type": "error" + inputs: [], + name: "UnauthorizedHandler", + type: "error", }, { - "anonymous": false, - "inputs": [ + anonymous: false, + inputs: [ { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" + indexed: true, + internalType: "address", + name: "owner", + type: "address", }, { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" + indexed: true, + internalType: "address", + name: "spender", + type: "address", }, { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, ], - "name": "Approval", - "type": "event" + name: "Approval", + type: "event", }, { - "anonymous": false, - "inputs": [ + anonymous: false, + inputs: [ { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" + indexed: true, + internalType: "bytes32", + name: "role", + type: "bytes32", }, { - "indexed": true, - "internalType": "bytes32", - "name": "previousAdminRole", - "type": "bytes32" + indexed: true, + internalType: "bytes32", + name: "previousAdminRole", + type: "bytes32", }, { - "indexed": true, - "internalType": "bytes32", - "name": "newAdminRole", - "type": "bytes32" - } + indexed: true, + internalType: "bytes32", + name: "newAdminRole", + type: "bytes32", + }, ], - "name": "RoleAdminChanged", - "type": "event" + name: "RoleAdminChanged", + type: "event", }, { - "anonymous": false, - "inputs": [ + anonymous: false, + inputs: [ { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" + indexed: true, + internalType: "bytes32", + name: "role", + type: "bytes32", }, { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" + indexed: true, + internalType: "address", + name: "account", + type: "address", }, { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, ], - "name": "RoleGranted", - "type": "event" + name: "RoleGranted", + type: "event", }, { - "anonymous": false, - "inputs": [ + anonymous: false, + inputs: [ { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" + indexed: true, + internalType: "bytes32", + name: "role", + type: "bytes32", }, { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" + indexed: true, + internalType: "address", + name: "account", + type: "address", }, { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, ], - "name": "RoleRevoked", - "type": "event" + name: "RoleRevoked", + type: "event", }, { - "anonymous": false, - "inputs": [ + anonymous: false, + inputs: [ { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" + indexed: true, + internalType: "address", + name: "from", + type: "address", }, { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" + indexed: true, + internalType: "address", + name: "to", + type: "address", }, { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, ], - "name": "Transfer", - "type": "event" + name: "Transfer", + type: "event", }, { - "inputs": [], - "name": "DEFAULT_ADMIN_ROLE", - "outputs": [ + inputs: [], + name: "DEFAULT_ADMIN_ROLE", + outputs: [ { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } + internalType: "bytes32", + name: "", + type: "bytes32", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "owner", - "type": "address" + internalType: "address", + name: "owner", + type: "address", }, { - "internalType": "address", - "name": "spender", - "type": "address" - } + internalType: "address", + name: "spender", + type: "address", + }, ], - "name": "allowance", - "outputs": [ + name: "allowance", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "spender", - "type": "address" + internalType: "address", + name: "spender", + type: "address", }, { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } + internalType: "uint256", + name: "value", + type: "uint256", + }, ], - "name": "approve", - "outputs": [ + name: "approve", + outputs: [ { - "internalType": "bool", - "name": "", - "type": "bool" - } + internalType: "bool", + name: "", + type: "bool", + }, ], - "stateMutability": "nonpayable", - "type": "function" + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "account", - "type": "address" - } + internalType: "address", + name: "account", + type: "address", + }, ], - "name": "balanceOf", - "outputs": [ + name: "balanceOf", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } + internalType: "uint256", + name: "value", + type: "uint256", + }, ], - "name": "burn", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "burn", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "from", - "type": "address" + internalType: "address", + name: "from", + type: "address", }, { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } + internalType: "uint256", + name: "amount", + type: "uint256", + }, ], - "name": "burnFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "burnFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [], - "name": "decimals", - "outputs": [ + inputs: [], + name: "decimals", + outputs: [ { - "internalType": "uint8", - "name": "", - "type": "uint8" - } + internalType: "uint8", + name: "", + type: "uint8", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - } + internalType: "bytes32", + name: "role", + type: "bytes32", + }, ], - "name": "getRoleAdmin", - "outputs": [ + name: "getRoleAdmin", + outputs: [ { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } + internalType: "bytes32", + name: "", + type: "bytes32", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" + internalType: "bytes32", + name: "role", + type: "bytes32", }, { - "internalType": "address", - "name": "account", - "type": "address" - } + internalType: "address", + name: "account", + type: "address", + }, ], - "name": "grantRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "grantRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" + internalType: "bytes32", + name: "role", + type: "bytes32", }, { - "internalType": "address", - "name": "account", - "type": "address" - } + internalType: "address", + name: "account", + type: "address", + }, ], - "name": "hasRole", - "outputs": [ + name: "hasRole", + outputs: [ { - "internalType": "bool", - "name": "", - "type": "bool" - } + internalType: "bool", + name: "", + type: "bool", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "account", - "type": "address" - } + internalType: "address", + name: "account", + type: "address", + }, ], - "name": "isAdmin", - "outputs": [ + name: "isAdmin", + outputs: [ { - "internalType": "bool", - "name": "", - "type": "bool" - } + internalType: "bool", + name: "", + type: "bool", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "to", - "type": "address" + internalType: "address", + name: "to", + type: "address", }, { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } + internalType: "uint256", + name: "amount", + type: "uint256", + }, ], - "name": "mint", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "mint", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [], - "name": "name", - "outputs": [ + inputs: [], + name: "name", + outputs: [ { - "internalType": "string", - "name": "", - "type": "string" - } + internalType: "string", + name: "", + type: "string", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" + internalType: "bytes32", + name: "role", + type: "bytes32", }, { - "internalType": "address", - "name": "callerConfirmation", - "type": "address" - } + internalType: "address", + name: "callerConfirmation", + type: "address", + }, ], - "name": "renounceRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "renounceRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" + internalType: "bytes32", + name: "role", + type: "bytes32", }, { - "internalType": "address", - "name": "account", - "type": "address" - } + internalType: "address", + name: "account", + type: "address", + }, ], - "name": "revokeRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "revokeRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, ], - "name": "supportsInterface", - "outputs": [ + name: "supportsInterface", + outputs: [ { - "internalType": "bool", - "name": "", - "type": "bool" - } + internalType: "bool", + name: "", + type: "bool", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [], - "name": "symbol", - "outputs": [ + inputs: [], + name: "symbol", + outputs: [ { - "internalType": "string", - "name": "", - "type": "string" - } + internalType: "string", + name: "", + type: "string", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [], - "name": "totalSupply", - "outputs": [ + inputs: [], + name: "totalSupply", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "to", - "type": "address" + internalType: "address", + name: "to", + type: "address", }, { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } + internalType: "uint256", + name: "value", + type: "uint256", + }, ], - "name": "transfer", - "outputs": [ + name: "transfer", + outputs: [ { - "internalType": "bool", - "name": "", - "type": "bool" - } + internalType: "bool", + name: "", + type: "bool", + }, ], - "stateMutability": "nonpayable", - "type": "function" + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "from", - "type": "address" + internalType: "address", + name: "from", + type: "address", }, { - "internalType": "address", - "name": "to", - "type": "address" + internalType: "address", + name: "to", + type: "address", }, { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } + internalType: "uint256", + name: "value", + type: "uint256", + }, ], - "name": "transferFrom", - "outputs": [ + name: "transferFrom", + outputs: [ { - "internalType": "bool", - "name": "", - "type": "bool" - } + internalType: "bool", + name: "", + type: "bool", + }, ], - "stateMutability": "nonpayable", - "type": "function" - } + stateMutability: "nonpayable", + type: "function", + }, ]; -export const BRIDGE_TOKEN_CONTRACT_BYTECODE = "0x60806040523480156200001157600080fd5b5060405162000fac38038062000fac8339810160408190526200003491620001ea565b8282600362000044838262000308565b50600462000053828262000308565b5062000065915060009050826200006f565b50505050620003d4565b60008281526005602090815260408083206001600160a01b038516845290915281205460ff16620001185760008381526005602090815260408083206001600160a01b03861684529091529020805460ff19166001179055620000cf3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016200011c565b5060005b92915050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200014a57600080fd5b81516001600160401b038082111562000167576200016762000122565b604051601f8301601f19908116603f0116810190828211818310171562000192576200019262000122565b8160405283815260209250866020858801011115620001b057600080fd5b600091505b83821015620001d45785820183015181830184015290820190620001b5565b6000602085830101528094505050505092915050565b6000806000606084860312156200020057600080fd5b83516001600160401b03808211156200021857600080fd5b620002268783880162000138565b945060208601519150808211156200023d57600080fd5b506200024c8682870162000138565b604086015190935090506001600160a01b03811681146200026c57600080fd5b809150509250925092565b600181811c908216806200028c57607f821691505b602082108103620002ad57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000303576000816000526020600020601f850160051c81016020861015620002de5750805b601f850160051c820191505b81811015620002ff57828155600101620002ea565b5050505b505050565b81516001600160401b0381111562000324576200032462000122565b6200033c8162000335845462000277565b84620002b3565b602080601f8311600181146200037457600084156200035b5750858301515b600019600386901b1c1916600185901b178555620002ff565b600085815260208120601f198616915b82811015620003a55788860151825594840194600190910190840162000384565b5085821015620003c45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bc880620003e46000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806340c10f19116100ad57806395d89b411161007157806395d89b4114610288578063a217fddf14610290578063a9059cbb14610298578063d547741f146102ab578063dd62ed3e146102be57600080fd5b806340c10f191461021357806342966c681461022657806370a082311461023957806379cc67901461026257806391d148541461027557600080fd5b8063248a9ca3116100f4578063248a9ca3146101a657806324d7806c146101c95780632f2ff15d146101dc578063313ce567146101f157806336568abe1461020057600080fd5b806301ffc9a71461013157806306fdde0314610159578063095ea7b31461016e57806318160ddd1461018157806323b872dd14610193575b600080fd5b61014461013f3660046109ab565b6102f7565b60405190151581526020015b60405180910390f35b61016161032e565b60405161015091906109dc565b61014461017c366004610a47565b6103c0565b6002545b604051908152602001610150565b6101446101a1366004610a71565b6103d8565b6101856101b4366004610aad565b60009081526005602052604090206001015490565b6101446101d7366004610ac6565b6103fc565b6101ef6101ea366004610ae1565b610408565b005b60405160128152602001610150565b6101ef61020e366004610ae1565b610433565b6101ef610221366004610a47565b61046b565b6101ef610234366004610aad565b610480565b610185610247366004610ac6565b6001600160a01b031660009081526020819052604090205490565b6101ef610270366004610a47565b61048d565b610144610283366004610ae1565b6104a2565b6101616104cd565b610185600081565b6101446102a6366004610a47565b6104dc565b6101ef6102b9366004610ae1565b6104ea565b6101856102cc366004610b0d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60006001600160e01b03198216637965db0b60e01b148061032857506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606003805461033d90610b37565b80601f016020809104026020016040519081016040528092919081815260200182805461036990610b37565b80156103b65780601f1061038b576101008083540402835291602001916103b6565b820191906000526020600020905b81548152906001019060200180831161039957829003601f168201915b5050505050905090565b6000336103ce81858561050f565b5060019392505050565b6000336103e685828561051c565b6103f1858585610599565b506001949350505050565b600061032881836104a2565b600082815260056020526040902060010154610423816105f8565b61042d8383610602565b50505050565b6001600160a01b038116331461045c5760405163334bd91960e11b815260040160405180910390fd5b6104668282610696565b505050565b6000610476816105f8565b6104668383610703565b61048a338261073d565b50565b6000610498816105f8565b610466838361073d565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606004805461033d90610b37565b6000336103ce818585610599565b600082815260056020526040902060010154610505816105f8565b61042d8383610696565b6104668383836001610773565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461042d578181101561058a57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61042d84848484036000610773565b6001600160a01b0383166105c357604051634b637e8f60e11b815260006004820152602401610581565b6001600160a01b0382166105ed5760405163ec442f0560e01b815260006004820152602401610581565b610466838383610848565b61048a8133610972565b600061060e83836104a2565b61068e5760008381526005602090815260408083206001600160a01b03861684529091529020805460ff191660011790556106463390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610328565b506000610328565b60006106a283836104a2565b1561068e5760008381526005602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610328565b6001600160a01b03821661072d5760405163ec442f0560e01b815260006004820152602401610581565b61073960008383610848565b5050565b6001600160a01b03821661076757604051634b637e8f60e11b815260006004820152602401610581565b61073982600083610848565b6001600160a01b03841661079d5760405163e602df0560e01b815260006004820152602401610581565b6001600160a01b0383166107c757604051634a1406b160e11b815260006004820152602401610581565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161083a91815260200190565b60405180910390a350505050565b6001600160a01b0383166108735780600260008282546108689190610b71565b909155506108e59050565b6001600160a01b038316600090815260208190526040902054818110156108c65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610581565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661090157600280548290039055610920565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161096591815260200190565b60405180910390a3505050565b61097c82826104a2565b6107395760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610581565b6000602082840312156109bd57600080fd5b81356001600160e01b0319811681146109d557600080fd5b9392505050565b60006020808352835180602085015260005b81811015610a0a578581018301518582016040015282016109ee565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610a4257600080fd5b919050565b60008060408385031215610a5a57600080fd5b610a6383610a2b565b946020939093013593505050565b600080600060608486031215610a8657600080fd5b610a8f84610a2b565b9250610a9d60208501610a2b565b9150604084013590509250925092565b600060208284031215610abf57600080fd5b5035919050565b600060208284031215610ad857600080fd5b6109d582610a2b565b60008060408385031215610af457600080fd5b82359150610b0460208401610a2b565b90509250929050565b60008060408385031215610b2057600080fd5b610b2983610a2b565b9150610b0460208401610a2b565b600181811c90821680610b4b57607f821691505b602082108103610b6b57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561032857634e487b7160e01b600052601160045260246000fdfea2646970667358221220e179fc58c926e64cb6e87416f8ca64c117044e3195b184afe45038857606c15364736f6c63430008160033" +export const BRIDGE_TOKEN_CONTRACT_BYTECODE = + "0x60806040523480156200001157600080fd5b5060405162000fac38038062000fac8339810160408190526200003491620001ea565b8282600362000044838262000308565b50600462000053828262000308565b5062000065915060009050826200006f565b50505050620003d4565b60008281526005602090815260408083206001600160a01b038516845290915281205460ff16620001185760008381526005602090815260408083206001600160a01b03861684529091529020805460ff19166001179055620000cf3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016200011c565b5060005b92915050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200014a57600080fd5b81516001600160401b038082111562000167576200016762000122565b604051601f8301601f19908116603f0116810190828211818310171562000192576200019262000122565b8160405283815260209250866020858801011115620001b057600080fd5b600091505b83821015620001d45785820183015181830184015290820190620001b5565b6000602085830101528094505050505092915050565b6000806000606084860312156200020057600080fd5b83516001600160401b03808211156200021857600080fd5b620002268783880162000138565b945060208601519150808211156200023d57600080fd5b506200024c8682870162000138565b604086015190935090506001600160a01b03811681146200026c57600080fd5b809150509250925092565b600181811c908216806200028c57607f821691505b602082108103620002ad57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000303576000816000526020600020601f850160051c81016020861015620002de5750805b601f850160051c820191505b81811015620002ff57828155600101620002ea565b5050505b505050565b81516001600160401b0381111562000324576200032462000122565b6200033c8162000335845462000277565b84620002b3565b602080601f8311600181146200037457600084156200035b5750858301515b600019600386901b1c1916600185901b178555620002ff565b600085815260208120601f198616915b82811015620003a55788860151825594840194600190910190840162000384565b5085821015620003c45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bc880620003e46000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806340c10f19116100ad57806395d89b411161007157806395d89b4114610288578063a217fddf14610290578063a9059cbb14610298578063d547741f146102ab578063dd62ed3e146102be57600080fd5b806340c10f191461021357806342966c681461022657806370a082311461023957806379cc67901461026257806391d148541461027557600080fd5b8063248a9ca3116100f4578063248a9ca3146101a657806324d7806c146101c95780632f2ff15d146101dc578063313ce567146101f157806336568abe1461020057600080fd5b806301ffc9a71461013157806306fdde0314610159578063095ea7b31461016e57806318160ddd1461018157806323b872dd14610193575b600080fd5b61014461013f3660046109ab565b6102f7565b60405190151581526020015b60405180910390f35b61016161032e565b60405161015091906109dc565b61014461017c366004610a47565b6103c0565b6002545b604051908152602001610150565b6101446101a1366004610a71565b6103d8565b6101856101b4366004610aad565b60009081526005602052604090206001015490565b6101446101d7366004610ac6565b6103fc565b6101ef6101ea366004610ae1565b610408565b005b60405160128152602001610150565b6101ef61020e366004610ae1565b610433565b6101ef610221366004610a47565b61046b565b6101ef610234366004610aad565b610480565b610185610247366004610ac6565b6001600160a01b031660009081526020819052604090205490565b6101ef610270366004610a47565b61048d565b610144610283366004610ae1565b6104a2565b6101616104cd565b610185600081565b6101446102a6366004610a47565b6104dc565b6101ef6102b9366004610ae1565b6104ea565b6101856102cc366004610b0d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60006001600160e01b03198216637965db0b60e01b148061032857506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606003805461033d90610b37565b80601f016020809104026020016040519081016040528092919081815260200182805461036990610b37565b80156103b65780601f1061038b576101008083540402835291602001916103b6565b820191906000526020600020905b81548152906001019060200180831161039957829003601f168201915b5050505050905090565b6000336103ce81858561050f565b5060019392505050565b6000336103e685828561051c565b6103f1858585610599565b506001949350505050565b600061032881836104a2565b600082815260056020526040902060010154610423816105f8565b61042d8383610602565b50505050565b6001600160a01b038116331461045c5760405163334bd91960e11b815260040160405180910390fd5b6104668282610696565b505050565b6000610476816105f8565b6104668383610703565b61048a338261073d565b50565b6000610498816105f8565b610466838361073d565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606004805461033d90610b37565b6000336103ce818585610599565b600082815260056020526040902060010154610505816105f8565b61042d8383610696565b6104668383836001610773565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461042d578181101561058a57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61042d84848484036000610773565b6001600160a01b0383166105c357604051634b637e8f60e11b815260006004820152602401610581565b6001600160a01b0382166105ed5760405163ec442f0560e01b815260006004820152602401610581565b610466838383610848565b61048a8133610972565b600061060e83836104a2565b61068e5760008381526005602090815260408083206001600160a01b03861684529091529020805460ff191660011790556106463390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610328565b506000610328565b60006106a283836104a2565b1561068e5760008381526005602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610328565b6001600160a01b03821661072d5760405163ec442f0560e01b815260006004820152602401610581565b61073960008383610848565b5050565b6001600160a01b03821661076757604051634b637e8f60e11b815260006004820152602401610581565b61073982600083610848565b6001600160a01b03841661079d5760405163e602df0560e01b815260006004820152602401610581565b6001600160a01b0383166107c757604051634a1406b160e11b815260006004820152602401610581565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161083a91815260200190565b60405180910390a350505050565b6001600160a01b0383166108735780600260008282546108689190610b71565b909155506108e59050565b6001600160a01b038316600090815260208190526040902054818110156108c65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610581565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661090157600280548290039055610920565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161096591815260200190565b60405180910390a3505050565b61097c82826104a2565b6107395760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610581565b6000602082840312156109bd57600080fd5b81356001600160e01b0319811681146109d557600080fd5b9392505050565b60006020808352835180602085015260005b81811015610a0a578581018301518582016040015282016109ee565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610a4257600080fd5b919050565b60008060408385031215610a5a57600080fd5b610a6383610a2b565b946020939093013593505050565b600080600060608486031215610a8657600080fd5b610a8f84610a2b565b9250610a9d60208501610a2b565b9150604084013590509250925092565b600060208284031215610abf57600080fd5b5035919050565b600060208284031215610ad857600080fd5b6109d582610a2b565b60008060408385031215610af457600080fd5b82359150610b0460208401610a2b565b90509250929050565b60008060408385031215610b2057600080fd5b610b2983610a2b565b9150610b0460208401610a2b565b600181811c90821680610b4b57607f821691505b602082108103610b6b57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561032857634e487b7160e01b600052601160045260246000fdfea2646970667358221220e179fc58c926e64cb6e87416f8ca64c117044e3195b184afe45038857606c15364736f6c63430008160033"; export const PRECOMPILE_WRAPPER_ABI = [ { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "delegate", - "type": "bytes32" + internalType: "bytes32", + name: "delegate", + type: "bytes32", }, { - "internalType": "uint8", - "name": "proxy_type", - "type": "uint8" + internalType: "uint8", + name: "proxy_type", + type: "uint8", }, { - "internalType": "uint32", - "name": "delay", - "type": "uint32" - } + internalType: "uint32", + name: "delay", + type: "uint32", + }, ], - "name": "addProxy", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "addProxy", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" + internalType: "bytes32", + name: "hotkey", + type: "bytes32", }, { - "internalType": "uint256", - "name": "amount", - "type": "uint256" + internalType: "uint256", + name: "amount", + type: "uint256", }, { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - } + internalType: "uint256", + name: "netuid", + type: "uint256", + }, ], - "name": "addStake", - "outputs": [], - "stateMutability": "payable", - "type": "function" + name: "addStake", + outputs: [], + stateMutability: "payable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "target_address", - "type": "address" - } + internalType: "address", + name: "target_address", + type: "address", + }, ], - "name": "addressMapping", - "outputs": [ + name: "addressMapping", + outputs: [ { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } + internalType: "bytes32", + name: "", + type: "bytes32", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [], - "name": "addressMappingPrecompile", - "outputs": [ + inputs: [], + name: "addressMappingPrecompile", + outputs: [ { - "internalType": "contract IAddressMapping", - "name": "", - "type": "address" - } + internalType: "contract IAddressMapping", + name: "", + type: "address", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [], - "name": "alpha", - "outputs": [ + inputs: [], + name: "alpha", + outputs: [ { - "internalType": "contract IAlpha", - "name": "", - "type": "address" - } + internalType: "contract IAlpha", + name: "", + type: "address", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [], - "name": "balanceTransfer", - "outputs": [ + inputs: [], + name: "balanceTransfer", + outputs: [ { - "internalType": "contract ISubtensorBalanceTransfer", - "name": "", - "type": "address" - } + internalType: "contract ISubtensorBalanceTransfer", + name: "", + type: "address", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" + internalType: "uint16", + name: "netuid", + type: "uint16", }, { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" - } + internalType: "bytes32", + name: "hotkey", + type: "bytes32", + }, ], - "name": "burnedRegister", - "outputs": [], - "stateMutability": "payable", - "type": "function" + name: "burnedRegister", + outputs: [], + stateMutability: "payable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint64", - "name": "deposit", - "type": "uint64" + internalType: "uint64", + name: "deposit", + type: "uint64", }, { - "internalType": "uint64", - "name": "minContribution", - "type": "uint64" + internalType: "uint64", + name: "minContribution", + type: "uint64", }, { - "internalType": "uint64", - "name": "cap", - "type": "uint64" + internalType: "uint64", + name: "cap", + type: "uint64", }, { - "internalType": "uint32", - "name": "end", - "type": "uint32" + internalType: "uint32", + name: "end", + type: "uint32", }, { - "internalType": "address", - "name": "targetAddress", - "type": "address" - } + internalType: "address", + name: "targetAddress", + type: "address", + }, ], - "name": "createCrowdloan", - "outputs": [], - "stateMutability": "payable", - "type": "function" + name: "createCrowdloan", + outputs: [], + stateMutability: "payable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint64", - "name": "crowdloanDeposit", - "type": "uint64" + internalType: "uint64", + name: "crowdloanDeposit", + type: "uint64", }, { - "internalType": "uint64", - "name": "crowdloanMinContribution", - "type": "uint64" + internalType: "uint64", + name: "crowdloanMinContribution", + type: "uint64", }, { - "internalType": "uint64", - "name": "crowdloanCap", - "type": "uint64" + internalType: "uint64", + name: "crowdloanCap", + type: "uint64", }, { - "internalType": "uint32", - "name": "crowdloanEnd", - "type": "uint32" + internalType: "uint32", + name: "crowdloanEnd", + type: "uint32", }, { - "internalType": "uint8", - "name": "leasingEmissionsShare", - "type": "uint8" + internalType: "uint8", + name: "leasingEmissionsShare", + type: "uint8", }, { - "internalType": "bool", - "name": "hasLeasingEndBlock", - "type": "bool" + internalType: "bool", + name: "hasLeasingEndBlock", + type: "bool", }, { - "internalType": "uint32", - "name": "leasingEndBlock", - "type": "uint32" - } + internalType: "uint32", + name: "leasingEndBlock", + type: "uint32", + }, ], - "name": "createLeaseCrowdloan", - "outputs": [], - "stateMutability": "payable", - "type": "function" + name: "createLeaseCrowdloan", + outputs: [], + stateMutability: "payable", + type: "function", }, { - "inputs": [], - "name": "crowdloan", - "outputs": [ + inputs: [], + name: "crowdloan", + outputs: [ { - "internalType": "contract ICrowdloan", - "name": "", - "type": "address" - } + internalType: "contract ICrowdloan", + name: "", + type: "address", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - } + internalType: "uint16", + name: "netuid", + type: "uint16", + }, ], - "name": "getAlphaPrice", - "outputs": [ + name: "getAlphaPrice", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint32", - "name": "crowdloanId", - "type": "uint32" + internalType: "uint32", + name: "crowdloanId", + type: "uint32", }, { - "internalType": "bytes32", - "name": "coldkey", - "type": "bytes32" - } + internalType: "bytes32", + name: "coldkey", + type: "bytes32", + }, ], - "name": "getContribution", - "outputs": [ + name: "getContribution", + outputs: [ { - "internalType": "uint64", - "name": "", - "type": "uint64" - } + internalType: "uint64", + name: "", + type: "uint64", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint32", - "name": "leaseId", - "type": "uint32" + internalType: "uint32", + name: "leaseId", + type: "uint32", }, { - "internalType": "bytes32", - "name": "contributor", - "type": "bytes32" - } + internalType: "bytes32", + name: "contributor", + type: "bytes32", + }, ], - "name": "getContributorShare", - "outputs": [ + name: "getContributorShare", + outputs: [ { - "internalType": "uint128", - "name": "", - "type": "uint128" + internalType: "uint128", + name: "", + type: "uint128", }, { - "internalType": "uint128", - "name": "", - "type": "uint128" - } + internalType: "uint128", + name: "", + type: "uint128", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint32", - "name": "crowdloanId", - "type": "uint32" - } + internalType: "uint32", + name: "crowdloanId", + type: "uint32", + }, ], - "name": "getCrowdloan", - "outputs": [ + name: "getCrowdloan", + outputs: [ { - "components": [ + components: [ { - "internalType": "bytes32", - "name": "creator", - "type": "bytes32" + internalType: "bytes32", + name: "creator", + type: "bytes32", }, { - "internalType": "uint64", - "name": "deposit", - "type": "uint64" + internalType: "uint64", + name: "deposit", + type: "uint64", }, { - "internalType": "uint64", - "name": "min_contribution", - "type": "uint64" + internalType: "uint64", + name: "min_contribution", + type: "uint64", }, { - "internalType": "uint32", - "name": "end", - "type": "uint32" + internalType: "uint32", + name: "end", + type: "uint32", }, { - "internalType": "uint64", - "name": "cap", - "type": "uint64" + internalType: "uint64", + name: "cap", + type: "uint64", }, { - "internalType": "bytes32", - "name": "funds_account", - "type": "bytes32" + internalType: "bytes32", + name: "funds_account", + type: "bytes32", }, { - "internalType": "uint64", - "name": "raised", - "type": "uint64" + internalType: "uint64", + name: "raised", + type: "uint64", }, { - "internalType": "bool", - "name": "has_target_address", - "type": "bool" + internalType: "bool", + name: "has_target_address", + type: "bool", }, { - "internalType": "bytes32", - "name": "target_address", - "type": "bytes32" + internalType: "bytes32", + name: "target_address", + type: "bytes32", }, { - "internalType": "bool", - "name": "finalized", - "type": "bool" + internalType: "bool", + name: "finalized", + type: "bool", }, { - "internalType": "uint32", - "name": "contributors_count", - "type": "uint32" - } + internalType: "uint32", + name: "contributors_count", + type: "uint32", + }, ], - "internalType": "struct CrowdloanInfo", - "name": "", - "type": "tuple" - } + internalType: "struct CrowdloanInfo", + name: "", + type: "tuple", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "account", - "type": "bytes32" - } + internalType: "bytes32", + name: "account", + type: "bytes32", + }, ], - "name": "getProxies", - "outputs": [ + name: "getProxies", + outputs: [ { - "components": [ + components: [ { - "internalType": "bytes32", - "name": "delegate", - "type": "bytes32" + internalType: "bytes32", + name: "delegate", + type: "bytes32", }, { - "internalType": "uint256", - "name": "proxy_type", - "type": "uint256" + internalType: "uint256", + name: "proxy_type", + type: "uint256", }, { - "internalType": "uint256", - "name": "delay", - "type": "uint256" - } + internalType: "uint256", + name: "delay", + type: "uint256", + }, ], - "internalType": "struct IProxy.ProxyInfo[]", - "name": "", - "type": "tuple[]" - } + internalType: "struct IProxy.ProxyInfo[]", + name: "", + type: "tuple[]", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - } + internalType: "uint16", + name: "netuid", + type: "uint16", + }, ], - "name": "getServingRateLimit", - "outputs": [ + name: "getServingRateLimit", + outputs: [ { - "internalType": "uint64", - "name": "", - "type": "uint64" - } + internalType: "uint64", + name: "", + type: "uint64", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - } + internalType: "uint16", + name: "netuid", + type: "uint16", + }, ], - "name": "getNetworkRegistrationBlock", - "outputs": [ + name: "getNetworkRegistrationBlock", + outputs: [ { - "internalType": "uint64", - "name": "", - "type": "uint64" - } + internalType: "uint64", + name: "", + type: "uint64", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "coldkey", - "type": "bytes32" - } + internalType: "bytes32", + name: "coldkey", + type: "bytes32", + }, ], - "name": "getTotalColdkeyStake", - "outputs": [ + name: "getTotalColdkeyStake", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" - } + internalType: "bytes32", + name: "hotkey", + type: "bytes32", + }, ], - "name": "getTotalHotkeyStake", - "outputs": [ + name: "getTotalHotkeyStake", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - } + internalType: "uint16", + name: "netuid", + type: "uint16", + }, ], - "name": "getUidCount", - "outputs": [ + name: "getUidCount", + outputs: [ { - "internalType": "uint16", - "name": "", - "type": "uint16" - } + internalType: "uint16", + name: "", + type: "uint16", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [], - "name": "leasing", - "outputs": [ + inputs: [], + name: "leasing", + outputs: [ { - "internalType": "contract ILeasing", - "name": "", - "type": "address" - } + internalType: "contract ILeasing", + name: "", + type: "address", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [], - "name": "metagraph", - "outputs": [ + inputs: [], + name: "metagraph", + outputs: [ { - "internalType": "contract IMetagraph", - "name": "", - "type": "address" - } + internalType: "contract IMetagraph", + name: "", + type: "address", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [], - "name": "neuron", - "outputs": [ + inputs: [], + name: "neuron", + outputs: [ { - "internalType": "contract INeuron", - "name": "", - "type": "address" - } + internalType: "contract INeuron", + name: "", + type: "address", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [], - "name": "proxy", - "outputs": [ + inputs: [], + name: "proxy", + outputs: [ { - "internalType": "contract IProxy", - "name": "", - "type": "address" - } + internalType: "contract IProxy", + name: "", + type: "address", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "real", - "type": "bytes32" + internalType: "bytes32", + name: "real", + type: "bytes32", }, { - "internalType": "uint8[]", - "name": "force_proxy_type", - "type": "uint8[]" + internalType: "uint8[]", + name: "force_proxy_type", + type: "uint8[]", }, { - "internalType": "uint8[]", - "name": "call", - "type": "uint8[]" - } + internalType: "uint8[]", + name: "call", + type: "uint8[]", + }, ], - "name": "proxyCall", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "proxyCall", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" + internalType: "bytes32", + name: "hotkey", + type: "bytes32", }, { - "internalType": "string", - "name": "subnetName", - "type": "string" + internalType: "string", + name: "subnetName", + type: "string", }, { - "internalType": "string", - "name": "githubRepo", - "type": "string" + internalType: "string", + name: "githubRepo", + type: "string", }, { - "internalType": "string", - "name": "subnetContact", - "type": "string" + internalType: "string", + name: "subnetContact", + type: "string", }, { - "internalType": "string", - "name": "subnetUrl", - "type": "string" + internalType: "string", + name: "subnetUrl", + type: "string", }, { - "internalType": "string", - "name": "discord", - "type": "string" + internalType: "string", + name: "discord", + type: "string", }, { - "internalType": "string", - "name": "description", - "type": "string" + internalType: "string", + name: "description", + type: "string", }, { - "internalType": "string", - "name": "additional", - "type": "string" - } + internalType: "string", + name: "additional", + type: "string", + }, ], - "name": "registerNetworkWithDetails", - "outputs": [], - "stateMutability": "payable", - "type": "function" + name: "registerNetworkWithDetails", + outputs: [], + stateMutability: "payable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" + internalType: "bytes32", + name: "hotkey", + type: "bytes32", }, { - "internalType": "uint256", - "name": "amount", - "type": "uint256" + internalType: "uint256", + name: "amount", + type: "uint256", }, { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - } + internalType: "uint256", + name: "netuid", + type: "uint256", + }, ], - "name": "removeStake", - "outputs": [], - "stateMutability": "payable", - "type": "function" + name: "removeStake", + outputs: [], + stateMutability: "payable", + type: "function", }, { - "inputs": [], - "name": "staking", - "outputs": [ + inputs: [], + name: "staking", + outputs: [ { - "internalType": "contract IStaking", - "name": "", - "type": "address" - } + internalType: "contract IStaking", + name: "", + type: "address", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [], - "name": "subnet", - "outputs": [ + inputs: [], + name: "subnet", + outputs: [ { - "internalType": "contract ISubnet", - "name": "", - "type": "address" - } + internalType: "contract ISubnet", + name: "", + type: "address", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "bytes32", - "name": "data", - "type": "bytes32" - } + internalType: "bytes32", + name: "data", + type: "bytes32", + }, ], - "name": "transfer", - "outputs": [], - "stateMutability": "payable", - "type": "function" + name: "transfer", + outputs: [], + stateMutability: "payable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" + internalType: "uint16", + name: "netuid", + type: "uint16", }, { - "internalType": "address", - "name": "evm_address", - "type": "address" + internalType: "address", + name: "evm_address", + type: "address", }, { - "internalType": "uint16", - "name": "limit", - "type": "uint16" - } + internalType: "uint16", + name: "limit", + type: "uint16", + }, ], - "name": "uidLookup", - "outputs": [ + name: "uidLookup", + outputs: [ { - "components": [ + components: [ { - "internalType": "uint16", - "name": "uid", - "type": "uint16" + internalType: "uint16", + name: "uid", + type: "uint16", }, { - "internalType": "uint64", - "name": "block_associated", - "type": "uint64" - } + internalType: "uint64", + name: "block_associated", + type: "uint64", + }, ], - "internalType": "struct LookupItem[]", - "name": "", - "type": "tuple[]" - } + internalType: "struct LookupItem[]", + name: "", + type: "tuple[]", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [], - "name": "uidLookupPrecompile", - "outputs": [ + inputs: [], + name: "uidLookupPrecompile", + outputs: [ { - "internalType": "contract IUidLookup", - "name": "", - "type": "address" - } + internalType: "contract IUidLookup", + name: "", + type: "address", + }, ], - "stateMutability": "view", - "type": "function" - } + stateMutability: "view", + type: "function", + }, ]; -export const PRECOMPILE_WRAPPER_BYTECODE = "6080604052348015600e575f5ffd5b506119368061001c5f395ff3fe6080604052600436106101da575f3560e01c80638bba466c116100fd578063b1f789ef11610092578063d75e3e0d11610062578063d75e3e0d14610547578063db1d0fd51461055c578063ec55688914610571578063fc6679fb14610586575f5ffd5b8063b1f789ef146104de578063bfe252a21461050a578063caf2ebf21461051f578063cd6f4eb114610534575f5ffd5b8063a2176276116100cd578063a217627614610482578063ac3166bf14610497578063afed65f9146104ac578063b0c751b0146104bf575f5ffd5b80638bba466c146103ec57806394e3ac6f14610418578063998538c4146104445780639f246f6f14610463575f5ffd5b80634cf088d91161017357806369e38bc31161014357806369e38bc31461038857806371214e27146103a75780637444dadc146103ba5780637d691e30146103d9575f5ffd5b80634cf088d9146103145780635b53ddde146103295780635b7210c51461033e5780635e25f3f814610375575f5ffd5b80631fc9b141116101ae5780631fc9b141146102825780633175bd98146102955780634054ecca146102d45780634c378a96146102e7575f5ffd5b80620ae759146101de5780630494cd9a146101ff5780630cadeda5146102315780631f19357214610250575b5f5ffd5b3480156101e9575f5ffd5b506101fd6101f8366004610e85565b61059b565b005b34801561020a575f5ffd5b5061021e610219366004610f06565b6105f4565b6040519081526020015b60405180910390f35b34801561023c575f5ffd5b506101fd61024b366004610f33565b610665565b34801561025b575f5ffd5b5061026f61026a366004610f7f565b6106a0565b60405161ffff9091168152602001610228565b6101fd610290366004610f9a565b610705565b3480156102a0575f5ffd5b506102b46102af366004610fc3565b610739565b604080516001600160801b03938416815292909116602083015201610228565b6101fd6102e2366004610fed565b6107b3565b3480156102f2575f5ffd5b506102fc61080481565b6040516001600160a01b039091168152602001610228565b34801561031f575f5ffd5b506102fc61080581565b348015610334575f5ffd5b506102fc61080a81565b348015610349575f5ffd5b5061035d610358366004610fc3565b6107f7565b6040516001600160401b039091168152602001610228565b6101fd610383366004611074565b61086c565b348015610393575f5ffd5b5061021e6103a2366004610f7f565b6108d6565b6101fd6103b53660046111c2565b610901565b3480156103c5575f5ffd5b5061035d6103d4366004610f7f565b610989565b6101fd6103e7366004610f9a565b6109ef565b3480156103f7575f5ffd5b5061040b61040636600461122b565b610a23565b6040516102289190611246565b348015610423575f5ffd5b50610437610432366004611334565b610add565b604051610228919061134b565b34801561044f575f5ffd5b5061021e61045e366004611334565b610b42565b34801561046e575f5ffd5b5061021e61047d366004611334565b610b6a565b34801561048d575f5ffd5b506102fc61080681565b3480156104a2575f5ffd5b506102fc61080c81565b6101fd6104ba3660046113b6565b610b92565b3480156104ca575f5ffd5b5061035d6104d9366004610f7f565b610c26565b3480156104e9575f5ffd5b506104fd6104f8366004611445565b610c51565b6040516102289190611480565b348015610515575f5ffd5b506102fc61080981565b34801561052a575f5ffd5b506102fc61080381565b6101fd610542366004611334565b610cd8565b348015610552575f5ffd5b506102fc61080081565b348015610567575f5ffd5b506102fc61080881565b34801561057c575f5ffd5b506102fc61080b81565b348015610591575f5ffd5b506102fc61080281565b604051620ae75960e01b815261080b90620ae759906105c29086908690869060040161150d565b5f604051808303815f87803b1580156105d9575f5ffd5b505af11580156105eb573d5f5f3e3d5ffd5b50505050505050565b60405163024a66cd60e11b81526001600160a01b03821660048201525f9061080c90630494cd9a906024015b602060405180830381865afa15801561063b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065f9190611541565b92915050565b604051630cadeda560e01b81526004810184905260ff8316602482015263ffffffff8216604482015261080b90630cadeda5906064016105c2565b604051630f8c9ab960e11b815261ffff821660048201525f9061080290631f19357290602401602060405180830381865afa1580156106e1573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065f9190611558565b604051631fc9b14160e01b815260048101849052602481018390526044810182905261080590631fc9b141906064016105c2565b60405163062eb7b360e31b815263ffffffff83166004820152602481018290525f90819061080a90633175bd98906044016040805180830381865afa158015610784573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a89190611589565b915091509250929050565b60405163202a766560e11b815261ffff831660048201526024810182905261080490634054ecca9034906044015f604051808303818588803b1580156105d9575f5ffd5b604051635b7210c560e01b815263ffffffff83166004820152602481018290525f9061080990635b7210c590604401602060405180830381865afa158015610841573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061086591906115c5565b9392505050565b604051631cf98c6b60e01b815261080390631cf98c6b9061089f908b908b908b908b908b908b908b908b9060040161160e565b5f604051808303815f87803b1580156108b6575f5ffd5b505af11580156108c8573d5f5f3e3d5ffd5b505050505050505050505050565b6040516369e38bc360e01b815261ffff821660048201525f90610808906369e38bc390602401610620565b60405163127e1adb60e01b81526001600160401b03808716600483015280861660248301528416604482015263ffffffff831660648201526001600160a01b03821660848201526108099063127e1adb9060a4015f604051808303815f87803b15801561096c575f5ffd5b505af115801561097e573d5f5f3e3d5ffd5b505050505050505050565b604051631d1136b760e21b815261ffff821660048201525f9061080390637444dadc906024015b602060405180830381865afa1580156109cb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065f91906115c5565b6040516307d691e360e41b815260048101849052602481018390526044810182905261080590637d691e30906064016105c2565b60408051610160810182525f80825260208201819052818301819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082015290516322ee919b60e21b815263ffffffff8316600482015261080990638bba466c9060240161016060405180830381865afa158015610ab9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065f91906116c3565b6040516394e3ac6f60e01b81526004810182905260609061080b906394e3ac6f906024015f60405180830381865afa158015610b1b573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261065f919081019061178a565b6040516326614e3160e21b8152600481018290525f906108059063998538c490602401610620565b604051639f246f6f60e01b8152600481018290525f9061080590639f246f6f90602401610620565b60405163afed65f960e01b81526001600160401b03808916600483015280881660248301528616604482015263ffffffff808616606483015260ff8516608483015283151560a4830152821660c482015261080a9063afed65f99060e4015f604051808303815f87803b158015610c07575f5ffd5b505af1158015610c19573d5f5f3e3d5ffd5b5050505050505050505050565b604051630b0c751b60e41b815261ffff821660048201525f906108039063b0c751b0906024016109b0565b60405163b1f789ef60e01b815261ffff80851660048301526001600160a01b0384166024830152821660448201526060906108069063b1f789ef906064015f60405180830381865afa158015610ca9573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610cd0919081019061183f565b949350505050565b60405163cd6f4eb160e01b8152600481018290526108009063cd6f4eb19034906024015f604051808303818588803b158015610d12575f5ffd5b505af1158015610d24573d5f5f3e3d5ffd5b505050505050565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b0381118282101715610d6357610d63610d2c565b60405290565b604051606081016001600160401b0381118282101715610d6357610d63610d2c565b604080519081016001600160401b0381118282101715610d6357610d63610d2c565b604051601f8201601f191681016001600160401b0381118282101715610dd557610dd5610d2c565b604052919050565b5f6001600160401b03821115610df557610df5610d2c565b5060051b60200190565b803560ff81168114610e0f575f5ffd5b919050565b5f82601f830112610e23575f5ffd5b8135610e36610e3182610ddd565b610dad565b8082825260208201915060208360051b860101925085831115610e57575f5ffd5b602085015b83811015610e7b57610e6d81610dff565b835260209283019201610e5c565b5095945050505050565b5f5f5f60608486031215610e97575f5ffd5b8335925060208401356001600160401b03811115610eb3575f5ffd5b610ebf86828701610e14565b92505060408401356001600160401b03811115610eda575f5ffd5b610ee686828701610e14565b9150509250925092565b80356001600160a01b0381168114610e0f575f5ffd5b5f60208284031215610f16575f5ffd5b61086582610ef0565b63ffffffff81168114610f30575f5ffd5b50565b5f5f5f60608486031215610f45575f5ffd5b83359250610f5560208501610dff565b91506040840135610f6581610f1f565b809150509250925092565b61ffff81168114610f30575f5ffd5b5f60208284031215610f8f575f5ffd5b813561086581610f70565b5f5f5f60608486031215610fac575f5ffd5b505081359360208301359350604090920135919050565b5f5f60408385031215610fd4575f5ffd5b8235610fdf81610f1f565b946020939093013593505050565b5f5f60408385031215610ffe575f5ffd5b8235610fdf81610f70565b5f82601f830112611018575f5ffd5b81356001600160401b0381111561103157611031610d2c565b611044601f8201601f1916602001610dad565b818152846020838601011115611058575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f5f5f5f610100898b03121561108c575f5ffd5b8835975060208901356001600160401b038111156110a8575f5ffd5b6110b48b828c01611009565b97505060408901356001600160401b038111156110cf575f5ffd5b6110db8b828c01611009565b96505060608901356001600160401b038111156110f6575f5ffd5b6111028b828c01611009565b95505060808901356001600160401b0381111561111d575f5ffd5b6111298b828c01611009565b94505060a08901356001600160401b03811115611144575f5ffd5b6111508b828c01611009565b93505060c08901356001600160401b0381111561116b575f5ffd5b6111778b828c01611009565b92505060e08901356001600160401b03811115611192575f5ffd5b61119e8b828c01611009565b9150509295985092959890939650565b6001600160401b0381168114610f30575f5ffd5b5f5f5f5f5f60a086880312156111d6575f5ffd5b85356111e1816111ae565b945060208601356111f1816111ae565b93506040860135611201816111ae565b9250606086013561121181610f1f565b915061121f60808701610ef0565b90509295509295909350565b5f6020828403121561123b575f5ffd5b813561086581610f1f565b8151815260208083015161016083019161126a908401826001600160401b03169052565b50604083015161128560408401826001600160401b03169052565b50606083015161129d606084018263ffffffff169052565b5060808301516112b860808401826001600160401b03169052565b5060a083015160a083015260c08301516112dd60c08401826001600160401b03169052565b5060e08301516112f160e084018215159052565b5061010083015161010083015261012083015161131361012084018215159052565b5061014083015161132d61014084018263ffffffff169052565b5092915050565b5f60208284031215611344575f5ffd5b5035919050565b602080825282518282018190525f918401906040840190835b8181101561139e57835180518452602081015160208501526040810151604085015250606083019250602084019350600181019050611364565b509095945050505050565b8015158114610f30575f5ffd5b5f5f5f5f5f5f5f60e0888a0312156113cc575f5ffd5b87356113d7816111ae565b965060208801356113e7816111ae565b955060408801356113f7816111ae565b9450606088013561140781610f1f565b935061141560808901610dff565b925060a0880135611425816113a9565b915060c088013561143581610f1f565b8091505092959891949750929550565b5f5f5f60608486031215611457575f5ffd5b833561146281610f70565b925061147060208501610ef0565b91506040840135610f6581610f70565b602080825282518282018190525f918401906040840190835b8181101561139e578351805161ffff1684526020908101516001600160401b03168185015290930192604090920191600101611499565b5f8151808452602084019350602083015f5b8281101561150357815160ff168652602095860195909101906001016114e2565b5093949350505050565b838152606060208201525f61152560608301856114d0565b828103604084015261153781856114d0565b9695505050505050565b5f60208284031215611551575f5ffd5b5051919050565b5f60208284031215611568575f5ffd5b815161086581610f70565b80516001600160801b0381168114610e0f575f5ffd5b5f5f6040838503121561159a575f5ffd5b6115a383611573565b91506115b160208401611573565b90509250929050565b8051610e0f816111ae565b5f602082840312156115d5575f5ffd5b8151610865816111ae565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b88815261010060208201525f61162861010083018a6115e0565b828103604084015261163a818a6115e0565b9050828103606084015261164e81896115e0565b9050828103608084015261166281886115e0565b905082810360a084015261167681876115e0565b905082810360c084015261168a81866115e0565b905082810360e084015261169e81856115e0565b9b9a5050505050505050505050565b8051610e0f81610f1f565b8051610e0f816113a9565b5f6101608284031280156116d5575f5ffd5b506116de610d40565b825181526116ee602084016115ba565b60208201526116ff604084016115ba565b6040820152611710606084016116ad565b6060820152611721608084016115ba565b608082015260a0838101519082015261173c60c084016115ba565b60c082015261174d60e084016116b8565b60e0820152610100838101519082015261176a61012084016116b8565b61012082015261177d61014084016116ad565b6101408201529392505050565b5f6020828403121561179a575f5ffd5b81516001600160401b038111156117af575f5ffd5b8201601f810184136117bf575f5ffd5b80516117cd610e3182610ddd565b808282526020820191506020606084028501019250868311156117ee575f5ffd5b6020840193505b82841015611537576060848803121561180c575f5ffd5b611814610d69565b84518152602080860151818301526040808701519083015290835260609094019391909101906117f5565b5f6020828403121561184f575f5ffd5b81516001600160401b03811115611864575f5ffd5b8201601f81018413611874575f5ffd5b8051611882610e3182610ddd565b8082825260208201915060208360061b8501019250868311156118a3575f5ffd5b6020840193505b8284101561153757604084880312156118c1575f5ffd5b6118c9610d8b565b84516118d481610f70565b815260208501516118e4816111ae565b80602083015250808352506020820191506040840193506118aa56fea264697066735822122026460b0cf8f5e17c58e4083c1b1155431c8d2cb9962cd9d5f6105ce473df73ee64736f6c63430008230033"; +export const PRECOMPILE_WRAPPER_BYTECODE = + "6080604052348015600e575f5ffd5b506119368061001c5f395ff3fe6080604052600436106101da575f3560e01c80638bba466c116100fd578063b1f789ef11610092578063d75e3e0d11610062578063d75e3e0d14610547578063db1d0fd51461055c578063ec55688914610571578063fc6679fb14610586575f5ffd5b8063b1f789ef146104de578063bfe252a21461050a578063caf2ebf21461051f578063cd6f4eb114610534575f5ffd5b8063a2176276116100cd578063a217627614610482578063ac3166bf14610497578063afed65f9146104ac578063b0c751b0146104bf575f5ffd5b80638bba466c146103ec57806394e3ac6f14610418578063998538c4146104445780639f246f6f14610463575f5ffd5b80634cf088d91161017357806369e38bc31161014357806369e38bc31461038857806371214e27146103a75780637444dadc146103ba5780637d691e30146103d9575f5ffd5b80634cf088d9146103145780635b53ddde146103295780635b7210c51461033e5780635e25f3f814610375575f5ffd5b80631fc9b141116101ae5780631fc9b141146102825780633175bd98146102955780634054ecca146102d45780634c378a96146102e7575f5ffd5b80620ae759146101de5780630494cd9a146101ff5780630cadeda5146102315780631f19357214610250575b5f5ffd5b3480156101e9575f5ffd5b506101fd6101f8366004610e85565b61059b565b005b34801561020a575f5ffd5b5061021e610219366004610f06565b6105f4565b6040519081526020015b60405180910390f35b34801561023c575f5ffd5b506101fd61024b366004610f33565b610665565b34801561025b575f5ffd5b5061026f61026a366004610f7f565b6106a0565b60405161ffff9091168152602001610228565b6101fd610290366004610f9a565b610705565b3480156102a0575f5ffd5b506102b46102af366004610fc3565b610739565b604080516001600160801b03938416815292909116602083015201610228565b6101fd6102e2366004610fed565b6107b3565b3480156102f2575f5ffd5b506102fc61080481565b6040516001600160a01b039091168152602001610228565b34801561031f575f5ffd5b506102fc61080581565b348015610334575f5ffd5b506102fc61080a81565b348015610349575f5ffd5b5061035d610358366004610fc3565b6107f7565b6040516001600160401b039091168152602001610228565b6101fd610383366004611074565b61086c565b348015610393575f5ffd5b5061021e6103a2366004610f7f565b6108d6565b6101fd6103b53660046111c2565b610901565b3480156103c5575f5ffd5b5061035d6103d4366004610f7f565b610989565b6101fd6103e7366004610f9a565b6109ef565b3480156103f7575f5ffd5b5061040b61040636600461122b565b610a23565b6040516102289190611246565b348015610423575f5ffd5b50610437610432366004611334565b610add565b604051610228919061134b565b34801561044f575f5ffd5b5061021e61045e366004611334565b610b42565b34801561046e575f5ffd5b5061021e61047d366004611334565b610b6a565b34801561048d575f5ffd5b506102fc61080681565b3480156104a2575f5ffd5b506102fc61080c81565b6101fd6104ba3660046113b6565b610b92565b3480156104ca575f5ffd5b5061035d6104d9366004610f7f565b610c26565b3480156104e9575f5ffd5b506104fd6104f8366004611445565b610c51565b6040516102289190611480565b348015610515575f5ffd5b506102fc61080981565b34801561052a575f5ffd5b506102fc61080381565b6101fd610542366004611334565b610cd8565b348015610552575f5ffd5b506102fc61080081565b348015610567575f5ffd5b506102fc61080881565b34801561057c575f5ffd5b506102fc61080b81565b348015610591575f5ffd5b506102fc61080281565b604051620ae75960e01b815261080b90620ae759906105c29086908690869060040161150d565b5f604051808303815f87803b1580156105d9575f5ffd5b505af11580156105eb573d5f5f3e3d5ffd5b50505050505050565b60405163024a66cd60e11b81526001600160a01b03821660048201525f9061080c90630494cd9a906024015b602060405180830381865afa15801561063b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065f9190611541565b92915050565b604051630cadeda560e01b81526004810184905260ff8316602482015263ffffffff8216604482015261080b90630cadeda5906064016105c2565b604051630f8c9ab960e11b815261ffff821660048201525f9061080290631f19357290602401602060405180830381865afa1580156106e1573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065f9190611558565b604051631fc9b14160e01b815260048101849052602481018390526044810182905261080590631fc9b141906064016105c2565b60405163062eb7b360e31b815263ffffffff83166004820152602481018290525f90819061080a90633175bd98906044016040805180830381865afa158015610784573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a89190611589565b915091509250929050565b60405163202a766560e11b815261ffff831660048201526024810182905261080490634054ecca9034906044015f604051808303818588803b1580156105d9575f5ffd5b604051635b7210c560e01b815263ffffffff83166004820152602481018290525f9061080990635b7210c590604401602060405180830381865afa158015610841573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061086591906115c5565b9392505050565b604051631cf98c6b60e01b815261080390631cf98c6b9061089f908b908b908b908b908b908b908b908b9060040161160e565b5f604051808303815f87803b1580156108b6575f5ffd5b505af11580156108c8573d5f5f3e3d5ffd5b505050505050505050505050565b6040516369e38bc360e01b815261ffff821660048201525f90610808906369e38bc390602401610620565b60405163127e1adb60e01b81526001600160401b03808716600483015280861660248301528416604482015263ffffffff831660648201526001600160a01b03821660848201526108099063127e1adb9060a4015f604051808303815f87803b15801561096c575f5ffd5b505af115801561097e573d5f5f3e3d5ffd5b505050505050505050565b604051631d1136b760e21b815261ffff821660048201525f9061080390637444dadc906024015b602060405180830381865afa1580156109cb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065f91906115c5565b6040516307d691e360e41b815260048101849052602481018390526044810182905261080590637d691e30906064016105c2565b60408051610160810182525f80825260208201819052818301819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082015290516322ee919b60e21b815263ffffffff8316600482015261080990638bba466c9060240161016060405180830381865afa158015610ab9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065f91906116c3565b6040516394e3ac6f60e01b81526004810182905260609061080b906394e3ac6f906024015f60405180830381865afa158015610b1b573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261065f919081019061178a565b6040516326614e3160e21b8152600481018290525f906108059063998538c490602401610620565b604051639f246f6f60e01b8152600481018290525f9061080590639f246f6f90602401610620565b60405163afed65f960e01b81526001600160401b03808916600483015280881660248301528616604482015263ffffffff808616606483015260ff8516608483015283151560a4830152821660c482015261080a9063afed65f99060e4015f604051808303815f87803b158015610c07575f5ffd5b505af1158015610c19573d5f5f3e3d5ffd5b5050505050505050505050565b604051630b0c751b60e41b815261ffff821660048201525f906108039063b0c751b0906024016109b0565b60405163b1f789ef60e01b815261ffff80851660048301526001600160a01b0384166024830152821660448201526060906108069063b1f789ef906064015f60405180830381865afa158015610ca9573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610cd0919081019061183f565b949350505050565b60405163cd6f4eb160e01b8152600481018290526108009063cd6f4eb19034906024015f604051808303818588803b158015610d12575f5ffd5b505af1158015610d24573d5f5f3e3d5ffd5b505050505050565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b0381118282101715610d6357610d63610d2c565b60405290565b604051606081016001600160401b0381118282101715610d6357610d63610d2c565b604080519081016001600160401b0381118282101715610d6357610d63610d2c565b604051601f8201601f191681016001600160401b0381118282101715610dd557610dd5610d2c565b604052919050565b5f6001600160401b03821115610df557610df5610d2c565b5060051b60200190565b803560ff81168114610e0f575f5ffd5b919050565b5f82601f830112610e23575f5ffd5b8135610e36610e3182610ddd565b610dad565b8082825260208201915060208360051b860101925085831115610e57575f5ffd5b602085015b83811015610e7b57610e6d81610dff565b835260209283019201610e5c565b5095945050505050565b5f5f5f60608486031215610e97575f5ffd5b8335925060208401356001600160401b03811115610eb3575f5ffd5b610ebf86828701610e14565b92505060408401356001600160401b03811115610eda575f5ffd5b610ee686828701610e14565b9150509250925092565b80356001600160a01b0381168114610e0f575f5ffd5b5f60208284031215610f16575f5ffd5b61086582610ef0565b63ffffffff81168114610f30575f5ffd5b50565b5f5f5f60608486031215610f45575f5ffd5b83359250610f5560208501610dff565b91506040840135610f6581610f1f565b809150509250925092565b61ffff81168114610f30575f5ffd5b5f60208284031215610f8f575f5ffd5b813561086581610f70565b5f5f5f60608486031215610fac575f5ffd5b505081359360208301359350604090920135919050565b5f5f60408385031215610fd4575f5ffd5b8235610fdf81610f1f565b946020939093013593505050565b5f5f60408385031215610ffe575f5ffd5b8235610fdf81610f70565b5f82601f830112611018575f5ffd5b81356001600160401b0381111561103157611031610d2c565b611044601f8201601f1916602001610dad565b818152846020838601011115611058575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f5f5f5f610100898b03121561108c575f5ffd5b8835975060208901356001600160401b038111156110a8575f5ffd5b6110b48b828c01611009565b97505060408901356001600160401b038111156110cf575f5ffd5b6110db8b828c01611009565b96505060608901356001600160401b038111156110f6575f5ffd5b6111028b828c01611009565b95505060808901356001600160401b0381111561111d575f5ffd5b6111298b828c01611009565b94505060a08901356001600160401b03811115611144575f5ffd5b6111508b828c01611009565b93505060c08901356001600160401b0381111561116b575f5ffd5b6111778b828c01611009565b92505060e08901356001600160401b03811115611192575f5ffd5b61119e8b828c01611009565b9150509295985092959890939650565b6001600160401b0381168114610f30575f5ffd5b5f5f5f5f5f60a086880312156111d6575f5ffd5b85356111e1816111ae565b945060208601356111f1816111ae565b93506040860135611201816111ae565b9250606086013561121181610f1f565b915061121f60808701610ef0565b90509295509295909350565b5f6020828403121561123b575f5ffd5b813561086581610f1f565b8151815260208083015161016083019161126a908401826001600160401b03169052565b50604083015161128560408401826001600160401b03169052565b50606083015161129d606084018263ffffffff169052565b5060808301516112b860808401826001600160401b03169052565b5060a083015160a083015260c08301516112dd60c08401826001600160401b03169052565b5060e08301516112f160e084018215159052565b5061010083015161010083015261012083015161131361012084018215159052565b5061014083015161132d61014084018263ffffffff169052565b5092915050565b5f60208284031215611344575f5ffd5b5035919050565b602080825282518282018190525f918401906040840190835b8181101561139e57835180518452602081015160208501526040810151604085015250606083019250602084019350600181019050611364565b509095945050505050565b8015158114610f30575f5ffd5b5f5f5f5f5f5f5f60e0888a0312156113cc575f5ffd5b87356113d7816111ae565b965060208801356113e7816111ae565b955060408801356113f7816111ae565b9450606088013561140781610f1f565b935061141560808901610dff565b925060a0880135611425816113a9565b915060c088013561143581610f1f565b8091505092959891949750929550565b5f5f5f60608486031215611457575f5ffd5b833561146281610f70565b925061147060208501610ef0565b91506040840135610f6581610f70565b602080825282518282018190525f918401906040840190835b8181101561139e578351805161ffff1684526020908101516001600160401b03168185015290930192604090920191600101611499565b5f8151808452602084019350602083015f5b8281101561150357815160ff168652602095860195909101906001016114e2565b5093949350505050565b838152606060208201525f61152560608301856114d0565b828103604084015261153781856114d0565b9695505050505050565b5f60208284031215611551575f5ffd5b5051919050565b5f60208284031215611568575f5ffd5b815161086581610f70565b80516001600160801b0381168114610e0f575f5ffd5b5f5f6040838503121561159a575f5ffd5b6115a383611573565b91506115b160208401611573565b90509250929050565b8051610e0f816111ae565b5f602082840312156115d5575f5ffd5b8151610865816111ae565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b88815261010060208201525f61162861010083018a6115e0565b828103604084015261163a818a6115e0565b9050828103606084015261164e81896115e0565b9050828103608084015261166281886115e0565b905082810360a084015261167681876115e0565b905082810360c084015261168a81866115e0565b905082810360e084015261169e81856115e0565b9b9a5050505050505050505050565b8051610e0f81610f1f565b8051610e0f816113a9565b5f6101608284031280156116d5575f5ffd5b506116de610d40565b825181526116ee602084016115ba565b60208201526116ff604084016115ba565b6040820152611710606084016116ad565b6060820152611721608084016115ba565b608082015260a0838101519082015261173c60c084016115ba565b60c082015261174d60e084016116b8565b60e0820152610100838101519082015261176a61012084016116b8565b61012082015261177d61014084016116ad565b6101408201529392505050565b5f6020828403121561179a575f5ffd5b81516001600160401b038111156117af575f5ffd5b8201601f810184136117bf575f5ffd5b80516117cd610e3182610ddd565b808282526020820191506020606084028501019250868311156117ee575f5ffd5b6020840193505b82841015611537576060848803121561180c575f5ffd5b611814610d69565b84518152602080860151818301526040808701519083015290835260609094019391909101906117f5565b5f6020828403121561184f575f5ffd5b81516001600160401b03811115611864575f5ffd5b8201601f81018413611874575f5ffd5b8051611882610e3182610ddd565b8082825260208201915060208360061b8501019250868311156118a3575f5ffd5b6020840193505b8284101561153757604084880312156118c1575f5ffd5b6118c9610d8b565b84516118d481610f70565b815260208501516118e4816111ae565b80602083015250808352506020820191506040840193506118aa56fea264697066735822122026460b0cf8f5e17c58e4083c1b1155431c8d2cb9962cd9d5f6105ce473df73ee64736f6c63430008230033"; export const STAKE_WRAP_ABI = [ { @@ -2453,47 +2456,47 @@ export const STAKE_WRAP_ABI = [ export const STAKE_WRAP_BYTECODE = "6080604052348015600e575f5ffd5b50335f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ad08061005b5f395ff3fe608060405260043610610042575f3560e01c80632daedd521461004d5780637d691e30146100755780638da5cb5b1461009d57806390b9d534146100c757610049565b3661004957005b5f5ffd5b348015610058575f5ffd5b50610073600480360381019061006e91906106bd565b6100ef565b005b348015610080575f5ffd5b5061009b600480360381019061009691906106bd565b6102ad565b005b3480156100a8575f5ffd5b506100b161046b565b6040516100be919061074c565b60405180910390f35b3480156100d2575f5ffd5b506100ed60048036038101906100e8919061079a565b61048f565b005b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461017d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017490610891565b60405180910390fd5b5f631fc9b14160e01b84838560405160240161019b939291906108cd565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090505f61080573ffffffffffffffffffffffffffffffffffffffff165a836040516102239190610954565b5f604051808303815f8787f1925050503d805f811461025d576040519150601f19603f3d011682016040523d82523d5f602084013e610262565b606091505b50509050806102a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161029d906109b4565b60405180910390fd5b5050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461033b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033290610891565b60405180910390fd5b5f637d691e3060e01b848385604051602401610359939291906108cd565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090505f61080573ffffffffffffffffffffffffffffffffffffffff165a836040516103e19190610954565b5f604051808303815f8787f1925050503d805f811461041b576040519150601f19603f3d011682016040523d82523d5f602084013e610420565b606091505b5050905080610464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045b906109b4565b60405180910390fd5b5050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461051d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051490610891565b60405180910390fd5b5f635beb6b7460e01b868486858960405160240161053f9594939291906109e1565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090505f61080573ffffffffffffffffffffffffffffffffffffffff165a836040516105c79190610954565b5f604051808303815f8787f1925050503d805f8114610601576040519150601f19603f3d011682016040523d82523d5f602084013e610606565b606091505b505090508061064a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064190610a7c565b60405180910390fd5b50505050505050565b5f5ffd5b5f819050919050565b61066981610657565b8114610673575f5ffd5b50565b5f8135905061068481610660565b92915050565b5f819050919050565b61069c8161068a565b81146106a6575f5ffd5b50565b5f813590506106b781610693565b92915050565b5f5f5f606084860312156106d4576106d3610653565b5b5f6106e186828701610676565b93505060206106f2868287016106a9565b9250506040610703868287016106a9565b9150509250925092565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6107368261070d565b9050919050565b6107468161072c565b82525050565b5f60208201905061075f5f83018461073d565b92915050565b5f8115159050919050565b61077981610765565b8114610783575f5ffd5b50565b5f8135905061079481610770565b92915050565b5f5f5f5f5f60a086880312156107b3576107b2610653565b5b5f6107c088828901610676565b95505060206107d1888289016106a9565b94505060406107e2888289016106a9565b93505060606107f3888289016106a9565b925050608061080488828901610786565b9150509295509295909350565b5f82825260208201905092915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f5f8201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f61087b602183610811565b915061088682610821565b604082019050919050565b5f6020820190508181035f8301526108a88161086f565b9050919050565b6108b881610657565b82525050565b6108c78161068a565b82525050565b5f6060820190506108e05f8301866108af565b6108ed60208301856108be565b6108fa60408301846108be565b949350505050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f61092e82610902565b610938818561090c565b9350610948818560208601610916565b80840191505092915050565b5f61095f8284610924565b915081905092915050565b7f6164645374616b652063616c6c206661696c65640000000000000000000000005f82015250565b5f61099e601483610811565b91506109a98261096a565b602082019050919050565b5f6020820190508181035f8301526109cb81610992565b9050919050565b6109db81610765565b82525050565b5f60a0820190506109f45f8301886108af565b610a0160208301876108be565b610a0e60408301866108be565b610a1b60608301856109d2565b610a2860808301846108be565b9695505050505050565b7f6164645374616b654c696d69742063616c6c206661696c6564000000000000005f82015250565b5f610a66601983610811565b9150610a7182610a32565b602082019050919050565b5f6020820190508181035f830152610a9381610a5a565b905091905056fea2646970667358221220f8ad692d7919fb10f08e5311c64a0aa705a4e665689967633c2ddade5398076664736f6c634300081e0033"; - export const PRECOMPILE_GAS_CONTRACT_ABI = [ { - "anonymous": false, - "inputs": [ + anonymous: false, + inputs: [ { - "indexed": false, - "internalType": "string", - "name": "message", - "type": "string" - } + indexed: false, + internalType: "string", + name: "message", + type: "string", + }, ], - "name": "Log", - "type": "event" + name: "Log", + type: "event", }, { - "inputs": [ + inputs: [ { - "internalType": "uint64", - "name": "iterations", - "type": "uint64" - } + internalType: "uint64", + name: "iterations", + type: "uint64", + }, ], - "name": "callED25519", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "callED25519", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint64", - "name": "iterations", - "type": "uint64" - } + internalType: "uint64", + name: "iterations", + type: "uint64", + }, ], - "name": "callSR25519", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } -] + name: "callSR25519", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; -export const PRECOMPILE_GAS_CONTRACT_BYTECODE = "60806040527f1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef5f1b5f555f5f1b6001555f5f1b6002555f5f1b6003553480156045575f5ffd5b5061048b806100535f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806356554a5714610038578063bd9cac2b14610054575b5f5ffd5b610052600480360381019061004d919061028f565b610070565b005b61006e6004803603810190610069919061028f565b61015f565b005b5f5f90505b8167ffffffffffffffff168167ffffffffffffffff1610156101265761040373ffffffffffffffffffffffffffffffffffffffff1663869adcb95f546001546002546003546040518563ffffffff1660e01b81526004016100d994939291906102d2565b602060405180830381865afa1580156100f4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610118919061034a565b508080600101915050610075565b507fcf34ef537ac33ee1ac626ca1587a0a7e8e51561e5514f8cb36afa1c5102b3bab604051610154906103cf565b60405180910390a150565b5f5f90505b8167ffffffffffffffff168167ffffffffffffffff1610156102155761040273ffffffffffffffffffffffffffffffffffffffff1663869adcb95f546001546002546003546040518563ffffffff1660e01b81526004016101c894939291906102d2565b602060405180830381865afa1580156101e3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610207919061034a565b508080600101915050610164565b507fcf34ef537ac33ee1ac626ca1587a0a7e8e51561e5514f8cb36afa1c5102b3bab60405161024390610437565b60405180910390a150565b5f5ffd5b5f67ffffffffffffffff82169050919050565b61026e81610252565b8114610278575f5ffd5b50565b5f8135905061028981610265565b92915050565b5f602082840312156102a4576102a361024e565b5b5f6102b18482850161027b565b91505092915050565b5f819050919050565b6102cc816102ba565b82525050565b5f6080820190506102e55f8301876102c3565b6102f260208301866102c3565b6102ff60408301856102c3565b61030c60608301846102c3565b95945050505050565b5f8115159050919050565b61032981610315565b8114610333575f5ffd5b50565b5f8151905061034481610320565b92915050565b5f6020828403121561035f5761035e61024e565b5b5f61036c84828501610336565b91505092915050565b5f82825260208201905092915050565b7f63616c6c535232353531390000000000000000000000000000000000000000005f82015250565b5f6103b9600b83610375565b91506103c482610385565b602082019050919050565b5f6020820190508181035f8301526103e6816103ad565b9050919050565b7f63616c6c454432353531390000000000000000000000000000000000000000005f82015250565b5f610421600b83610375565b915061042c826103ed565b602082019050919050565b5f6020820190508181035f83015261044e81610415565b905091905056fea26469706673582212202addcdae9c59ee78157cddedc3148678edf455132bdfc62347f85e7c660b4d2164736f6c634300081e0033" \ No newline at end of file +export const PRECOMPILE_GAS_CONTRACT_BYTECODE = + "60806040527f1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef5f1b5f555f5f1b6001555f5f1b6002555f5f1b6003553480156045575f5ffd5b5061048b806100535f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806356554a5714610038578063bd9cac2b14610054575b5f5ffd5b610052600480360381019061004d919061028f565b610070565b005b61006e6004803603810190610069919061028f565b61015f565b005b5f5f90505b8167ffffffffffffffff168167ffffffffffffffff1610156101265761040373ffffffffffffffffffffffffffffffffffffffff1663869adcb95f546001546002546003546040518563ffffffff1660e01b81526004016100d994939291906102d2565b602060405180830381865afa1580156100f4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610118919061034a565b508080600101915050610075565b507fcf34ef537ac33ee1ac626ca1587a0a7e8e51561e5514f8cb36afa1c5102b3bab604051610154906103cf565b60405180910390a150565b5f5f90505b8167ffffffffffffffff168167ffffffffffffffff1610156102155761040273ffffffffffffffffffffffffffffffffffffffff1663869adcb95f546001546002546003546040518563ffffffff1660e01b81526004016101c894939291906102d2565b602060405180830381865afa1580156101e3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610207919061034a565b508080600101915050610164565b507fcf34ef537ac33ee1ac626ca1587a0a7e8e51561e5514f8cb36afa1c5102b3bab60405161024390610437565b60405180910390a150565b5f5ffd5b5f67ffffffffffffffff82169050919050565b61026e81610252565b8114610278575f5ffd5b50565b5f8135905061028981610265565b92915050565b5f602082840312156102a4576102a361024e565b5b5f6102b18482850161027b565b91505092915050565b5f819050919050565b6102cc816102ba565b82525050565b5f6080820190506102e55f8301876102c3565b6102f260208301866102c3565b6102ff60408301856102c3565b61030c60608301846102c3565b95945050505050565b5f8115159050919050565b61032981610315565b8114610333575f5ffd5b50565b5f8151905061034481610320565b92915050565b5f6020828403121561035f5761035e61024e565b5b5f61036c84828501610336565b91505092915050565b5f82825260208201905092915050565b7f63616c6c535232353531390000000000000000000000000000000000000000005f82015250565b5f6103b9600b83610375565b91506103c482610385565b602082019050919050565b5f6020820190508181035f8301526103e6816103ad565b9050919050565b7f63616c6c454432353531390000000000000000000000000000000000000000005f82015250565b5f610421600b83610375565b915061042c826103ed565b602082019050919050565b5f6020820190508181035f83015261044e81610415565b905091905056fea26469706673582212202addcdae9c59ee78157cddedc3148678edf455132bdfc62347f85e7c660b4d2164736f6c634300081e0033"; diff --git a/ts-tests/utils/evm.ts b/ts-tests/utils/evm.ts index 12eddca8e6..0281c2344a 100644 --- a/ts-tests/utils/evm.ts +++ b/ts-tests/utils/evm.ts @@ -37,10 +37,7 @@ export function refreshEthersProvider(provider: ethers.JsonRpcProvider): ethers. return new ethers.JsonRpcProvider(url); } -export function reconnectEthersWallet( - wallet: ethers.Wallet, - provider: ethers.JsonRpcProvider -): ethers.Wallet { +export function reconnectEthersWallet(wallet: ethers.Wallet, provider: ethers.JsonRpcProvider): ethers.Wallet { return wallet.connect(provider) as ethers.Wallet; } diff --git a/ts-tests/utils/index.ts b/ts-tests/utils/index.ts index 27e010e7c1..5c884448aa 100644 --- a/ts-tests/utils/index.ts +++ b/ts-tests/utils/index.ts @@ -9,4 +9,3 @@ export * from "./staking.js"; export * from "./subnet.js"; export * from "./transactions.js"; export * from "./wasm-contract.ts"; - diff --git a/ts-tests/utils/wasm-contract.ts b/ts-tests/utils/wasm-contract.ts index 4bd1cd2d24..76e3758e13 100644 --- a/ts-tests/utils/wasm-contract.ts +++ b/ts-tests/utils/wasm-contract.ts @@ -8,7 +8,7 @@ import { getBalance } from "./balance.ts"; import { sudoSetAdminFreezeWindow } from "./staking.ts"; import { sendTransaction, waitForTransactionWithRetry } from "./transactions.ts"; -export const BITTENSOR_WASM_PATH = "./ink/bittensor.wasm" +export const BITTENSOR_WASM_PATH = "./ink/bittensor.wasm"; export async function getTransferCallCode( api: TypedApi, @@ -111,9 +111,8 @@ export async function getStakeInfoForHotkeyColdkeyNetuid( coldkey: string, netuid: number ): Promise { - return ( - await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid(hotkey, coldkey, netuid) - )?.stake; + return (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid(hotkey, coldkey, netuid)) + ?.stake; } export async function instantiateWasmContract( @@ -148,4 +147,3 @@ export async function instantiateWasmContract( } export { convertPublicKeyToSs58, getBalance }; - From 6b4811ed524674c4b5da9afecf62c30ff143d426 Mon Sep 17 00:00:00 2001 From: open-junius Date: Tue, 16 Jun 2026 13:04:42 +0800 Subject: [PATCH 16/36] update moonwall dev config --- ts-tests/moonwall.config.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ts-tests/moonwall.config.json b/ts-tests/moonwall.config.json index ceaf8cca81..02ae03c0c4 100644 --- a/ts-tests/moonwall.config.json +++ b/ts-tests/moonwall.config.json @@ -11,7 +11,10 @@ "testFileDir": [ "suites/dev" ], - "runScripts": [], + "runScripts": [ + "generate-types.sh", + "build-spec.sh" + ], "multiThreads": true, "reporters": ["basic"], "foundation": { From 52d33e4447d529f90e8242954fa7203394a042ca Mon Sep 17 00:00:00 2001 From: open-junius Date: Tue, 16 Jun 2026 21:17:49 +0800 Subject: [PATCH 17/36] avoid test cases skipped --- ts-tests/suites/zombienet_evm/03-wasm-contract.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ts-tests/suites/zombienet_evm/03-wasm-contract.test.ts b/ts-tests/suites/zombienet_evm/03-wasm-contract.test.ts index 614facda15..70af3f5c9a 100644 --- a/ts-tests/suites/zombienet_evm/03-wasm-contract.test.ts +++ b/ts-tests/suites/zombienet_evm/03-wasm-contract.test.ts @@ -130,7 +130,7 @@ describeSuite({ await sudoSetLockReductionInterval(api, 1); await setAdminFreezeWindow(api); - inkClient = getInkClient(contracts.bittensor as Parameters[0]); + inkClient = getInkClient(contracts.bittensor); faucet = generateKeyringPair("sr25519"); await forceSetBalance(api, convertPublicKeyToSs58(faucet.publicKey), tao(1e9)); From f3c45ea1f92a66be7f29def78f63ec0aad4888b5 Mon Sep 17 00:00:00 2001 From: open-junius Date: Tue, 16 Jun 2026 21:20:14 +0800 Subject: [PATCH 18/36] update lock file --- ts-tests/pnpm-lock.yaml | 90 ++++++++++++++++++++--------------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/ts-tests/pnpm-lock.yaml b/ts-tests/pnpm-lock.yaml index c402126c8e..e3880d4e61 100644 --- a/ts-tests/pnpm-lock.yaml +++ b/ts-tests/pnpm-lock.yaml @@ -46,7 +46,7 @@ importers: version: 14.0.3(@polkadot/util@14.0.3) '@zombienet/orchestrator': specifier: 0.0.105 - version: 0.0.105(@polkadot/util@14.0.3)(@types/node@25.9.2)(chokidar@3.6.0) + version: 0.0.105(@polkadot/util@14.0.3)(@types/node@25.9.2)(chokidar@3.6.0)(supports-color@8.1.1) ethereum-cryptography: specifier: 3.1.0 version: 3.1.0 @@ -62,13 +62,13 @@ importers: devDependencies: '@acala-network/chopsticks': specifier: 1.2.3 - version: 1.2.3(debug@4.3.7)(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3)) + version: 1.2.3(debug@4.3.7(supports-color@8.1.1))(supports-color@8.1.1)(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3)) '@biomejs/biome': specifier: 1.9.4 version: 1.9.4 '@moonwall/cli': specifier: 5.18.3 - version: 5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api-derive@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/rpc-provider@16.5.6)(@polkadot/types-codec@16.5.6)(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@types/node@25.9.2)(chokidar@3.6.0)(debug@4.3.7)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3))(tsx@4.22.4)(typescript@5.8.3)(zod@3.25.76) + version: 5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api-derive@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/rpc-provider@16.5.6)(@polkadot/types-codec@16.5.6)(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@types/node@25.9.2)(chokidar@3.6.0)(debug@4.3.7(supports-color@8.1.1))(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(supports-color@8.1.1)(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3))(tsx@4.22.4)(typescript@5.8.3)(zod@3.25.76) '@moonwall/util': specifier: 5.18.3 version: 5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api-derive@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/rpc-provider@16.5.6)(@polkadot/types-codec@16.5.6)(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@types/node@25.9.2)(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(typescript@5.8.3)(yaml@2.9.0)(zod@3.25.76) @@ -95,7 +95,7 @@ importers: version: 3.1.3(vitest@3.2.4) '@zombienet/utils': specifier: ^0.0.28 - version: 0.0.28(@types/node@25.9.2)(chokidar@3.6.0)(typescript@5.8.3) + version: 0.0.28(@types/node@25.9.2)(chokidar@3.6.0)(supports-color@8.1.1)(typescript@5.8.3) bottleneck: specifier: 2.19.5 version: 2.19.5 @@ -116,7 +116,7 @@ importers: version: 10.32.1 solc: specifier: 0.8.21 - version: 0.8.21(debug@4.3.7) + version: 0.8.21(debug@4.3.7(supports-color@8.1.1)) toml: specifier: ^3.0.0 version: 3.0.0 @@ -5086,14 +5086,14 @@ snapshots: - supports-color - utf-8-validate - '@acala-network/chopsticks-db@1.2.3(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3))': + '@acala-network/chopsticks-db@1.2.3(supports-color@8.1.1)(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3))': dependencies: '@acala-network/chopsticks-core': 1.2.3 '@polkadot/util': 13.5.9 idb: 8.0.3 reflect-metadata: 0.2.2 - sqlite3: 5.1.7 - typeorm: 0.3.30(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3)) + sqlite3: 5.1.7(supports-color@8.1.1) + typeorm: 0.3.30(sqlite3@5.1.7(supports-color@8.1.1))(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3)) transitivePeerDependencies: - '@google-cloud/spanner' - '@sap/hana-client' @@ -5155,10 +5155,10 @@ snapshots: '@polkadot/util': 14.0.3 '@polkadot/wasm-util': 7.5.4(@polkadot/util@14.0.3) - '@acala-network/chopsticks@1.2.3(debug@4.3.7)(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3))': + '@acala-network/chopsticks@1.2.3(debug@4.3.7(supports-color@8.1.1))(supports-color@8.1.1)(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3))': dependencies: '@acala-network/chopsticks-core': 1.2.3 - '@acala-network/chopsticks-db': 1.2.3(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3)) + '@acala-network/chopsticks-db': 1.2.3(supports-color@8.1.1)(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3)) '@pnpm/npm-conf': 3.0.2 '@polkadot/api': 16.5.6 '@polkadot/api-augment': 16.5.6 @@ -5166,7 +5166,7 @@ snapshots: '@polkadot/types': 16.5.6 '@polkadot/util': 13.5.9 '@polkadot/util-crypto': 13.5.9(@polkadot/util@13.5.9) - axios: 1.17.0(debug@4.3.7) + axios: 1.17.0(debug@4.3.7(supports-color@8.1.1))(supports-color@8.1.1) comlink: 4.4.2 dotenv: 16.6.1 global-agent: 3.0.0 @@ -5199,7 +5199,7 @@ snapshots: - typeorm-aurora-data-api-driver - utf-8-validate - '@acala-network/chopsticks@1.4.2(debug@4.3.7)(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3))': + '@acala-network/chopsticks@1.4.2(debug@4.3.7(supports-color@8.1.1))(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3))': dependencies: '@acala-network/chopsticks-core': 1.4.2 '@acala-network/chopsticks-db': 1.4.2(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3)) @@ -5211,7 +5211,7 @@ snapshots: '@polkadot/types': 16.5.6 '@polkadot/util': 14.0.3 '@polkadot/util-crypto': 14.0.3(@polkadot/util@14.0.3) - axios: 1.17.0(debug@4.3.7) + axios: 1.17.0(debug@4.3.7(supports-color@8.1.1))(supports-color@8.1.1) comlink: 4.4.2 dotenv: 16.6.1 global-agent: 3.0.0 @@ -5924,9 +5924,9 @@ snapshots: '@js-sdsl/ordered-map@4.4.2': {} - '@moonwall/cli@5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api-derive@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/rpc-provider@16.5.6)(@polkadot/types-codec@16.5.6)(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@types/node@25.9.2)(chokidar@3.6.0)(debug@4.3.7)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3))(tsx@4.22.4)(typescript@5.8.3)(zod@3.25.76)': + '@moonwall/cli@5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api-derive@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/rpc-provider@16.5.6)(@polkadot/types-codec@16.5.6)(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@types/node@25.9.2)(chokidar@3.6.0)(debug@4.3.7(supports-color@8.1.1))(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(supports-color@8.1.1)(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3))(tsx@4.22.4)(typescript@5.8.3)(zod@3.25.76)': dependencies: - '@acala-network/chopsticks': 1.4.2(debug@4.3.7)(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3)) + '@acala-network/chopsticks': 1.4.2(debug@4.3.7(supports-color@8.1.1))(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3)) '@ast-grep/napi': 0.40.5 '@effect/cluster': 0.55.0(@effect/platform@0.93.8(effect@3.21.3))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/sql@0.48.6(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/workflow@0.15.2(@effect/experimental@0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(@effect/platform@0.93.8(effect@3.21.3))(@effect/rpc@0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3))(effect@3.21.3))(effect@3.21.3) '@effect/experimental': 0.57.11(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3) @@ -5959,7 +5959,7 @@ snapshots: clear: 0.1.0 cli-progress: 3.12.0 colors: 1.4.0 - dockerode: 4.0.9 + dockerode: 4.0.9(supports-color@8.1.1) dotenv: 17.2.3 effect: 3.21.3 ethers: 6.16.0 @@ -7728,12 +7728,12 @@ snapshots: loupe: 3.2.1 tinyrainbow: 2.0.0 - '@zombienet/orchestrator@0.0.105(@polkadot/util@14.0.3)(@types/node@25.9.2)(chokidar@3.6.0)': + '@zombienet/orchestrator@0.0.105(@polkadot/util@14.0.3)(@types/node@25.9.2)(chokidar@3.6.0)(supports-color@8.1.1)': dependencies: '@polkadot/api': 14.3.1 '@polkadot/keyring': 13.5.9(@polkadot/util-crypto@13.5.9(@polkadot/util@14.0.3))(@polkadot/util@14.0.3) '@polkadot/util-crypto': 13.5.9(@polkadot/util@14.0.3) - '@zombienet/utils': 0.0.28(@types/node@25.9.2)(chokidar@3.6.0)(typescript@5.8.3) + '@zombienet/utils': 0.0.28(@types/node@25.9.2)(chokidar@3.6.0)(supports-color@8.1.1)(typescript@5.8.3) JSONStream: 1.3.5 chai: 4.5.0 debug: 4.3.7(supports-color@8.1.1) @@ -7792,7 +7792,7 @@ snapshots: - supports-color - utf-8-validate - '@zombienet/utils@0.0.28(@types/node@25.9.2)(chokidar@3.6.0)(typescript@5.8.3)': + '@zombienet/utils@0.0.28(@types/node@25.9.2)(chokidar@3.6.0)(supports-color@8.1.1)(typescript@5.8.3)': dependencies: cli-table3: 0.6.5 debug: 4.3.7(supports-color@8.1.1) @@ -7877,7 +7877,7 @@ snapshots: aes-js@4.0.0-beta.5: {} - agent-base@6.0.2: + agent-base@6.0.2(supports-color@8.1.1): dependencies: debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: @@ -7960,11 +7960,11 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - axios@1.17.0(debug@4.3.7): + axios@1.17.0(debug@4.3.7(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - follow-redirects: 1.16.0(debug@4.3.7) + follow-redirects: 1.16.0(debug@4.3.7(supports-color@8.1.1)) form-data: 4.0.5 - https-proxy-agent: 5.0.1 + https-proxy-agent: 5.0.1(supports-color@8.1.1) proxy-from-env: 2.1.0 transitivePeerDependencies: - debug @@ -8364,7 +8364,7 @@ snapshots: diff@5.2.2: {} - docker-modem@5.0.7: + docker-modem@5.0.7(supports-color@8.1.1): dependencies: debug: 4.3.7(supports-color@8.1.1) readable-stream: 3.6.2 @@ -8373,12 +8373,12 @@ snapshots: transitivePeerDependencies: - supports-color - dockerode@4.0.9: + dockerode@4.0.9(supports-color@8.1.1): dependencies: '@balena/dockerignore': 1.0.2 '@grpc/grpc-js': 1.14.4 '@grpc/proto-loader': 0.7.15 - docker-modem: 5.0.7 + docker-modem: 5.0.7(supports-color@8.1.1) protobufjs: 7.6.2 tar-fs: 2.1.4 uuid: 10.0.0 @@ -8642,7 +8642,7 @@ snapshots: flatted@3.4.2: {} - follow-redirects@1.16.0(debug@4.3.7): + follow-redirects@1.16.0(debug@4.3.7(supports-color@8.1.1)): optionalDependencies: debug: 4.3.7(supports-color@8.1.1) @@ -8820,10 +8820,10 @@ snapshots: http-cache-semantics@4.2.0: optional: true - http-proxy-agent@4.0.1: + http-proxy-agent@4.0.1(supports-color@8.1.1): dependencies: '@tootallnate/once': 1.1.2 - agent-base: 6.0.2 + agent-base: 6.0.2(supports-color@8.1.1) debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -8836,9 +8836,9 @@ snapshots: transitivePeerDependencies: - supports-color - https-proxy-agent@5.0.1: + https-proxy-agent@5.0.1(supports-color@8.1.1): dependencies: - agent-base: 6.0.2 + agent-base: 6.0.2(supports-color@8.1.1) debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -9172,13 +9172,13 @@ snapshots: make-error@1.3.6: {} - make-fetch-happen@9.1.0: + make-fetch-happen@9.1.0(supports-color@8.1.1): dependencies: agentkeepalive: 4.6.0 cacache: 15.3.0 http-cache-semantics: 4.2.0 - http-proxy-agent: 4.0.1 - https-proxy-agent: 5.0.1 + http-proxy-agent: 4.0.1(supports-color@8.1.1) + https-proxy-agent: 5.0.1(supports-color@8.1.1) is-lambda: 1.0.1 lru-cache: 6.0.0 minipass: 3.3.6 @@ -9188,7 +9188,7 @@ snapshots: minipass-pipeline: 1.2.4 negotiator: 0.6.4 promise-retry: 2.0.1 - socks-proxy-agent: 6.2.1 + socks-proxy-agent: 6.2.1(supports-color@8.1.1) ssri: 8.0.1 transitivePeerDependencies: - bluebird @@ -9438,12 +9438,12 @@ snapshots: which: 6.0.1 optional: true - node-gyp@8.4.1: + node-gyp@8.4.1(supports-color@8.1.1): dependencies: env-paths: 2.2.1 glob: 7.2.3 graceful-fs: 4.2.11 - make-fetch-happen: 9.1.0 + make-fetch-happen: 9.1.0(supports-color@8.1.1) nopt: 5.0.0 npmlog: 6.0.2 rimraf: 3.0.2 @@ -10077,9 +10077,9 @@ snapshots: - bufferutil - utf-8-validate - socks-proxy-agent@6.2.1: + socks-proxy-agent@6.2.1(supports-color@8.1.1): dependencies: - agent-base: 6.0.2 + agent-base: 6.0.2(supports-color@8.1.1) debug: 4.3.7(supports-color@8.1.1) socks: 2.8.9 transitivePeerDependencies: @@ -10092,11 +10092,11 @@ snapshots: smart-buffer: 4.2.0 optional: true - solc@0.8.21(debug@4.3.7): + solc@0.8.21(debug@4.3.7(supports-color@8.1.1)): dependencies: command-exists: 1.2.9 commander: 8.3.0 - follow-redirects: 1.16.0(debug@4.3.7) + follow-redirects: 1.16.0(debug@4.3.7(supports-color@8.1.1)) js-sha3: 0.8.0 memorystream: 0.3.1 semver: 5.7.2 @@ -10138,14 +10138,14 @@ snapshots: sql-highlight@6.1.0: {} - sqlite3@5.1.7: + sqlite3@5.1.7(supports-color@8.1.1): dependencies: bindings: 1.5.0 node-addon-api: 7.1.1 prebuild-install: 7.1.3 tar: 6.2.1 optionalDependencies: - node-gyp: 8.4.1 + node-gyp: 8.4.1(supports-color@8.1.1) transitivePeerDependencies: - bluebird - supports-color @@ -10497,7 +10497,7 @@ snapshots: es-errors: 1.3.0 is-typed-array: 1.1.15 - typeorm@0.3.30(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3)): + typeorm@0.3.30(sqlite3@5.1.7(supports-color@8.1.1))(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3)): dependencies: '@sqltools/formatter': 1.2.5 ansis: 4.3.1 @@ -10515,7 +10515,7 @@ snapshots: uuid: 11.1.1 yargs: 17.7.2 optionalDependencies: - sqlite3: 5.1.7 + sqlite3: 5.1.7(supports-color@8.1.1) ts-node: 10.9.2(@types/node@25.9.2)(typescript@5.8.3) transitivePeerDependencies: - babel-plugin-macros From 73c2ab04cb8420710c26934e379002b72053a123 Mon Sep 17 00:00:00 2001 From: open-junius Date: Tue, 16 Jun 2026 22:52:29 +0800 Subject: [PATCH 19/36] upgrade polkadot api --- ts-tests/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ts-tests/package.json b/ts-tests/package.json index 6098bc580c..d6143e3eeb 100644 --- a/ts-tests/package.json +++ b/ts-tests/package.json @@ -25,9 +25,8 @@ "@inquirer/prompts": "7.3.1", "@noble/ciphers": "^2.1.1", "@polkadot-api/ink-contracts": "^0.4.1", - "@polkadot-api/sdk-ink": "^0.5.1", - "polkadot-api": "1.19.2", "@polkadot-api/merkleize-metadata": "^1.1.15", + "@polkadot-api/sdk-ink": "^0.5.1", "@polkadot-api/substrate-bindings": "^0.17.0", "@polkadot/api": "*", "@polkadot/keyring": "*", @@ -38,6 +37,7 @@ "@zombienet/orchestrator": "0.0.105", "ethereum-cryptography": "3.1.0", "mlkem": "^2.7.0", + "polkadot-api": "^1.22.0", "ps-node": "0.1.6" }, "devDependencies": { @@ -51,7 +51,7 @@ "@types/node": "*", "@types/ps-node": "0.1.3", "@types/yargs": "^17.0.33", - "@vitest/ui": "3.1.3", + "@vitest/ui": "3.2.4", "@zombienet/utils": "^0.0.28", "bottleneck": "2.19.5", "chalk": "^5.4.0", From 8af1c42a24b4c94d333f82f8324a6743d94c569a Mon Sep 17 00:00:00 2001 From: open-junius Date: Tue, 16 Jun 2026 23:11:54 +0800 Subject: [PATCH 20/36] fix polkadot api version --- ts-tests/moonwall.config.json | 3 +- ts-tests/pnpm-lock.yaml | 978 +++++++++++------- .../zombienet_evm/03-wasm-contract.test.ts | 7 +- 3 files changed, 629 insertions(+), 359 deletions(-) diff --git a/ts-tests/moonwall.config.json b/ts-tests/moonwall.config.json index 02ae03c0c4..5dd3ef9a3d 100644 --- a/ts-tests/moonwall.config.json +++ b/ts-tests/moonwall.config.json @@ -140,8 +140,7 @@ } }, "vitestArgs": { - "hookTimeout": 900000, - "testTimeout": 300000 + "bail": 1 }, "connections": [ { diff --git a/ts-tests/pnpm-lock.yaml b/ts-tests/pnpm-lock.yaml index e3880d4e61..1b0ac70502 100644 --- a/ts-tests/pnpm-lock.yaml +++ b/ts-tests/pnpm-lock.yaml @@ -4,6 +4,9 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + toml: 3.0.0 + importers: .: @@ -22,7 +25,7 @@ importers: version: 1.2.3 '@polkadot-api/sdk-ink': specifier: ^0.5.1 - version: 0.5.1(@polkadot-api/ink-contracts@0.4.6)(polkadot-api@1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.9.0))(rxjs@7.8.2)(typescript@5.8.3)(zod@3.25.76) + version: 0.5.1(@polkadot-api/ink-contracts@0.4.6)(polkadot-api@1.23.3(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.8.2))(rxjs@7.8.2)(typescript@5.8.3)(zod@3.25.76) '@polkadot-api/substrate-bindings': specifier: ^0.17.0 version: 0.17.0 @@ -54,8 +57,8 @@ importers: specifier: ^2.7.0 version: 2.7.0 polkadot-api: - specifier: 1.19.2 - version: 1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.9.0) + specifier: ^1.22.0 + version: 1.23.3(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.8.2) ps-node: specifier: 0.1.6 version: 0.1.6 @@ -71,7 +74,7 @@ importers: version: 5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api-derive@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/rpc-provider@16.5.6)(@polkadot/types-codec@16.5.6)(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@types/node@25.9.2)(chokidar@3.6.0)(debug@4.3.7(supports-color@8.1.1))(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(supports-color@8.1.1)(ts-node@10.9.2(@types/node@25.9.2)(typescript@5.8.3))(tsx@4.22.4)(typescript@5.8.3)(zod@3.25.76) '@moonwall/util': specifier: 5.18.3 - version: 5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api-derive@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/rpc-provider@16.5.6)(@polkadot/types-codec@16.5.6)(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@types/node@25.9.2)(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(typescript@5.8.3)(yaml@2.9.0)(zod@3.25.76) + version: 5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api-derive@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/rpc-provider@16.5.6)(@polkadot/types-codec@16.5.6)(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@types/node@25.9.2)(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(typescript@5.8.3)(yaml@2.8.2)(zod@3.25.76) '@polkadot/wasm-crypto': specifier: ^7.4.1 version: 7.5.4(@polkadot/util@14.0.3)(@polkadot/x-randomvalues@14.0.3(@polkadot/util@14.0.3)(@polkadot/wasm-util@7.5.4(@polkadot/util@14.0.3))) @@ -91,8 +94,8 @@ importers: specifier: ^17.0.33 version: 17.0.35 '@vitest/ui': - specifier: 3.1.3 - version: 3.1.3(vitest@3.2.4) + specifier: 3.2.4 + version: 3.2.4(vitest@3.2.4) '@zombienet/utils': specifier: ^0.0.28 version: 0.0.28(@types/node@25.9.2)(chokidar@3.6.0)(supports-color@8.1.1)(typescript@5.8.3) @@ -118,7 +121,7 @@ importers: specifier: 0.8.21 version: 0.8.21(debug@4.3.7(supports-color@8.1.1)) toml: - specifier: ^3.0.0 + specifier: 3.0.0 version: 3.0.0 tsx: specifier: '*' @@ -131,7 +134,7 @@ importers: version: 2.38.0(typescript@5.8.3)(zod@3.25.76) vitest: specifier: 3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@25.9.2)(@vitest/ui@3.1.3)(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.9.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@25.9.2)(@vitest/ui@3.2.4)(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.9.0) web3: specifier: 4.15.0 version: 4.15.0(encoding@0.1.13)(typescript@5.8.3)(zod@3.25.76) @@ -144,7 +147,7 @@ importers: optionalDependencies: '@polkadot-api/descriptors': specifier: file:.papi/descriptors - version: file:.papi/descriptors(polkadot-api@1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.9.0)) + version: file:.papi/descriptors(polkadot-api@1.23.3(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.8.2)) packages: @@ -439,6 +442,12 @@ packages: '@effect/rpc': ^0.72.2 effect: ^3.19.10 + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/aix-ppc64@0.27.7': resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} engines: {node: '>=18'} @@ -451,6 +460,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm64@0.27.7': resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} engines: {node: '>=18'} @@ -463,6 +478,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-arm@0.27.7': resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} engines: {node: '>=18'} @@ -475,6 +496,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/android-x64@0.27.7': resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} engines: {node: '>=18'} @@ -487,6 +514,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-arm64@0.27.7': resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} engines: {node: '>=18'} @@ -499,6 +532,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/darwin-x64@0.27.7': resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} engines: {node: '>=18'} @@ -511,6 +550,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-arm64@0.27.7': resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} engines: {node: '>=18'} @@ -523,6 +568,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/freebsd-x64@0.27.7': resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} engines: {node: '>=18'} @@ -535,6 +586,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm64@0.27.7': resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} engines: {node: '>=18'} @@ -547,6 +604,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-arm@0.27.7': resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} engines: {node: '>=18'} @@ -559,6 +622,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-ia32@0.27.7': resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} engines: {node: '>=18'} @@ -571,6 +640,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-loong64@0.27.7': resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} engines: {node: '>=18'} @@ -583,6 +658,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-mips64el@0.27.7': resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} engines: {node: '>=18'} @@ -595,6 +676,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-ppc64@0.27.7': resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} engines: {node: '>=18'} @@ -607,6 +694,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-riscv64@0.27.7': resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} engines: {node: '>=18'} @@ -619,6 +712,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-s390x@0.27.7': resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} engines: {node: '>=18'} @@ -631,6 +730,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/linux-x64@0.27.7': resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} engines: {node: '>=18'} @@ -643,6 +748,12 @@ packages: cpu: [x64] os: [linux] + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-arm64@0.27.7': resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} engines: {node: '>=18'} @@ -655,6 +766,12 @@ packages: cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/netbsd-x64@0.27.7': resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} engines: {node: '>=18'} @@ -667,6 +784,12 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-arm64@0.27.7': resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} engines: {node: '>=18'} @@ -679,6 +802,12 @@ packages: cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/openbsd-x64@0.27.7': resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} engines: {node: '>=18'} @@ -691,6 +820,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/openharmony-arm64@0.27.7': resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} engines: {node: '>=18'} @@ -703,6 +838,12 @@ packages: cpu: [arm64] os: [openharmony] + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/sunos-x64@0.27.7': resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} engines: {node: '>=18'} @@ -715,6 +856,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-arm64@0.27.7': resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} engines: {node: '>=18'} @@ -727,6 +874,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-ia32@0.27.7': resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} engines: {node: '>=18'} @@ -739,6 +892,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@esbuild/win32-x64@0.27.7': resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} engines: {node: '>=18'} @@ -1384,9 +1543,16 @@ packages: resolution: {integrity: sha512-eC/wUxjaN8miAmwSwJ/XIZ1zG+4leB2fs6h0fcZrbVI9SJXwuoWGTCMtErq+fbgRlDoK3cxEUO16JBKhLkCWXw==} hasBin: true + '@polkadot-api/cli@0.18.1': + resolution: {integrity: sha512-jPa8WSNPZWdy372sBAUnm0nU1XX5mLbmgkOOU39+zpYPSE12mYXyM3r7JuT5IHdAccEJr6qK2DplPFTeNSyq9A==} + hasBin: true + '@polkadot-api/codegen@0.19.1': resolution: {integrity: sha512-129a0vHChzKuvQDELMYPpmqZtA5VFlJ7vo5HZh47bo67qYi1veRgDrNQVGM8yaHzi7Coo481b/SDruZbbbgd3Q==} + '@polkadot-api/codegen@0.21.2': + resolution: {integrity: sha512-e1Of2TfB13YndPQ71WrtOIPfRrSlkG6wGprP8/VHC484kkt2JPDOY+io3NdPWkafDblDQ47aG0368sxT+4RSZA==} + '@polkadot-api/common-sdk-utils@0.1.0': resolution: {integrity: sha512-cgA9fh8dfBai9b46XaaQmj9vwzyHStQjc/xrAvQksgF6SqvZ0yAfxVqLvGrsz/Xi3dsAdKLg09PybC7MUAMv9w==} peerDependencies: @@ -1396,7 +1562,7 @@ packages: '@polkadot-api/descriptors@file:.papi/descriptors': resolution: {directory: .papi/descriptors, type: directory} peerDependencies: - polkadot-api: '>=1.11.2' + polkadot-api: '>=2.0.0' '@polkadot-api/ink-contracts@0.4.0': resolution: {integrity: sha512-e2u5KhuYoiM+PyHsvjkI0O1nmFuC0rLH64uBerMqwK7hWENdM/ej9OqKawIzp6NQuYSHF5P4U8NBT0mjP9Y1yQ==} @@ -1410,6 +1576,9 @@ packages: '@polkadot-api/json-rpc-provider-proxy@0.2.4': resolution: {integrity: sha512-nuGoY9QpBAiRU7xmXN3nugFvPcnSu3IxTLm1OWcNTGlZ1LW5bvdQHz3JLk56+Jlyb3GJ971hqdg2DJsMXkKCOg==} + '@polkadot-api/json-rpc-provider-proxy@0.2.8': + resolution: {integrity: sha512-AC5KK4p2IamAQuqR0S3YaiiUDRB2r1pWNrdF0Mntm5XGYEmeiAILBmnFa7gyWwemhkTWPYrK5HCurlGfw2EsDA==} + '@polkadot-api/json-rpc-provider@0.0.1': resolution: {integrity: sha512-/SMC/l7foRjpykLTUTacIH05H3mr9ip8b5xxfwXlVezXrNVLp3Cv0GX6uItkKd+ZjzVPf3PFrDF2B2/HLSNESA==} @@ -1419,17 +1588,28 @@ packages: '@polkadot-api/known-chains@0.9.11': resolution: {integrity: sha512-ZbKXjPNI56DieJrM3DwuzNkjgLIGLjmXt5280cYJksGfatJkS/fZXIsAz0gBvs3UDeghd4co5a/OEEPiI5X8YQ==} + '@polkadot-api/known-chains@0.9.18': + resolution: {integrity: sha512-zdU4FA01lXcpNXUiFgSmFKIwDKbTw15KT4U6Zlqo6FPUMZgncVEbbS4dSgVrf+TGw9SDOUjGlEdyTHAiOAG5Tw==} + '@polkadot-api/legacy-provider@0.3.2': resolution: {integrity: sha512-/aM4jKNED5ONhOg1WnUzfSM9cJ17FHpZvASWLUGNbC2Y6CZKmLQ9UFm9fZnIbpMmC01Mz3L5orE+IlCo6g54Ag==} peerDependencies: rxjs: '>=7.8.0' + '@polkadot-api/legacy-provider@0.3.8': + resolution: {integrity: sha512-Q747MN/7IUxxXGLWLQfhmSLqFyOLUsUFqQQytlEBjt66ZAv9VwYiHZ8JMBCnMzFuaUpKEWDT62ESKhgXn/hmEQ==} + peerDependencies: + rxjs: '>=7.8.0' + '@polkadot-api/logs-provider@0.0.6': resolution: {integrity: sha512-4WgHlvy+xee1ADaaVf6+MlK/+jGMtsMgAzvbQOJZnP4PfQuagoTqaeayk8HYKxXGphogLlPbD06tANxcb+nvAg==} '@polkadot-api/merkleize-metadata@1.1.25': resolution: {integrity: sha512-deNOiMY/XvyN47/N3C+GrkM0a1i7xcy4I3F3H9wW1XtyxffAmNpoj58L7Zr2RtXYhfekmhdUZlzdD1+DOYeqvg==} + '@polkadot-api/merkleize-metadata@1.1.29': + resolution: {integrity: sha512-z8ivYDdr4xlh50MQ7hLaSVw4VM6EV7gGgd+v/ej09nue0W08NG77zf7pXWeRKgOXe3+hPOSQQRSZT2OlIYRfqA==} + '@polkadot-api/merkleize-metadata@1.2.3': resolution: {integrity: sha512-WkPbz0p2XQ9c8yXagdnwCHEB70Gnm91okcsd6IXU393//3aPgkxKgb+/Efnz7C5/KQmg02P0zXo7q/n/W/yVCA==} @@ -1448,11 +1628,19 @@ packages: '@polkadot-api/metadata-compatibility@0.3.6': resolution: {integrity: sha512-rt6LTWph3L5sr7u940Ipvw2hao5to6T5BlbpRDkXHru+Xkl46tipTtrEjghtqkLBmOdVR6yiAVelOLWsiqPXnQ==} + '@polkadot-api/metadata-compatibility@0.4.4': + resolution: {integrity: sha512-V4ye5d2ns32YC45Fdc/IF9Y7CgM8inzJbmHQ2DCPSNd6omTRLJd81gU9zU88QAqPAcH2gKGnS5UF+wLL2VagSQ==} + '@polkadot-api/observable-client@0.15.1': resolution: {integrity: sha512-iR0ALA2C1aMzXqxqZqksLuScaImXbSWyaVs9Ym9Jz9SCeh2FSP6yK43BLW+RZOfcS84POxuGAktTXFssYM6fkg==} peerDependencies: rxjs: '>=7.8.0' + '@polkadot-api/observable-client@0.17.3': + resolution: {integrity: sha512-SJhbMKBIzxNgUUy7ZWflYf/TX9soMqiR2WYyggA7U3DLhgdx4wzFjOSbxCk8RuX9Kf/AmJE4dfleu9HBSCZv6g==} + peerDependencies: + rxjs: '>=7.8.0' + '@polkadot-api/observable-client@0.3.2': resolution: {integrity: sha512-HGgqWgEutVyOBXoGOPp4+IAq6CNdK/3MfQJmhCJb8YaJiaK4W6aRGrdQuQSTPHfERHCARt9BrOmEvTXAT257Ug==} peerDependencies: @@ -1462,9 +1650,15 @@ packages: '@polkadot-api/pjs-signer@0.6.15': resolution: {integrity: sha512-JsrsuV5aa8Ghnkle+ZiR15xB/xqW9PFNsP3jFsG/n0DlfbKI+mSfrBZ6v3gkpccQIHtRnOA4yB1qRijjIEp2WQ==} + '@polkadot-api/pjs-signer@0.6.19': + resolution: {integrity: sha512-jTHKoanZg9ewupthOczWNb2pici+GK+TBQmp9MwhwGs/3uMD2144aA8VNNBEi8rMxOBZlvKYfGkgjiTEGbBwuQ==} + '@polkadot-api/polkadot-sdk-compat@2.3.3': resolution: {integrity: sha512-p30po+iv4trniSJ7UZiIt/rFInvtA9Tzg65EzuRkCaQAnh54a3MPp9w/q+x+SNLEcfzVLvf8LyPnMPOIpKuj5w==} + '@polkadot-api/polkadot-sdk-compat@2.4.1': + resolution: {integrity: sha512-+sET0N3GpnKkLvsazBZEC5vhqAlamlL1KkJK9STB1tRxHSZcY/yBBa1Udn9DXJfX48kE9cnzfYldl9zsjqpARg==} + '@polkadot-api/polkadot-signer@0.1.6': resolution: {integrity: sha512-X7ghAa4r7doETtjAPTb50IpfGtrBmy3BJM5WCfNKa1saK04VFY9w+vDn+hwEcM4p0PcDHt66Ts74hzvHq54d9A==} @@ -1478,20 +1672,34 @@ packages: polkadot-api: '>=1.19.0' rxjs: '>=7.8.0' + '@polkadot-api/signer@0.2.13': + resolution: {integrity: sha512-XBOtjFsRGETVm/aXeZnsvFcJ1qvtZhRtwUMmpCOBt9s8PWfILaQH/ecOegzda3utNIZGmXXaOoJ5w9Hc/6I3ww==} + '@polkadot-api/signer@0.2.9': resolution: {integrity: sha512-2KntINp+HlrnsRquQiDaoGU400Guh/CbbTdkq23Y14qLjjKUQbGGs7RLHuVCxagxKw4UFlQpO36Ku0lHj3rq5Q==} '@polkadot-api/signers-common@0.1.16': resolution: {integrity: sha512-/+EqdH+aIWCzV0TWiHG7vuklxyHQ2lOkQAL6H/sVe2zsHpUjGfFzO/VAzVLH2acYHbpslKFLrA/y8RAIzYHhkg==} + '@polkadot-api/signers-common@0.1.20': + resolution: {integrity: sha512-v1mrTdRjQOV17riZ8172OsOQ/RJbv1QsEpjwnvxzvdCnjuNpYwtYHZaE+cSdDBb4n1p73XIBMvB/uAK/QFC2JA==} + '@polkadot-api/sm-provider@0.1.11': resolution: {integrity: sha512-XSli7BF3Xpyh0sdu1MNRJ1qyT3Werd5Z+tQa4iXR+nzo5Kpvg67paG9A8z1K7vNF83pRw4rvnXE9G5HbC+tPvA==} peerDependencies: '@polkadot-api/smoldot': '>=0.3' + '@polkadot-api/sm-provider@0.1.16': + resolution: {integrity: sha512-3LEDU7nkgtDx1A6ATHLLm3+nFAY6cdkNA9tGltfDzW0efACrhhfDjNqJdI1qLNY0wDyT1aGdoWr5r+4CckRpXA==} + peerDependencies: + '@polkadot-api/smoldot': '>=0.3' + '@polkadot-api/smoldot@0.3.14': resolution: {integrity: sha512-eWqO0xFQaKzqY5mRYxYuZcj1IiaLcQP+J38UQyuJgEorm+9yHVEQ/XBWoM83P+Y8TwE5IWTICp1LCVeiFQTGPQ==} + '@polkadot-api/smoldot@0.3.15': + resolution: {integrity: sha512-YyV+ytP8FcmKEgLRV7uXepJ5Y6md/7u2F8HKxmkWytmnGXO1z+umg2pHbOxLGifD9V2NhkPY+awpzErtVIzqAA==} + '@polkadot-api/substrate-bindings@0.16.3': resolution: {integrity: sha512-KN/nghI3SM0t7WsULwLRB3s4DnWogGCi5TuvXB0yPkkiB5GJugMPuHTTUxDkWmjZ0vLUFlmkaZ/sfFf0tvo8xQ==} @@ -1513,6 +1721,9 @@ packages: '@polkadot-api/substrate-client@0.4.7': resolution: {integrity: sha512-Mmx9VKincVqfVQmq89gzDk4DN3uKwf8CxoqYvq+EiPUZ1QmMUc7X4QMwG1MXIlYdnm5LSXzn+2Jn8ik8xMgL+w==} + '@polkadot-api/substrate-client@0.5.0': + resolution: {integrity: sha512-J+gyZONCak+n6NxADZWtldH+gatYORqEScMAgI9gGu43pHUe7/xNRCqnin0dgDIzmuL3m1ERglF8LR7YhB0nHQ==} + '@polkadot-api/utils@0.1.0': resolution: {integrity: sha512-MXzWZeuGxKizPx2Xf/47wx9sr/uxKw39bVJUptTJdsaQn/TGq+z310mHzf1RCGvC1diHM8f593KrnDgc9oNbJA==} @@ -1528,6 +1739,9 @@ packages: '@polkadot-api/ws-provider@0.6.2': resolution: {integrity: sha512-YCllTdysvh30t4YWJubS1G8ULCZTOXGC+x8evbuFUNM1d70gpD98+zi4ba4lZGd1IlZ8v0zJuvC7G+/9Jcrm4w==} + '@polkadot-api/ws-provider@0.7.5': + resolution: {integrity: sha512-2ZLEo0PAFeuOx2DUDkbex85HZMf9lgnmZ8oGB5+NaButIydkoqXy5SHYJNPc45GcZy2tvwzImMZInNMLa5GJhg==} + '@polkadot/api-augment@14.3.1': resolution: {integrity: sha512-PE6DW+8kRhbnGKn7qCF7yM6eEt/kqrY8bh1i0RZcPY9QgwXW4bZZrtMK4WssX6Z70NTEoOW6xHYIjc7gFZuz8g==} engines: {node: '>=18'} @@ -2096,9 +2310,6 @@ packages: vite: optional: true - '@vitest/pretty-format@3.1.3': - resolution: {integrity: sha512-i6FDiBeJUGLDKADw2Gb01UtUNb12yyXAqC/mmRWuYl+m/U9GS7s8us5ONmGkGpUUo7/iAYzI2ePVfOZTYvUifA==} - '@vitest/pretty-format@3.2.4': resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} @@ -2114,19 +2325,16 @@ packages: '@vitest/spy@3.2.4': resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} - '@vitest/ui@3.1.3': - resolution: {integrity: sha512-IipSzX+8DptUdXN/GWq3hq5z18MwnpphYdOMm0WndkRGYELzfq7NDP8dMpZT7JGW1uXFrIGxOW2D0Xi++ulByg==} + '@vitest/ui@3.2.4': + resolution: {integrity: sha512-hGISOaP18plkzbWEcP/QvtRW1xDXF2+96HbEX6byqQhAUbiS5oH6/9JwW+QsQCIYON2bI6QZBF+2PvOmrRZ9wA==} peerDependencies: - vitest: 3.1.3 + vitest: 3.2.4 '@vitest/ui@3.2.6': resolution: {integrity: sha512-mATfG3zVdhobE9U1rIpvtYD3DGuSSxqZ3Aj/8ityGqKXy8YDJ9BoAjZmAz6dZ1IZ1xI5V+MerkCczvVa+3QK9Q==} peerDependencies: vitest: 3.2.6 - '@vitest/utils@3.1.3': - resolution: {integrity: sha512-2Ltrpht4OmHO9+c/nmHtF09HWiyWdworqnHIwjfvDyWjuwKbdkcS9AnhsDn+8E2RM4x++foD1/tNuLPVvWG1Rg==} - '@vitest/utils@3.2.4': resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} @@ -2804,6 +3012,11 @@ packages: es6-error@4.1.1: resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + engines: {node: '>=18'} + hasBin: true + esbuild@0.27.7: resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} engines: {node: '>=18'} @@ -3090,6 +3303,10 @@ packages: resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} + hosted-git-info@9.0.3: + resolution: {integrity: sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==} + engines: {node: ^20.17.0 || >=22.9.0} + html-encoding-sniffer@4.0.0: resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} engines: {node: '>=18'} @@ -3397,6 +3614,9 @@ packages: lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + lodash@4.18.1: resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} @@ -3706,6 +3926,10 @@ packages: resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} engines: {node: ^16.14.0 || >=18.0.0} + normalize-package-data@8.0.0: + resolution: {integrity: sha512-RWk+PI433eESQ7ounYxIp67CYuVsS1uYSonX3kA6ps/3LWfjVQa/ptEg6Y3T6uAMq1mWpX9PQ+qx+QaHpsc7gQ==} + engines: {node: ^20.17.0 || >=22.9.0} + normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -3886,6 +4110,12 @@ packages: peerDependencies: rxjs: '>=7.8.0' + polkadot-api@1.23.3: + resolution: {integrity: sha512-wOWli6Cfk3bO1u/W8qmwriCIKxATkNea8Jyg1jj7GzAqafxy295BYPzYHy2mJZCQ0PAVFPR4/JvCXocTLBsp5A==} + hasBin: true + peerDependencies: + rxjs: '>=7.8.0' + possible-typed-array-names@1.1.0: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} @@ -3999,6 +4229,10 @@ packages: resolution: {integrity: sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==} engines: {node: '>=0.10.0'} + read-pkg@10.1.0: + resolution: {integrity: sha512-I8g2lArQiP78ll51UeMZojewtYgIRCKCWqZEgOO8c/uefTI+XDXvCSXu3+YNUaTNvZzobrL5+SqHjBrByRRTdg==} + engines: {node: '>=20'} + read-pkg@9.0.1: resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} engines: {node: '>=18'} @@ -4182,6 +4416,9 @@ packages: smoldot@2.0.39: resolution: {integrity: sha512-yFMSzI6nkqWFTNao99lBA/TguUFU+bR3A5UGTDd/QqqB12jqzvZnmW/No6l2rKmagt8Qx/KybMNowV/E28znhA==} + smoldot@2.0.40: + resolution: {integrity: sha512-h6XC/kKDLdZBBTI0X8y4ZxmaZ2KYVVB0+5isCQm6j26ljeNjHZUDOV+hf8VyoE23+jg00wrxNJ2IVcIAURxwtg==} + socks-proxy-agent@6.2.1: resolution: {integrity: sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==} engines: {node: '>= 10'} @@ -4210,6 +4447,11 @@ packages: resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} engines: {node: '>= 12'} + source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + deprecated: The work that was done in this beta branch won't be included in future versions + spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} @@ -4422,10 +4664,6 @@ packages: toml@3.0.0: resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} - toml@https://codeload.github.com/pepoviola/toml-node/tar.gz/5e17114f1af5b5b70e4f2ec10cd007623c928988: - resolution: {gitHosted: true, tarball: https://codeload.github.com/pepoviola/toml-node/tar.gz/5e17114f1af5b5b70e4f2ec10cd007623c928988} - version: 3.0.0 - totalist@3.0.1: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} @@ -4437,6 +4675,9 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + tr46@5.1.1: resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} engines: {node: '>=18'} @@ -4474,6 +4715,25 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsup@8.5.0: + resolution: {integrity: sha512-VmBp77lWNQq6PfuMqCHD3xWl22vEoWsKajkF8t+yMBawlUS8JzEI+vOVMeuNZIuMML8qXRizFKi9oD5glKQVcQ==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7.36.0 + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.5.0' + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + tsup@8.5.1: resolution: {integrity: sha512-xtgkqwdhpKWr3tKPmCkvYmS9xnQK3m3XgxZHwSUjvfTjp7YfXe5tT3GgWi0F2N+ZSMsOeWeZFh7ZZFg5iPhing==} engines: {node: '>=18'} @@ -4620,6 +4880,10 @@ packages: resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} engines: {node: '>=18'} + unicorn-magic@0.4.0: + resolution: {integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==} + engines: {node: '>=20'} + unique-filename@1.1.1: resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} @@ -4841,6 +5105,9 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} @@ -4861,6 +5128,9 @@ packages: whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + which-typed-array@1.1.22: resolution: {integrity: sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==} engines: {node: '>= 0.4'} @@ -5456,156 +5726,234 @@ snapshots: '@effect/rpc': 0.72.2(@effect/platform@0.93.8(effect@3.21.3))(effect@3.21.3) effect: 3.21.3 + '@esbuild/aix-ppc64@0.25.12': + optional: true + '@esbuild/aix-ppc64@0.27.7': optional: true '@esbuild/aix-ppc64@0.28.0': optional: true + '@esbuild/android-arm64@0.25.12': + optional: true + '@esbuild/android-arm64@0.27.7': optional: true '@esbuild/android-arm64@0.28.0': optional: true + '@esbuild/android-arm@0.25.12': + optional: true + '@esbuild/android-arm@0.27.7': optional: true '@esbuild/android-arm@0.28.0': optional: true + '@esbuild/android-x64@0.25.12': + optional: true + '@esbuild/android-x64@0.27.7': optional: true '@esbuild/android-x64@0.28.0': optional: true + '@esbuild/darwin-arm64@0.25.12': + optional: true + '@esbuild/darwin-arm64@0.27.7': optional: true '@esbuild/darwin-arm64@0.28.0': optional: true + '@esbuild/darwin-x64@0.25.12': + optional: true + '@esbuild/darwin-x64@0.27.7': optional: true '@esbuild/darwin-x64@0.28.0': optional: true + '@esbuild/freebsd-arm64@0.25.12': + optional: true + '@esbuild/freebsd-arm64@0.27.7': optional: true '@esbuild/freebsd-arm64@0.28.0': optional: true + '@esbuild/freebsd-x64@0.25.12': + optional: true + '@esbuild/freebsd-x64@0.27.7': optional: true '@esbuild/freebsd-x64@0.28.0': optional: true + '@esbuild/linux-arm64@0.25.12': + optional: true + '@esbuild/linux-arm64@0.27.7': optional: true '@esbuild/linux-arm64@0.28.0': optional: true + '@esbuild/linux-arm@0.25.12': + optional: true + '@esbuild/linux-arm@0.27.7': optional: true '@esbuild/linux-arm@0.28.0': optional: true + '@esbuild/linux-ia32@0.25.12': + optional: true + '@esbuild/linux-ia32@0.27.7': optional: true '@esbuild/linux-ia32@0.28.0': optional: true + '@esbuild/linux-loong64@0.25.12': + optional: true + '@esbuild/linux-loong64@0.27.7': optional: true '@esbuild/linux-loong64@0.28.0': optional: true + '@esbuild/linux-mips64el@0.25.12': + optional: true + '@esbuild/linux-mips64el@0.27.7': optional: true '@esbuild/linux-mips64el@0.28.0': optional: true + '@esbuild/linux-ppc64@0.25.12': + optional: true + '@esbuild/linux-ppc64@0.27.7': optional: true '@esbuild/linux-ppc64@0.28.0': optional: true + '@esbuild/linux-riscv64@0.25.12': + optional: true + '@esbuild/linux-riscv64@0.27.7': optional: true '@esbuild/linux-riscv64@0.28.0': optional: true + '@esbuild/linux-s390x@0.25.12': + optional: true + '@esbuild/linux-s390x@0.27.7': optional: true '@esbuild/linux-s390x@0.28.0': optional: true + '@esbuild/linux-x64@0.25.12': + optional: true + '@esbuild/linux-x64@0.27.7': optional: true '@esbuild/linux-x64@0.28.0': optional: true + '@esbuild/netbsd-arm64@0.25.12': + optional: true + '@esbuild/netbsd-arm64@0.27.7': optional: true '@esbuild/netbsd-arm64@0.28.0': optional: true + '@esbuild/netbsd-x64@0.25.12': + optional: true + '@esbuild/netbsd-x64@0.27.7': optional: true '@esbuild/netbsd-x64@0.28.0': optional: true + '@esbuild/openbsd-arm64@0.25.12': + optional: true + '@esbuild/openbsd-arm64@0.27.7': optional: true '@esbuild/openbsd-arm64@0.28.0': optional: true + '@esbuild/openbsd-x64@0.25.12': + optional: true + '@esbuild/openbsd-x64@0.27.7': optional: true '@esbuild/openbsd-x64@0.28.0': optional: true + '@esbuild/openharmony-arm64@0.25.12': + optional: true + '@esbuild/openharmony-arm64@0.27.7': optional: true '@esbuild/openharmony-arm64@0.28.0': optional: true + '@esbuild/sunos-x64@0.25.12': + optional: true + '@esbuild/sunos-x64@0.27.7': optional: true '@esbuild/sunos-x64@0.28.0': optional: true + '@esbuild/win32-arm64@0.25.12': + optional: true + '@esbuild/win32-arm64@0.27.7': optional: true '@esbuild/win32-arm64@0.28.0': optional: true + '@esbuild/win32-ia32@0.25.12': + optional: true + '@esbuild/win32-ia32@0.27.7': optional: true '@esbuild/win32-ia32@0.28.0': optional: true + '@esbuild/win32-x64@0.25.12': + optional: true + '@esbuild/win32-x64@0.27.7': optional: true @@ -6031,7 +6379,7 @@ snapshots: - utf-8-validate - zod - '@moonwall/types@5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@vitest/ui@3.2.6(vitest@3.2.4))(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(typescript@5.8.3)(yaml@2.9.0)(zod@3.25.76)': + '@moonwall/types@5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@vitest/ui@3.2.6)(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(typescript@5.8.3)(yaml@2.8.2)(zod@3.25.76)': dependencies: '@polkadot/api': 16.5.6 '@polkadot/api-base': 16.5.6 @@ -6043,9 +6391,9 @@ snapshots: '@zombienet/utils': 0.0.30(@types/node@24.13.1)(chokidar@3.6.0)(typescript@5.8.3) bottleneck: 2.19.5 ethers: 6.16.0 - polkadot-api: 1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.9.0) + polkadot-api: 1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.8.2) viem: 2.41.2(typescript@5.8.3)(zod@3.25.76) - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.13.1)(@vitest/ui@3.2.6(vitest@3.2.4))(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.9.0) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.13.1)(@vitest/ui@3.2.6)(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.8.2) web3: 4.16.0(encoding@0.1.13)(typescript@5.8.3)(zod@3.25.76) transitivePeerDependencies: - '@edge-runtime/vm' @@ -6078,153 +6426,44 @@ snapshots: - yaml - zod - '@moonwall/types@5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@vitest/ui@3.2.6)(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(typescript@5.8.3)(yaml@2.8.2)(zod@3.25.76)': + '@moonwall/util@5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api-derive@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/rpc-provider@16.5.6)(@polkadot/types-codec@16.5.6)(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@types/node@25.9.2)(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(typescript@5.8.3)(yaml@2.8.2)(zod@3.25.76)': dependencies: + '@inquirer/prompts': 8.5.2(@types/node@25.9.2) + '@moonwall/types': 5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@vitest/ui@3.2.6)(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(typescript@5.8.3)(yaml@2.8.2)(zod@3.25.76) '@polkadot/api': 16.5.6 - '@polkadot/api-base': 16.5.6 + '@polkadot/api-derive': 16.5.6 '@polkadot/keyring': 14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3) + '@polkadot/rpc-provider': 16.5.6 '@polkadot/types': 16.5.6 + '@polkadot/types-codec': 16.5.6 '@polkadot/util': 14.0.3 '@polkadot/util-crypto': 14.0.3(@polkadot/util@14.0.3) - '@types/node': 24.13.1 - '@zombienet/utils': 0.0.30(@types/node@24.13.1)(chokidar@3.6.0)(typescript@5.8.3) + '@vitest/ui': 3.2.6(vitest@3.2.4) + arkregex: 0.0.4 bottleneck: 2.19.5 + chalk: 5.6.2 + clear: 0.1.0 + colors: 1.4.0 + dotenv: 17.2.3 ethers: 6.16.0 - polkadot-api: 1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.8.2) + pino: 10.3.1 + pino-pretty: 13.1.3 + rlp: 3.0.0 + semver: 7.8.2 + tiny-invariant: 1.3.3 viem: 2.41.2(typescript@5.8.3)(zod@3.25.76) - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.13.1)(@vitest/ui@3.2.6)(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.8.2) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@25.9.2)(@vitest/ui@3.2.6)(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.8.2) web3: 4.16.0(encoding@0.1.13)(typescript@5.8.3)(zod@3.25.76) + ws: 8.21.0 + yargs: 18.0.0 transitivePeerDependencies: - '@edge-runtime/vm' - '@microsoft/api-extractor' + - '@polkadot/api-base' - '@swc/core' - '@swc/wasm' - '@types/debug' - - '@vitest/browser' - - '@vitest/ui' - - bufferutil - - chokidar - - encoding - - happy-dom - - jiti - - jsdom - - less - - lightningcss - - msw - - postcss - - rxjs - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - typescript - - utf-8-validate - - yaml - - zod - - '@moonwall/util@5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api-derive@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/rpc-provider@16.5.6)(@polkadot/types-codec@16.5.6)(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@types/node@25.9.2)(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(typescript@5.8.3)(yaml@2.8.2)(zod@3.25.76)': - dependencies: - '@inquirer/prompts': 8.5.2(@types/node@25.9.2) - '@moonwall/types': 5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@vitest/ui@3.2.6)(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(typescript@5.8.3)(yaml@2.8.2)(zod@3.25.76) - '@polkadot/api': 16.5.6 - '@polkadot/api-derive': 16.5.6 - '@polkadot/keyring': 14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3) - '@polkadot/rpc-provider': 16.5.6 - '@polkadot/types': 16.5.6 - '@polkadot/types-codec': 16.5.6 - '@polkadot/util': 14.0.3 - '@polkadot/util-crypto': 14.0.3(@polkadot/util@14.0.3) - '@vitest/ui': 3.2.6(vitest@3.2.4) - arkregex: 0.0.4 - bottleneck: 2.19.5 - chalk: 5.6.2 - clear: 0.1.0 - colors: 1.4.0 - dotenv: 17.2.3 - ethers: 6.16.0 - pino: 10.3.1 - pino-pretty: 13.1.3 - rlp: 3.0.0 - semver: 7.8.2 - tiny-invariant: 1.3.3 - viem: 2.41.2(typescript@5.8.3)(zod@3.25.76) - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@25.9.2)(@vitest/ui@3.2.6)(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.8.2) - web3: 4.16.0(encoding@0.1.13)(typescript@5.8.3)(zod@3.25.76) - ws: 8.21.0 - yargs: 18.0.0 - transitivePeerDependencies: - - '@edge-runtime/vm' - - '@microsoft/api-extractor' - - '@polkadot/api-base' - - '@swc/core' - - '@swc/wasm' - - '@types/debug' - - '@types/node' - - '@vitest/browser' - - bufferutil - - chokidar - - encoding - - happy-dom - - jiti - - jsdom - - less - - lightningcss - - msw - - postcss - - rxjs - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - typescript - - utf-8-validate - - yaml - - zod - - '@moonwall/util@5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api-derive@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/rpc-provider@16.5.6)(@polkadot/types-codec@16.5.6)(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@types/node@25.9.2)(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(typescript@5.8.3)(yaml@2.9.0)(zod@3.25.76)': - dependencies: - '@inquirer/prompts': 8.5.2(@types/node@25.9.2) - '@moonwall/types': 5.18.3(@polkadot/api-base@16.5.6)(@polkadot/api@16.5.6)(@polkadot/keyring@14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3))(@polkadot/types@16.5.6)(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3)(@types/debug@4.1.12)(@vitest/ui@3.2.6(vitest@3.2.4))(chokidar@3.6.0)(encoding@0.1.13)(jsdom@23.2.0)(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(typescript@5.8.3)(yaml@2.9.0)(zod@3.25.76) - '@polkadot/api': 16.5.6 - '@polkadot/api-derive': 16.5.6 - '@polkadot/keyring': 14.0.3(@polkadot/util-crypto@14.0.3(@polkadot/util@14.0.3))(@polkadot/util@14.0.3) - '@polkadot/rpc-provider': 16.5.6 - '@polkadot/types': 16.5.6 - '@polkadot/types-codec': 16.5.6 - '@polkadot/util': 14.0.3 - '@polkadot/util-crypto': 14.0.3(@polkadot/util@14.0.3) - '@vitest/ui': 3.2.6(vitest@3.2.4) - arkregex: 0.0.4 - bottleneck: 2.19.5 - chalk: 5.6.2 - clear: 0.1.0 - colors: 1.4.0 - dotenv: 17.2.3 - ethers: 6.16.0 - pino: 10.3.1 - pino-pretty: 13.1.3 - rlp: 3.0.0 - semver: 7.8.2 - tiny-invariant: 1.3.3 - viem: 2.41.2(typescript@5.8.3)(zod@3.25.76) - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@25.9.2)(@vitest/ui@3.2.6(vitest@3.2.4))(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.9.0) - web3: 4.16.0(encoding@0.1.13)(typescript@5.8.3)(zod@3.25.76) - ws: 8.21.0 - yargs: 18.0.0 - transitivePeerDependencies: - - '@edge-runtime/vm' - - '@microsoft/api-extractor' - - '@polkadot/api-base' - - '@swc/core' - - '@swc/wasm' - - '@types/debug' - - '@types/node' + - '@types/node' - '@vitest/browser' - bufferutil - chokidar @@ -6501,33 +6740,33 @@ snapshots: - utf-8-validate - yaml - '@polkadot-api/cli@0.15.2(postcss@8.5.15)(tsx@4.22.4)(yaml@2.9.0)': + '@polkadot-api/cli@0.18.1(postcss@8.5.15)(tsx@4.22.4)(yaml@2.8.2)': dependencies: '@commander-js/extra-typings': 14.0.0(commander@14.0.3) - '@polkadot-api/codegen': 0.19.1 - '@polkadot-api/ink-contracts': 0.4.0 + '@polkadot-api/codegen': 0.21.2 + '@polkadot-api/ink-contracts': 0.4.6 '@polkadot-api/json-rpc-provider': 0.0.4 - '@polkadot-api/known-chains': 0.9.11 - '@polkadot-api/legacy-provider': 0.3.2(rxjs@7.8.2) - '@polkadot-api/metadata-compatibility': 0.3.6 - '@polkadot-api/observable-client': 0.15.1(rxjs@7.8.2) - '@polkadot-api/polkadot-sdk-compat': 2.3.3 - '@polkadot-api/sm-provider': 0.1.11(@polkadot-api/smoldot@0.3.14) - '@polkadot-api/smoldot': 0.3.14 - '@polkadot-api/substrate-bindings': 0.16.3 - '@polkadot-api/substrate-client': 0.4.7 + '@polkadot-api/known-chains': 0.9.18 + '@polkadot-api/legacy-provider': 0.3.8(rxjs@7.8.2) + '@polkadot-api/metadata-compatibility': 0.4.4 + '@polkadot-api/observable-client': 0.17.3(rxjs@7.8.2) + '@polkadot-api/polkadot-sdk-compat': 2.4.1 + '@polkadot-api/sm-provider': 0.1.16(@polkadot-api/smoldot@0.3.15) + '@polkadot-api/smoldot': 0.3.15 + '@polkadot-api/substrate-bindings': 0.17.0 + '@polkadot-api/substrate-client': 0.5.0 '@polkadot-api/utils': 0.2.0 '@polkadot-api/wasm-executor': 0.2.3 - '@polkadot-api/ws-provider': 0.6.2 - '@types/node': 24.13.1 + '@polkadot-api/ws-provider': 0.7.5 + '@types/node': 25.9.2 commander: 14.0.3 execa: 9.6.1 fs.promises.exists: 1.1.4 ora: 9.4.0 - read-pkg: 9.0.1 + read-pkg: 10.1.0 rxjs: 7.8.2 tsc-prog: 2.3.0(typescript@5.9.3) - tsup: 8.5.1(postcss@8.5.15)(tsx@4.22.4)(typescript@5.9.3)(yaml@2.9.0) + tsup: 8.5.0(postcss@8.5.15)(tsx@4.22.4)(typescript@5.9.3)(yaml@2.8.2) typescript: 5.9.3 write-package: 7.2.0 transitivePeerDependencies: @@ -6549,14 +6788,22 @@ snapshots: '@polkadot-api/substrate-bindings': 0.16.3 '@polkadot-api/utils': 0.2.0 - '@polkadot-api/common-sdk-utils@0.1.0(polkadot-api@1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.9.0))(rxjs@7.8.2)': + '@polkadot-api/codegen@0.21.2': dependencies: - polkadot-api: 1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.9.0) + '@polkadot-api/ink-contracts': 0.4.6 + '@polkadot-api/metadata-builders': 0.13.9 + '@polkadot-api/metadata-compatibility': 0.4.4 + '@polkadot-api/substrate-bindings': 0.17.0 + '@polkadot-api/utils': 0.2.0 + + '@polkadot-api/common-sdk-utils@0.1.0(polkadot-api@1.23.3(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.8.2))(rxjs@7.8.2)': + dependencies: + polkadot-api: 1.23.3(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.8.2) rxjs: 7.8.2 - '@polkadot-api/descriptors@file:.papi/descriptors(polkadot-api@1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.9.0))': + '@polkadot-api/descriptors@file:.papi/descriptors(polkadot-api@1.23.3(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.8.2))': dependencies: - polkadot-api: 1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.9.0) + polkadot-api: 1.23.3(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.8.2) optional: true '@polkadot-api/ink-contracts@0.4.0': @@ -6576,6 +6823,8 @@ snapshots: '@polkadot-api/json-rpc-provider-proxy@0.2.4': {} + '@polkadot-api/json-rpc-provider-proxy@0.2.8': {} + '@polkadot-api/json-rpc-provider@0.0.1': optional: true @@ -6583,6 +6832,8 @@ snapshots: '@polkadot-api/known-chains@0.9.11': {} + '@polkadot-api/known-chains@0.9.18': {} + '@polkadot-api/legacy-provider@0.3.2(rxjs@7.8.2)': dependencies: '@polkadot-api/json-rpc-provider': 0.0.4 @@ -6591,6 +6842,14 @@ snapshots: '@polkadot-api/utils': 0.2.0 rxjs: 7.8.2 + '@polkadot-api/legacy-provider@0.3.8(rxjs@7.8.2)': + dependencies: + '@polkadot-api/json-rpc-provider': 0.0.4 + '@polkadot-api/raw-client': 0.1.1 + '@polkadot-api/substrate-bindings': 0.17.0 + '@polkadot-api/utils': 0.2.0 + rxjs: 7.8.2 + '@polkadot-api/logs-provider@0.0.6': dependencies: '@polkadot-api/json-rpc-provider': 0.0.4 @@ -6601,6 +6860,12 @@ snapshots: '@polkadot-api/substrate-bindings': 0.16.3 '@polkadot-api/utils': 0.2.0 + '@polkadot-api/merkleize-metadata@1.1.29': + dependencies: + '@polkadot-api/metadata-builders': 0.13.9 + '@polkadot-api/substrate-bindings': 0.17.0 + '@polkadot-api/utils': 0.2.0 + '@polkadot-api/merkleize-metadata@1.2.3': dependencies: '@polkadot-api/metadata-builders': 0.14.3 @@ -6633,6 +6898,11 @@ snapshots: '@polkadot-api/metadata-builders': 0.13.5 '@polkadot-api/substrate-bindings': 0.16.3 + '@polkadot-api/metadata-compatibility@0.4.4': + dependencies: + '@polkadot-api/metadata-builders': 0.13.9 + '@polkadot-api/substrate-bindings': 0.17.0 + '@polkadot-api/observable-client@0.15.1(rxjs@7.8.2)': dependencies: '@polkadot-api/metadata-builders': 0.13.5 @@ -6641,6 +6911,14 @@ snapshots: '@polkadot-api/utils': 0.2.0 rxjs: 7.8.2 + '@polkadot-api/observable-client@0.17.3(rxjs@7.8.2)': + dependencies: + '@polkadot-api/metadata-builders': 0.13.9 + '@polkadot-api/substrate-bindings': 0.17.0 + '@polkadot-api/substrate-client': 0.5.0 + '@polkadot-api/utils': 0.2.0 + rxjs: 7.8.2 + '@polkadot-api/observable-client@0.3.2(@polkadot-api/substrate-client@0.1.4)(rxjs@7.8.2)': dependencies: '@polkadot-api/metadata-builders': 0.3.2 @@ -6658,24 +6936,36 @@ snapshots: '@polkadot-api/substrate-bindings': 0.16.3 '@polkadot-api/utils': 0.2.0 + '@polkadot-api/pjs-signer@0.6.19': + dependencies: + '@polkadot-api/metadata-builders': 0.13.9 + '@polkadot-api/polkadot-signer': 0.1.6 + '@polkadot-api/signers-common': 0.1.20 + '@polkadot-api/substrate-bindings': 0.17.0 + '@polkadot-api/utils': 0.2.0 + '@polkadot-api/polkadot-sdk-compat@2.3.3': dependencies: '@polkadot-api/json-rpc-provider': 0.0.4 + '@polkadot-api/polkadot-sdk-compat@2.4.1': + dependencies: + '@polkadot-api/json-rpc-provider': 0.0.4 + '@polkadot-api/polkadot-signer@0.1.6': {} '@polkadot-api/raw-client@0.1.1': dependencies: '@polkadot-api/json-rpc-provider': 0.0.4 - '@polkadot-api/sdk-ink@0.5.1(@polkadot-api/ink-contracts@0.4.6)(polkadot-api@1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.9.0))(rxjs@7.8.2)(typescript@5.8.3)(zod@3.25.76)': + '@polkadot-api/sdk-ink@0.5.1(@polkadot-api/ink-contracts@0.4.6)(polkadot-api@1.23.3(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.8.2))(rxjs@7.8.2)(typescript@5.8.3)(zod@3.25.76)': dependencies: '@ethereumjs/rlp': 10.1.2 - '@polkadot-api/common-sdk-utils': 0.1.0(polkadot-api@1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.9.0))(rxjs@7.8.2) + '@polkadot-api/common-sdk-utils': 0.1.0(polkadot-api@1.23.3(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.8.2))(rxjs@7.8.2) '@polkadot-api/ink-contracts': 0.4.6 '@polkadot-api/substrate-bindings': 0.16.6 abitype: 1.2.4(typescript@5.8.3)(zod@3.25.76) - polkadot-api: 1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.9.0) + polkadot-api: 1.23.3(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.8.2) rxjs: 7.8.2 viem: 2.38.0(typescript@5.8.3)(zod@3.25.76) transitivePeerDependencies: @@ -6684,6 +6974,15 @@ snapshots: - utf-8-validate - zod + '@polkadot-api/signer@0.2.13': + dependencies: + '@noble/hashes': 2.2.0 + '@polkadot-api/merkleize-metadata': 1.1.29 + '@polkadot-api/polkadot-signer': 0.1.6 + '@polkadot-api/signers-common': 0.1.20 + '@polkadot-api/substrate-bindings': 0.17.0 + '@polkadot-api/utils': 0.2.0 + '@polkadot-api/signer@0.2.9': dependencies: '@noble/hashes': 2.2.0 @@ -6700,12 +6999,25 @@ snapshots: '@polkadot-api/substrate-bindings': 0.16.3 '@polkadot-api/utils': 0.2.0 + '@polkadot-api/signers-common@0.1.20': + dependencies: + '@polkadot-api/metadata-builders': 0.13.9 + '@polkadot-api/polkadot-signer': 0.1.6 + '@polkadot-api/substrate-bindings': 0.17.0 + '@polkadot-api/utils': 0.2.0 + '@polkadot-api/sm-provider@0.1.11(@polkadot-api/smoldot@0.3.14)': dependencies: '@polkadot-api/json-rpc-provider': 0.0.4 '@polkadot-api/json-rpc-provider-proxy': 0.2.4 '@polkadot-api/smoldot': 0.3.14 + '@polkadot-api/sm-provider@0.1.16(@polkadot-api/smoldot@0.3.15)': + dependencies: + '@polkadot-api/json-rpc-provider': 0.0.4 + '@polkadot-api/json-rpc-provider-proxy': 0.2.8 + '@polkadot-api/smoldot': 0.3.15 + '@polkadot-api/smoldot@0.3.14': dependencies: '@types/node': 24.13.1 @@ -6714,6 +7026,14 @@ snapshots: - bufferutil - utf-8-validate + '@polkadot-api/smoldot@0.3.15': + dependencies: + '@types/node': 24.13.1 + smoldot: 2.0.40 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + '@polkadot-api/substrate-bindings@0.16.3': dependencies: '@noble/hashes': 2.2.0 @@ -6762,6 +7082,12 @@ snapshots: '@polkadot-api/raw-client': 0.1.1 '@polkadot-api/utils': 0.2.0 + '@polkadot-api/substrate-client@0.5.0': + dependencies: + '@polkadot-api/json-rpc-provider': 0.0.4 + '@polkadot-api/raw-client': 0.1.1 + '@polkadot-api/utils': 0.2.0 + '@polkadot-api/utils@0.1.0': optional: true @@ -6781,6 +7107,16 @@ snapshots: - bufferutil - utf-8-validate + '@polkadot-api/ws-provider@0.7.5': + dependencies: + '@polkadot-api/json-rpc-provider': 0.0.4 + '@polkadot-api/json-rpc-provider-proxy': 0.2.8 + '@types/ws': 8.18.1 + ws: 8.21.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + '@polkadot/api-augment@14.3.1': dependencies: '@polkadot/api-base': 14.3.1 @@ -7660,10 +7996,6 @@ snapshots: optionalDependencies: vite: 7.3.5(@types/node@25.9.2)(tsx@4.22.4)(yaml@2.9.0) - '@vitest/pretty-format@3.1.3': - dependencies: - tinyrainbow: 2.0.0 - '@vitest/pretty-format@3.2.4': dependencies: tinyrainbow: 2.0.0 @@ -7688,16 +8020,16 @@ snapshots: dependencies: tinyspy: 4.0.4 - '@vitest/ui@3.1.3(vitest@3.2.4)': + '@vitest/ui@3.2.4(vitest@3.2.4)': dependencies: - '@vitest/utils': 3.1.3 + '@vitest/utils': 3.2.4 fflate: 0.8.3 flatted: 3.4.2 pathe: 2.0.3 sirv: 3.0.2 tinyglobby: 0.2.17 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@25.9.2)(@vitest/ui@3.1.3)(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.9.0) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@25.9.2)(@vitest/ui@3.2.4)(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.9.0) '@vitest/ui@3.2.6(vitest@3.2.4)': dependencies: @@ -7708,13 +8040,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.17 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@25.9.2)(@vitest/ui@3.1.3)(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.9.0) - - '@vitest/utils@3.1.3': - dependencies: - '@vitest/pretty-format': 3.1.3 - loupe: 3.2.1 - tinyrainbow: 2.0.0 + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@25.9.2)(@vitest/ui@3.2.4)(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.9.0) '@vitest/utils@3.2.4': dependencies: @@ -7798,7 +8124,7 @@ snapshots: debug: 4.3.7(supports-color@8.1.1) mocha: 10.8.2 nunjucks: 3.2.4(chokidar@3.6.0) - toml: https://codeload.github.com/pepoviola/toml-node/tar.gz/5e17114f1af5b5b70e4f2ec10cd007623c928988 + toml: 3.0.0 ts-node: 10.9.2(@types/node@25.9.2)(typescript@5.8.3) transitivePeerDependencies: - '@swc/core' @@ -7814,7 +8140,7 @@ snapshots: debug: 4.4.3 mocha: 10.8.2 nunjucks: 3.2.4(chokidar@3.6.0) - toml: https://codeload.github.com/pepoviola/toml-node/tar.gz/5e17114f1af5b5b70e4f2ec10cd007623c928988 + toml: 3.0.0 ts-node: 10.9.2(@types/node@24.13.1)(typescript@5.8.3) transitivePeerDependencies: - '@swc/core' @@ -7830,7 +8156,7 @@ snapshots: debug: 4.4.3 mocha: 10.8.2 nunjucks: 3.2.4(chokidar@3.6.0) - toml: https://codeload.github.com/pepoviola/toml-node/tar.gz/5e17114f1af5b5b70e4f2ec10cd007623c928988 + toml: 3.0.0 ts-node: 10.9.2(@types/node@25.9.2)(typescript@5.8.3) transitivePeerDependencies: - '@swc/core' @@ -8033,6 +8359,11 @@ snapshots: buildcheck@0.0.7: optional: true + bundle-require@5.1.0(esbuild@0.25.12): + dependencies: + esbuild: 0.25.12 + load-tsconfig: 0.2.5 + bundle-require@5.1.0(esbuild@0.27.7): dependencies: esbuild: 0.27.7 @@ -8450,6 +8781,35 @@ snapshots: es6-error@4.1.1: {} + esbuild@0.25.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 + esbuild@0.27.7: optionalDependencies: '@esbuild/aix-ppc64': 0.27.7 @@ -8813,6 +9173,10 @@ snapshots: dependencies: lru-cache: 10.4.3 + hosted-git-info@9.0.3: + dependencies: + lru-cache: 11.5.1 + html-encoding-sniffer@4.0.0: dependencies: whatwg-encoding: 3.1.1 @@ -9135,6 +9499,8 @@ snapshots: lodash.camelcase@4.3.0: {} + lodash.sortby@4.7.0: {} + lodash@4.18.1: {} log-symbols@4.1.0: @@ -9471,6 +9837,12 @@ snapshots: semver: 7.8.2 validate-npm-package-license: 3.0.4 + normalize-package-data@8.0.0: + dependencies: + hosted-git-info: 9.0.3 + semver: 7.8.2 + validate-npm-package-license: 3.0.4 + normalize-path@3.0.0: {} npm-run-path@4.0.1: @@ -9704,26 +10076,26 @@ snapshots: - utf-8-validate - yaml - polkadot-api@1.19.2(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.9.0): + polkadot-api@1.23.3(postcss@8.5.15)(rxjs@7.8.2)(tsx@4.22.4)(yaml@2.8.2): dependencies: - '@polkadot-api/cli': 0.15.2(postcss@8.5.15)(tsx@4.22.4)(yaml@2.9.0) - '@polkadot-api/ink-contracts': 0.4.0 + '@polkadot-api/cli': 0.18.1(postcss@8.5.15)(tsx@4.22.4)(yaml@2.8.2) + '@polkadot-api/ink-contracts': 0.4.6 '@polkadot-api/json-rpc-provider': 0.0.4 - '@polkadot-api/known-chains': 0.9.11 + '@polkadot-api/known-chains': 0.9.18 '@polkadot-api/logs-provider': 0.0.6 - '@polkadot-api/metadata-builders': 0.13.5 - '@polkadot-api/metadata-compatibility': 0.3.6 - '@polkadot-api/observable-client': 0.15.1(rxjs@7.8.2) - '@polkadot-api/pjs-signer': 0.6.15 - '@polkadot-api/polkadot-sdk-compat': 2.3.3 + '@polkadot-api/metadata-builders': 0.13.9 + '@polkadot-api/metadata-compatibility': 0.4.4 + '@polkadot-api/observable-client': 0.17.3(rxjs@7.8.2) + '@polkadot-api/pjs-signer': 0.6.19 + '@polkadot-api/polkadot-sdk-compat': 2.4.1 '@polkadot-api/polkadot-signer': 0.1.6 - '@polkadot-api/signer': 0.2.9 - '@polkadot-api/sm-provider': 0.1.11(@polkadot-api/smoldot@0.3.14) - '@polkadot-api/smoldot': 0.3.14 - '@polkadot-api/substrate-bindings': 0.16.3 - '@polkadot-api/substrate-client': 0.4.7 + '@polkadot-api/signer': 0.2.13 + '@polkadot-api/sm-provider': 0.1.16(@polkadot-api/smoldot@0.3.15) + '@polkadot-api/smoldot': 0.3.15 + '@polkadot-api/substrate-bindings': 0.17.0 + '@polkadot-api/substrate-client': 0.5.0 '@polkadot-api/utils': 0.2.0 - '@polkadot-api/ws-provider': 0.6.2 + '@polkadot-api/ws-provider': 0.7.5 '@rx-state/core': 0.1.4(rxjs@7.8.2) rxjs: 7.8.2 transitivePeerDependencies: @@ -9747,14 +10119,6 @@ snapshots: tsx: 4.22.4 yaml: 2.8.2 - postcss-load-config@6.0.1(postcss@8.5.15)(tsx@4.22.4)(yaml@2.9.0): - dependencies: - lilconfig: 3.1.3 - optionalDependencies: - postcss: 8.5.15 - tsx: 4.22.4 - yaml: 2.9.0 - postcss@8.5.15: dependencies: nanoid: 3.3.12 @@ -9870,6 +10234,14 @@ snapshots: react@19.2.7: {} + read-pkg@10.1.0: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 8.0.0 + parse-json: 8.3.0 + type-fest: 5.7.0 + unicorn-magic: 0.4.0 + read-pkg@9.0.1: dependencies: '@types/normalize-package-data': 2.4.4 @@ -10077,6 +10449,13 @@ snapshots: - bufferutil - utf-8-validate + smoldot@2.0.40: + dependencies: + ws: 8.21.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + socks-proxy-agent@6.2.1(supports-color@8.1.1): dependencies: agent-base: 6.0.2(supports-color@8.1.1) @@ -10116,6 +10495,10 @@ snapshots: source-map@0.7.6: {} + source-map@0.8.0-beta.0: + dependencies: + whatwg-url: 7.1.0 + spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 @@ -10348,8 +10731,6 @@ snapshots: toml@3.0.0: {} - toml@https://codeload.github.com/pepoviola/toml-node/tar.gz/5e17114f1af5b5b70e4f2ec10cd007623c928988: {} - totalist@3.0.1: {} tough-cookie@4.1.4: @@ -10361,6 +10742,10 @@ snapshots: tr46@0.0.3: {} + tr46@1.0.1: + dependencies: + punycode: 2.3.1 + tr46@5.1.1: dependencies: punycode: 2.3.1 @@ -10413,21 +10798,21 @@ snapshots: tslib@2.8.1: {} - tsup@8.5.1(postcss@8.5.15)(tsx@4.22.4)(typescript@5.9.3)(yaml@2.8.2): + tsup@8.5.0(postcss@8.5.15)(tsx@4.22.4)(typescript@5.9.3)(yaml@2.8.2): dependencies: - bundle-require: 5.1.0(esbuild@0.27.7) + bundle-require: 5.1.0(esbuild@0.25.12) cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.2 debug: 4.4.3 - esbuild: 0.27.7 + esbuild: 0.25.12 fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 postcss-load-config: 6.0.1(postcss@8.5.15)(tsx@4.22.4)(yaml@2.8.2) resolve-from: 5.0.0 rollup: 4.61.1 - source-map: 0.7.6 + source-map: 0.8.0-beta.0 sucrase: 3.35.1 tinyexec: 0.3.2 tinyglobby: 0.2.17 @@ -10441,7 +10826,7 @@ snapshots: - tsx - yaml - tsup@8.5.1(postcss@8.5.15)(tsx@4.22.4)(typescript@5.9.3)(yaml@2.9.0): + tsup@8.5.1(postcss@8.5.15)(tsx@4.22.4)(typescript@5.9.3)(yaml@2.8.2): dependencies: bundle-require: 5.1.0(esbuild@0.27.7) cac: 6.7.14 @@ -10452,7 +10837,7 @@ snapshots: fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(postcss@8.5.15)(tsx@4.22.4)(yaml@2.9.0) + postcss-load-config: 6.0.1(postcss@8.5.15)(tsx@4.22.4)(yaml@2.8.2) resolve-from: 5.0.0 rollup: 4.61.1 source-map: 0.7.6 @@ -10570,6 +10955,8 @@ snapshots: unicorn-magic@0.3.0: {} + unicorn-magic@0.4.0: {} + unique-filename@1.1.1: dependencies: unique-slug: 2.0.2 @@ -10667,27 +11054,6 @@ snapshots: - tsx - yaml - vite-node@3.2.4(@types/node@24.13.1)(tsx@4.22.4)(yaml@2.9.0): - dependencies: - cac: 6.7.14 - debug: 4.4.3 - es-module-lexer: 1.7.0 - pathe: 2.0.3 - vite: 7.3.5(@types/node@24.13.1)(tsx@4.22.4)(yaml@2.9.0) - transitivePeerDependencies: - - '@types/node' - - jiti - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - vite-node@3.2.4(@types/node@25.9.2)(tsx@4.22.4)(yaml@2.8.2): dependencies: cac: 6.7.14 @@ -10744,20 +11110,6 @@ snapshots: tsx: 4.22.4 yaml: 2.8.2 - vite@7.3.5(@types/node@24.13.1)(tsx@4.22.4)(yaml@2.9.0): - dependencies: - esbuild: 0.27.7 - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 - postcss: 8.5.15 - rollup: 4.61.1 - tinyglobby: 0.2.17 - optionalDependencies: - '@types/node': 24.13.1 - fsevents: 2.3.3 - tsx: 4.22.4 - yaml: 2.9.0 - vite@7.3.5(@types/node@25.9.2)(tsx@4.22.4)(yaml@2.8.2): dependencies: esbuild: 0.27.7 @@ -10786,50 +11138,6 @@ snapshots: tsx: 4.22.4 yaml: 2.9.0 - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.13.1)(@vitest/ui@3.2.6(vitest@3.2.4))(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.9.0): - dependencies: - '@types/chai': 5.2.3 - '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.3.5(@types/node@25.9.2)(tsx@4.22.4)(yaml@2.9.0)) - '@vitest/pretty-format': 3.2.6 - '@vitest/runner': 3.2.4 - '@vitest/snapshot': 3.2.4 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.3.3 - debug: 4.4.3 - expect-type: 1.3.0 - magic-string: 0.30.21 - pathe: 2.0.3 - picomatch: 4.0.4 - std-env: 3.10.0 - tinybench: 2.9.0 - tinyexec: 0.3.2 - tinyglobby: 0.2.17 - tinypool: 1.1.1 - tinyrainbow: 2.0.0 - vite: 7.3.5(@types/node@24.13.1)(tsx@4.22.4)(yaml@2.9.0) - vite-node: 3.2.4(@types/node@24.13.1)(tsx@4.22.4)(yaml@2.9.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/debug': 4.1.12 - '@types/node': 24.13.1 - '@vitest/ui': 3.2.6(vitest@3.2.4) - jsdom: 23.2.0 - transitivePeerDependencies: - - jiti - - less - - lightningcss - - msw - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.13.1)(@vitest/ui@3.2.6)(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.8.2): dependencies: '@types/chai': 5.2.3 @@ -10874,7 +11182,7 @@ snapshots: - tsx - yaml - vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.9.2)(@vitest/ui@3.1.3)(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.9.0): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.9.2)(@vitest/ui@3.2.4)(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.9.0): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 @@ -10902,51 +11210,7 @@ snapshots: optionalDependencies: '@types/debug': 4.1.12 '@types/node': 25.9.2 - '@vitest/ui': 3.1.3(vitest@3.2.4) - jsdom: 23.2.0 - transitivePeerDependencies: - - jiti - - less - - lightningcss - - msw - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - - vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.9.2)(@vitest/ui@3.2.6(vitest@3.2.4))(jsdom@23.2.0)(tsx@4.22.4)(yaml@2.9.0): - dependencies: - '@types/chai': 5.2.3 - '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.3.5(@types/node@25.9.2)(tsx@4.22.4)(yaml@2.9.0)) - '@vitest/pretty-format': 3.2.6 - '@vitest/runner': 3.2.4 - '@vitest/snapshot': 3.2.4 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.3.3 - debug: 4.4.3 - expect-type: 1.3.0 - magic-string: 0.30.21 - pathe: 2.0.3 - picomatch: 4.0.4 - std-env: 3.10.0 - tinybench: 2.9.0 - tinyexec: 0.3.2 - tinyglobby: 0.2.17 - tinypool: 1.1.1 - tinyrainbow: 2.0.0 - vite: 7.3.5(@types/node@25.9.2)(tsx@4.22.4)(yaml@2.9.0) - vite-node: 3.2.4(@types/node@25.9.2)(tsx@4.22.4)(yaml@2.9.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/debug': 4.1.12 - '@types/node': 25.9.2 - '@vitest/ui': 3.2.6(vitest@3.2.4) + '@vitest/ui': 3.2.4(vitest@3.2.4) jsdom: 23.2.0 transitivePeerDependencies: - jiti @@ -11265,6 +11529,8 @@ snapshots: webidl-conversions@3.0.1: {} + webidl-conversions@4.0.2: {} + webidl-conversions@7.0.0: {} whatwg-encoding@3.1.1: @@ -11283,6 +11549,12 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 + whatwg-url@7.1.0: + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + which-typed-array@1.1.22: dependencies: available-typed-arrays: 1.0.7 diff --git a/ts-tests/suites/zombienet_evm/03-wasm-contract.test.ts b/ts-tests/suites/zombienet_evm/03-wasm-contract.test.ts index 70af3f5c9a..2caef4cb96 100644 --- a/ts-tests/suites/zombienet_evm/03-wasm-contract.test.ts +++ b/ts-tests/suites/zombienet_evm/03-wasm-contract.test.ts @@ -1,10 +1,9 @@ -import { describeSuite } from "@moonwall/cli"; +import { beforeAll, beforeEach, describeSuite, expect } from "@moonwall/cli"; import { contracts, MultiAddress, subtensor } from "@polkadot-api/descriptors"; -import { getInkClient } from "@polkadot-api/ink-contracts"; +import { getInkClient, InkClient } from "@polkadot-api/ink-contracts"; import type { KeyringPair } from "@polkadot/keyring/types"; import fs from "node:fs"; import { Binary, type TypedApi } from "polkadot-api"; -import { beforeAll, beforeEach, expect } from "vitest"; import { addNewSubnetwork, BITTENSOR_WASM_PATH, @@ -53,7 +52,7 @@ describeSuite({ let coldkey2: KeyringPair; let netuid = 0; let contractAddress = ""; - let inkClient: ReturnType; + let inkClient: InkClient; async function addStakeViaContract(addStakeToContract: boolean) { if (contractAddress === "") { From bf813e26ce5f263c7258756252af83020f2d0737 Mon Sep 17 00:00:00 2001 From: open-junius Date: Wed, 17 Jun 2026 09:37:12 +0800 Subject: [PATCH 21/36] fix one test --- ts-tests/suites/zombienet_evm/05-direct-call-precompile.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ts-tests/suites/zombienet_evm/05-direct-call-precompile.test.ts b/ts-tests/suites/zombienet_evm/05-direct-call-precompile.test.ts index 45dfc1491c..337be91bd1 100644 --- a/ts-tests/suites/zombienet_evm/05-direct-call-precompile.test.ts +++ b/ts-tests/suites/zombienet_evm/05-direct-call-precompile.test.ts @@ -298,7 +298,7 @@ describeSuite({ const hotkeySs58 = convertPublicKeyToSs58(hotkey.publicKey); const stakeBefore = await getStake(api, hotkeySs58, wrapperSs58, netuid); - const removeStakeTx = await wrapperContract.removeStake(hotkey.publicKey, removeAmount, netuid); + const removeStakeTx = await wrapperContract.removeStake(hotkey.publicKey, removeAmount.toString(), netuid); const receipt = await removeStakeTx.wait(); expect(receipt?.status).toEqual(1); await waitForFinalizedBlocks(api, 2); From c83904e77805e5164442cf0ce56d3454ae7a43c1 Mon Sep 17 00:00:00 2001 From: open-junius Date: Wed, 17 Jun 2026 10:18:29 +0800 Subject: [PATCH 22/36] fix all tests --- ts-tests/suites/zombienet_evm/01-contract-deploy-call.test.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/ts-tests/suites/zombienet_evm/01-contract-deploy-call.test.ts b/ts-tests/suites/zombienet_evm/01-contract-deploy-call.test.ts index 8b7305bcd9..080eff0668 100644 --- a/ts-tests/suites/zombienet_evm/01-contract-deploy-call.test.ts +++ b/ts-tests/suites/zombienet_evm/01-contract-deploy-call.test.ts @@ -73,7 +73,6 @@ describeSuite({ api = context.papi("Node").getTypedApi(subtensor); provider = context.ethers("EVM").provider as ethers.JsonRpcProvider; ethWallet = createEthersWallet(provider); - await forceSetBalance(api, convertH160ToSS58(ethWallet.address)); await disableWhiteListCheck(api, true); await waitForFinalizedBlocks(api, 1); From 85b9b27288f2d03ae888e83b1750303a5fb94d12 Mon Sep 17 00:00:00 2001 From: open-junius Date: Wed, 17 Jun 2026 10:57:03 +0800 Subject: [PATCH 23/36] test cases passed --- ts-tests/suites/zombienet_evm/02-precompile-gas.test.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ts-tests/suites/zombienet_evm/02-precompile-gas.test.ts b/ts-tests/suites/zombienet_evm/02-precompile-gas.test.ts index 1f288ebdd4..7dfd42badf 100644 --- a/ts-tests/suites/zombienet_evm/02-precompile-gas.test.ts +++ b/ts-tests/suites/zombienet_evm/02-precompile-gas.test.ts @@ -19,7 +19,6 @@ const ITERATION_COUNTS = [1, 11, 101] as const; async function assertPrecompileGasScaling( api: TypedApi, - contract: ethers.Contract, wallet: ethers.Wallet, call: (iterations: number) => Promise ): Promise { @@ -29,7 +28,7 @@ async function assertPrecompileGasScaling( const balanceBefore = await getBalance(api, convertH160ToSS58(wallet.address)); const tx = await call(iterations); const receipt = await tx.wait(); - await waitForFinalizedBlocks(api, 1); + await waitForFinalizedBlocks(api, 2); const balanceAfter = await getBalance(api, convertH160ToSS58(wallet.address)); expect(balanceAfter).toBeLessThan(balanceBefore); @@ -90,10 +89,10 @@ describeSuite({ const contract = new ethers.Contract(contractAddress, PRECOMPILE_GAS_CONTRACT_ABI, ethWallet); - await assertPrecompileGasScaling(api, contract, ethWallet, (iterations) => + await assertPrecompileGasScaling(api, ethWallet, (iterations) => contract.callED25519(iterations) ); - await assertPrecompileGasScaling(api, contract, ethWallet, (iterations) => + await assertPrecompileGasScaling(api, ethWallet, (iterations) => contract.callSR25519(iterations) ); }, From bae24af16faab032f6668d07b6f9671489b6e5a9 Mon Sep 17 00:00:00 2001 From: open-junius Date: Wed, 17 Jun 2026 10:58:49 +0800 Subject: [PATCH 24/36] format code --- ts-tests/suites/zombienet_evm/02-precompile-gas.test.ts | 8 ++------ .../zombienet_evm/05-direct-call-precompile.test.ts | 6 +++++- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ts-tests/suites/zombienet_evm/02-precompile-gas.test.ts b/ts-tests/suites/zombienet_evm/02-precompile-gas.test.ts index 7dfd42badf..d53c42a2f2 100644 --- a/ts-tests/suites/zombienet_evm/02-precompile-gas.test.ts +++ b/ts-tests/suites/zombienet_evm/02-precompile-gas.test.ts @@ -89,12 +89,8 @@ describeSuite({ const contract = new ethers.Contract(contractAddress, PRECOMPILE_GAS_CONTRACT_ABI, ethWallet); - await assertPrecompileGasScaling(api, ethWallet, (iterations) => - contract.callED25519(iterations) - ); - await assertPrecompileGasScaling(api, ethWallet, (iterations) => - contract.callSR25519(iterations) - ); + await assertPrecompileGasScaling(api, ethWallet, (iterations) => contract.callED25519(iterations)); + await assertPrecompileGasScaling(api, ethWallet, (iterations) => contract.callSR25519(iterations)); }, }); }, diff --git a/ts-tests/suites/zombienet_evm/05-direct-call-precompile.test.ts b/ts-tests/suites/zombienet_evm/05-direct-call-precompile.test.ts index 337be91bd1..6cc72cf871 100644 --- a/ts-tests/suites/zombienet_evm/05-direct-call-precompile.test.ts +++ b/ts-tests/suites/zombienet_evm/05-direct-call-precompile.test.ts @@ -298,7 +298,11 @@ describeSuite({ const hotkeySs58 = convertPublicKeyToSs58(hotkey.publicKey); const stakeBefore = await getStake(api, hotkeySs58, wrapperSs58, netuid); - const removeStakeTx = await wrapperContract.removeStake(hotkey.publicKey, removeAmount.toString(), netuid); + const removeStakeTx = await wrapperContract.removeStake( + hotkey.publicKey, + removeAmount.toString(), + netuid + ); const receipt = await removeStakeTx.wait(); expect(receipt?.status).toEqual(1); await waitForFinalizedBlocks(api, 2); From b69575c07e1bf3779b3df167a76eb7aa9d864b91 Mon Sep 17 00:00:00 2001 From: open-junius Date: Wed, 17 Jun 2026 20:27:40 +0800 Subject: [PATCH 25/36] remove outdated contract tests --- .github/workflows/contract-tests.yml | 61 - contract-tests/.gitignore | 3 - contract-tests/README.md | 52 - contract-tests/get-metadata.sh | 3 - contract-tests/package-lock.json | 6222 ----------------- contract-tests/package.json | 35 - contract-tests/run-ci.sh | 61 - contract-tests/src/address-utils.ts | 77 - contract-tests/src/balance-math.ts | 26 - contract-tests/src/config.ts | 58 - .../src/contracts/addressMapping.ts | 23 - contract-tests/src/contracts/alpha.ts | 332 - contract-tests/src/contracts/alphaPool.sol | 134 - contract-tests/src/contracts/alphaPool.ts | 156 - contract-tests/src/contracts/bridgeToken.ts | 631 -- contract-tests/src/contracts/crowdloan.ts | 261 - contract-tests/src/contracts/incremental.sol | 22 - contract-tests/src/contracts/incremental.ts | 39 - contract-tests/src/contracts/leasing.ts | 174 - contract-tests/src/contracts/metagraph.ts | 391 -- contract-tests/src/contracts/neuron.ts | 235 - .../src/contracts/precompileGas.sol | 62 - contract-tests/src/contracts/precompileGas.ts | 44 - .../src/contracts/precompileWrapper.sol | 367 - .../src/contracts/precompileWrapper.ts | 733 -- contract-tests/src/contracts/proxy.ts | 184 - contract-tests/src/contracts/stakeWrap.sol | 99 - contract-tests/src/contracts/stakeWrap.ts | 106 - contract-tests/src/contracts/staking.ts | 594 -- contract-tests/src/contracts/subnet.ts | 980 --- contract-tests/src/contracts/uidLookup.ts | 45 - contract-tests/src/contracts/votingPower.ts | 104 - contract-tests/src/contracts/withdraw.sol | 13 - contract-tests/src/contracts/withdraw.ts | 31 - contract-tests/src/eth.ts | 16 - contract-tests/src/setup.ts | 19 - contract-tests/src/substrate.ts | 265 - contract-tests/src/subtensor.ts | 588 -- contract-tests/src/utils.ts | 69 - contract-tests/test/alphaPool.test.ts | 126 - .../test/eth.bridgeToken.deploy.test.ts | 69 - contract-tests/test/eth.chain-id.test.ts | 74 - contract-tests/test/precompileGas.test.ts | 88 - .../precompileWrapper.direct-call.test.ts | 417 -- .../test/pure-proxy.precompile.test.ts | 210 - .../test/runtime.call.precompile.test.ts | 175 - .../test/staking.precompile.reward.test.ts | 109 - .../test/staking.precompile.wrap.test.ts | 124 - .../test/transaction.replace.test.ts | 83 - contract-tests/test/wasm.contract.test.ts | 976 --- contract-tests/tsconfig.json | 111 - contract-tests/yarn.lock | 3027 -------- .../bittensor => ink-contract}/.gitignore | 0 .../bittensor => ink-contract}/Cargo.toml | 0 .../bittensor => ink-contract}/lib.rs | 0 55 files changed, 18904 deletions(-) delete mode 100644 .github/workflows/contract-tests.yml delete mode 100644 contract-tests/.gitignore delete mode 100644 contract-tests/README.md delete mode 100755 contract-tests/get-metadata.sh delete mode 100644 contract-tests/package-lock.json delete mode 100644 contract-tests/package.json delete mode 100755 contract-tests/run-ci.sh delete mode 100644 contract-tests/src/address-utils.ts delete mode 100644 contract-tests/src/balance-math.ts delete mode 100644 contract-tests/src/config.ts delete mode 100644 contract-tests/src/contracts/addressMapping.ts delete mode 100644 contract-tests/src/contracts/alpha.ts delete mode 100644 contract-tests/src/contracts/alphaPool.sol delete mode 100644 contract-tests/src/contracts/alphaPool.ts delete mode 100644 contract-tests/src/contracts/bridgeToken.ts delete mode 100644 contract-tests/src/contracts/crowdloan.ts delete mode 100644 contract-tests/src/contracts/incremental.sol delete mode 100644 contract-tests/src/contracts/incremental.ts delete mode 100644 contract-tests/src/contracts/leasing.ts delete mode 100644 contract-tests/src/contracts/metagraph.ts delete mode 100644 contract-tests/src/contracts/neuron.ts delete mode 100644 contract-tests/src/contracts/precompileGas.sol delete mode 100644 contract-tests/src/contracts/precompileGas.ts delete mode 100644 contract-tests/src/contracts/precompileWrapper.sol delete mode 100644 contract-tests/src/contracts/precompileWrapper.ts delete mode 100644 contract-tests/src/contracts/proxy.ts delete mode 100644 contract-tests/src/contracts/stakeWrap.sol delete mode 100644 contract-tests/src/contracts/stakeWrap.ts delete mode 100644 contract-tests/src/contracts/staking.ts delete mode 100644 contract-tests/src/contracts/subnet.ts delete mode 100644 contract-tests/src/contracts/uidLookup.ts delete mode 100644 contract-tests/src/contracts/votingPower.ts delete mode 100644 contract-tests/src/contracts/withdraw.sol delete mode 100644 contract-tests/src/contracts/withdraw.ts delete mode 100644 contract-tests/src/eth.ts delete mode 100644 contract-tests/src/setup.ts delete mode 100644 contract-tests/src/substrate.ts delete mode 100644 contract-tests/src/subtensor.ts delete mode 100644 contract-tests/src/utils.ts delete mode 100644 contract-tests/test/alphaPool.test.ts delete mode 100644 contract-tests/test/eth.bridgeToken.deploy.test.ts delete mode 100644 contract-tests/test/eth.chain-id.test.ts delete mode 100644 contract-tests/test/precompileGas.test.ts delete mode 100644 contract-tests/test/precompileWrapper.direct-call.test.ts delete mode 100644 contract-tests/test/pure-proxy.precompile.test.ts delete mode 100644 contract-tests/test/runtime.call.precompile.test.ts delete mode 100644 contract-tests/test/staking.precompile.reward.test.ts delete mode 100644 contract-tests/test/staking.precompile.wrap.test.ts delete mode 100644 contract-tests/test/transaction.replace.test.ts delete mode 100644 contract-tests/test/wasm.contract.test.ts delete mode 100644 contract-tests/tsconfig.json delete mode 100644 contract-tests/yarn.lock rename {contract-tests/bittensor => ink-contract}/.gitignore (100%) rename {contract-tests/bittensor => ink-contract}/Cargo.toml (100%) rename {contract-tests/bittensor => ink-contract}/lib.rs (100%) diff --git a/.github/workflows/contract-tests.yml b/.github/workflows/contract-tests.yml deleted file mode 100644 index d524af0c64..0000000000 --- a/.github/workflows/contract-tests.yml +++ /dev/null @@ -1,61 +0,0 @@ -name: Contract E2E Tests - -on: - pull_request: - - ## Allow running workflow manually from the Actions tab - workflow_dispatch: - inputs: - verbose: - description: "Output more information when triggered manually" - required: false - default: "" - -concurrency: - group: evm-tests-${{ github.ref }} - cancel-in-progress: true - -env: - CARGO_TERM_COLOR: always - VERBOSE: ${{ github.events.input.verbose }} - -permissions: - contents: read - -jobs: - run: - runs-on: [self-hosted, type-ccx13] - env: - RUST_BACKTRACE: full - steps: - - name: Check-out repository under $GITHUB_WORKSPACE - uses: actions/checkout@v4 - - - name: Install Rust - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - - - name: Utilize Shared Rust Cache - uses: Swatinem/rust-cache@v2 - - - name: Set up Node.js - uses: actions/setup-node@v4 - with: - node-version: "22" - - - name: Install dependencies - run: | - sudo DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a apt-get update - sudo DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a apt-get install -y --no-install-recommends -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" build-essential clang curl libssl-dev llvm libudev-dev protobuf-compiler nodejs pkg-config - - - name: Run tests - uses: nick-fields/retry@v3 - with: - timeout_minutes: 120 - max_attempts: 3 - retry_wait_seconds: 60 - command: | - cd ${{ github.workspace }} - npm install --global yarn - ./contract-tests/run-ci.sh diff --git a/contract-tests/.gitignore b/contract-tests/.gitignore deleted file mode 100644 index 661f94a6e0..0000000000 --- a/contract-tests/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -.papi -.env diff --git a/contract-tests/README.md b/contract-tests/README.md deleted file mode 100644 index 78294603d3..0000000000 --- a/contract-tests/README.md +++ /dev/null @@ -1,52 +0,0 @@ -# type-test - -The contract-tests folder includes all typescript code to test the basic EVM function -like token transfer, and all precompile contracts in Subtensor. It is -implemented in typescript, use both ethers and viem lib to interact with -contracts. The polkadot API is used to call extrinsic, get storage in Subtensor -. The developers can use it to verify the code change in precompile contracts. - -The Ink contract tests also are included in the contract-tests folder. -There is an Ink project in the bittensor folder, which include all functions defined -in the runtime extension. The test file for it is wasm.contract.test.ts. - -The whole test process is also included in the CI, all test cases are executed for new -commit. CI flow can get catch any failed test cases. The polkadot API get the -latest metadata from the runtime, the case also can find out any incompatibility -between runtime and precompile contracts. - -## polkadot api - -You need `polkadot-api` globally installed: - -```bash -$ npm i -g polkadot-api -``` - -To get the metadata, you need start the localnet via run -`./scripts/localnet.sh`. then run following command to get metadata, a folder -name .papi will be created, which include the metadata and type definitions. - -```bash -npx papi add devnet -w ws://localhost:9944 -``` - -## get the new metadata - -If the runtime is upgrade, need to get the metadata again. - -```bash -sh get-metadata.sh -``` - -## run all tests - -```bash -yarn run test -``` - -## To run a particular test case, you can pass an argument with the name or part of the name. For example: - -```bash -yarn run test -- -g "Can set subnet parameter" -``` diff --git a/contract-tests/get-metadata.sh b/contract-tests/get-metadata.sh deleted file mode 100755 index 64d76bff29..0000000000 --- a/contract-tests/get-metadata.sh +++ /dev/null @@ -1,3 +0,0 @@ -rm -rf .papi -npx papi add devnet -w ws://localhost:9944 -npx papi ink add ./bittensor/target/ink/bittensor.json \ No newline at end of file diff --git a/contract-tests/package-lock.json b/contract-tests/package-lock.json deleted file mode 100644 index 52b74f2bf8..0000000000 --- a/contract-tests/package-lock.json +++ /dev/null @@ -1,6222 +0,0 @@ -{ - "name": "contract-tests", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "license": "ISC", - "dependencies": { - "@polkadot-api/descriptors": "file:.papi/descriptors", - "@polkadot-api/ink-contracts": "^0.4.1", - "@polkadot-api/sdk-ink": "^0.5.1", - "@polkadot-labs/hdkd": "^0.0.25", - "@polkadot-labs/hdkd-helpers": "^0.0.25", - "@polkadot/api": "^16.4.6", - "@polkadot/util-crypto": "^14.0.1", - "@types/mocha": "^10.0.10", - "dotenv": "17.2.1", - "ethers": "^6.13.5", - "mocha": "^11.1.0", - "polkadot-api": "^1.22.0", - "rxjs": "^7.8.2", - "scale-ts": "^1.6.1", - "viem": "2.23.4", - "ws": "^8.18.2" - }, - "devDependencies": { - "@types/chai": "^5.0.1", - "@types/node": "^22.18.0", - "assert": "^2.1.0", - "chai": "^6.0.1", - "prettier": "^3.3.3", - "ts-node": "^10.9.2", - "typescript": "^5.7.2" - } - }, - ".papi/descriptors": { - "name": "@polkadot-api/descriptors", - "version": "0.1.0-autogenerated.9947536328969970535", - "peerDependencies": { - "polkadot-api": ">=1.21.0" - } - }, - "node_modules/@adraffy/ens-normalize": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.1.tgz", - "integrity": "sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==", - "license": "MIT" - }, - "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@commander-js/extra-typings": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@commander-js/extra-typings/-/extra-typings-14.0.0.tgz", - "integrity": "sha512-hIn0ncNaJRLkZrxBIp5AsW/eXEHNKYQBh0aPdoUqNgD+Io3NIykQqpKFyKcuasZhicGaEZJX/JBSIkZ4e5x8Dg==", - "license": "MIT", - "peerDependencies": { - "commander": "~14.0.0" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", - "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", - "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", - "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", - "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", - "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", - "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", - "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", - "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", - "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", - "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", - "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", - "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", - "cpu": [ - "loong64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", - "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", - "cpu": [ - "mips64el" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", - "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", - "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", - "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", - "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", - "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", - "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", - "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", - "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", - "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", - "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", - "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", - "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", - "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@ethereumjs/rlp": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-10.1.0.tgz", - "integrity": "sha512-r67BJbwilammAqYI4B5okA66cNdTlFzeWxPNJOolKV52ZS/flo0tUBf4x4gxWXBgh48OgsdFV1Qp5pRoSe8IhQ==", - "license": "MPL-2.0", - "bin": { - "rlp": "bin/rlp.cjs" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@noble/ciphers": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", - "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/curves": { - "version": "1.9.7", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", - "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.8.0" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/curves/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/hashes": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz", - "integrity": "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==", - "license": "MIT", - "engines": { - "node": ">= 20.19.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@polkadot-api/cli": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@polkadot-api/cli/-/cli-0.16.3.tgz", - "integrity": "sha512-s+p3dFw1vOeyMMqhUbt1RFyqPZdR7vg6joS0v9wBvK3qX5xU+QfOOaMxXJ8fl0mJEbwoJnJsvVl4MzjsABaKCg==", - "license": "MIT", - "dependencies": { - "@commander-js/extra-typings": "^14.0.0", - "@polkadot-api/codegen": "0.20.0", - "@polkadot-api/ink-contracts": "0.4.3", - "@polkadot-api/json-rpc-provider": "0.0.4", - "@polkadot-api/known-chains": "0.9.15", - "@polkadot-api/legacy-provider": "0.3.6", - "@polkadot-api/metadata-compatibility": "0.4.1", - "@polkadot-api/observable-client": "0.17.0", - "@polkadot-api/polkadot-sdk-compat": "2.3.3", - "@polkadot-api/sm-provider": "0.1.14", - "@polkadot-api/smoldot": "0.3.14", - "@polkadot-api/substrate-bindings": "0.16.5", - "@polkadot-api/substrate-client": "0.4.7", - "@polkadot-api/utils": "0.2.0", - "@polkadot-api/wasm-executor": "^0.2.2", - "@polkadot-api/ws-provider": "0.7.4", - "@types/node": "^24.10.1", - "commander": "^14.0.2", - "execa": "^9.6.0", - "fs.promises.exists": "^1.1.4", - "ora": "^9.0.0", - "read-pkg": "^10.0.0", - "rxjs": "^7.8.2", - "tsc-prog": "^2.3.0", - "tsup": "8.5.0", - "typescript": "^5.9.3", - "write-package": "^7.2.0" - }, - "bin": { - "papi": "dist/main.js", - "polkadot-api": "dist/main.js" - } - }, - "node_modules/@polkadot-api/cli/node_modules/@types/node": { - "version": "24.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", - "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", - "license": "MIT", - "dependencies": { - "undici-types": "~7.16.0" - } - }, - "node_modules/@polkadot-api/cli/node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", - "license": "MIT" - }, - "node_modules/@polkadot-api/codegen": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@polkadot-api/codegen/-/codegen-0.20.0.tgz", - "integrity": "sha512-akwPArm35UZcebUFtTKcEkdBLCjYyKweGw3/tT04p/EtM4OsQ1FxhRdXZ51ScBC3JVGCFQTUO2hNsd1E6YXvlw==", - "license": "MIT", - "dependencies": { - "@polkadot-api/ink-contracts": "0.4.3", - "@polkadot-api/metadata-builders": "0.13.7", - "@polkadot-api/metadata-compatibility": "0.4.1", - "@polkadot-api/substrate-bindings": "0.16.5", - "@polkadot-api/utils": "0.2.0" - } - }, - "node_modules/@polkadot-api/common-sdk-utils": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@polkadot-api/common-sdk-utils/-/common-sdk-utils-0.1.0.tgz", - "integrity": "sha512-cgA9fh8dfBai9b46XaaQmj9vwzyHStQjc/xrAvQksgF6SqvZ0yAfxVqLvGrsz/Xi3dsAdKLg09PybC7MUAMv9w==", - "license": "MIT", - "peerDependencies": { - "polkadot-api": "^1.8.1", - "rxjs": ">=7.8.1" - } - }, - "node_modules/@polkadot-api/descriptors": { - "resolved": ".papi/descriptors", - "link": true - }, - "node_modules/@polkadot-api/ink-contracts": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@polkadot-api/ink-contracts/-/ink-contracts-0.4.3.tgz", - "integrity": "sha512-Wl+4Dxjt0GAl+rADZEgrrqEesqX/xygTpX18TmzmspcKhb9QIZf9FJI8A5Sgtq0TKAOwsd1d/hbHVX3LgbXFXg==", - "license": "MIT", - "dependencies": { - "@polkadot-api/metadata-builders": "0.13.7", - "@polkadot-api/substrate-bindings": "0.16.5", - "@polkadot-api/utils": "0.2.0" - } - }, - "node_modules/@polkadot-api/json-rpc-provider": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider/-/json-rpc-provider-0.0.4.tgz", - "integrity": "sha512-9cDijLIxzHOBuq6yHqpqjJ9jBmXrctjc1OFqU+tQrS96adQze3mTIH6DTgfb/0LMrqxzxffz1HQGrIlEH00WrA==", - "license": "MIT" - }, - "node_modules/@polkadot-api/json-rpc-provider-proxy": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider-proxy/-/json-rpc-provider-proxy-0.2.7.tgz", - "integrity": "sha512-+HM4JQXzO2GPUD2++4GOLsmFL6LO8RoLvig0HgCLuypDgfdZMlwd8KnyGHjRnVEHA5X+kvXbk84TDcAXVxTazQ==", - "license": "MIT" - }, - "node_modules/@polkadot-api/known-chains": { - "version": "0.9.15", - "resolved": "https://registry.npmjs.org/@polkadot-api/known-chains/-/known-chains-0.9.15.tgz", - "integrity": "sha512-VQGu2Anvnx0y0Ltd6sQB3aYzQFGsaQwf2znh+w4Oflaxln5lsjO/+trpXz/rdrdgyi0iafkhpeho/p/EGBwJ+A==", - "license": "MIT" - }, - "node_modules/@polkadot-api/legacy-provider": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@polkadot-api/legacy-provider/-/legacy-provider-0.3.6.tgz", - "integrity": "sha512-JZQg0HVtBowFKxNrZdnMBKXmeSBD4yFlz6egEpvE97RXRvjaBzTaVuFFhBchngq9YmgFQewuWSoX5XSUW6hcEg==", - "license": "MIT", - "dependencies": { - "@polkadot-api/json-rpc-provider": "0.0.4", - "@polkadot-api/raw-client": "0.1.1", - "@polkadot-api/substrate-bindings": "0.16.5", - "@polkadot-api/utils": "0.2.0" - }, - "peerDependencies": { - "rxjs": ">=7.8.0" - } - }, - "node_modules/@polkadot-api/logs-provider": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@polkadot-api/logs-provider/-/logs-provider-0.0.6.tgz", - "integrity": "sha512-4WgHlvy+xee1ADaaVf6+MlK/+jGMtsMgAzvbQOJZnP4PfQuagoTqaeayk8HYKxXGphogLlPbD06tANxcb+nvAg==", - "license": "MIT", - "dependencies": { - "@polkadot-api/json-rpc-provider": "0.0.4" - } - }, - "node_modules/@polkadot-api/merkleize-metadata": { - "version": "1.1.27", - "resolved": "https://registry.npmjs.org/@polkadot-api/merkleize-metadata/-/merkleize-metadata-1.1.27.tgz", - "integrity": "sha512-OdKwOzzrLL0Ju3pQA9LjeQEquMcD+KtLybUAO3fVxwjxD5cyI0RwillGoAIBJvfMaZpNxnxJnD+WzNjRcr7FiQ==", - "license": "MIT", - "dependencies": { - "@polkadot-api/metadata-builders": "0.13.7", - "@polkadot-api/substrate-bindings": "0.16.5", - "@polkadot-api/utils": "0.2.0" - } - }, - "node_modules/@polkadot-api/metadata-builders": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/@polkadot-api/metadata-builders/-/metadata-builders-0.13.7.tgz", - "integrity": "sha512-xwggY8F/gtX7qGzz+jzP3DZvWgBWIIFQhk+r2MJ431CR+tNKeTtzGdwNocVrb9NYTK2naC9ckJS14nrNM6LWLw==", - "license": "MIT", - "dependencies": { - "@polkadot-api/substrate-bindings": "0.16.5", - "@polkadot-api/utils": "0.2.0" - } - }, - "node_modules/@polkadot-api/metadata-compatibility": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@polkadot-api/metadata-compatibility/-/metadata-compatibility-0.4.1.tgz", - "integrity": "sha512-mZt4Af6oPXEHAprrckJiSZkWRVf0mqwF+Bm+703rPsezLptQid9AjSzh1hkgIkOrPbg6IhWbmMhbuJVjx9VeQA==", - "license": "MIT", - "dependencies": { - "@polkadot-api/metadata-builders": "0.13.7", - "@polkadot-api/substrate-bindings": "0.16.5" - } - }, - "node_modules/@polkadot-api/observable-client": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@polkadot-api/observable-client/-/observable-client-0.17.0.tgz", - "integrity": "sha512-hilb12Fg1JrlM/0nucMT85//EQltB53fmoh7YNBsZMiNpavn/3qGTO4s0JMlC/LBbddYg0nxA+DMkSVlapo7cQ==", - "license": "MIT", - "dependencies": { - "@polkadot-api/metadata-builders": "0.13.7", - "@polkadot-api/substrate-bindings": "0.16.5", - "@polkadot-api/substrate-client": "0.4.7", - "@polkadot-api/utils": "0.2.0" - }, - "peerDependencies": { - "rxjs": ">=7.8.0" - } - }, - "node_modules/@polkadot-api/pjs-signer": { - "version": "0.6.17", - "resolved": "https://registry.npmjs.org/@polkadot-api/pjs-signer/-/pjs-signer-0.6.17.tgz", - "integrity": "sha512-bxFtyiNOchV0osh6m+1CaN4tkWF7Mo4IT9XPLZBwSybpHZgwmu2wbhgqBkVL98QMyGzud7NHfrJsTCgFU6jHGg==", - "license": "MIT", - "dependencies": { - "@polkadot-api/metadata-builders": "0.13.7", - "@polkadot-api/polkadot-signer": "0.1.6", - "@polkadot-api/signers-common": "0.1.18", - "@polkadot-api/substrate-bindings": "0.16.5", - "@polkadot-api/utils": "0.2.0" - } - }, - "node_modules/@polkadot-api/polkadot-sdk-compat": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@polkadot-api/polkadot-sdk-compat/-/polkadot-sdk-compat-2.3.3.tgz", - "integrity": "sha512-p30po+iv4trniSJ7UZiIt/rFInvtA9Tzg65EzuRkCaQAnh54a3MPp9w/q+x+SNLEcfzVLvf8LyPnMPOIpKuj5w==", - "license": "MIT", - "dependencies": { - "@polkadot-api/json-rpc-provider": "0.0.4" - } - }, - "node_modules/@polkadot-api/polkadot-signer": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@polkadot-api/polkadot-signer/-/polkadot-signer-0.1.6.tgz", - "integrity": "sha512-X7ghAa4r7doETtjAPTb50IpfGtrBmy3BJM5WCfNKa1saK04VFY9w+vDn+hwEcM4p0PcDHt66Ts74hzvHq54d9A==", - "license": "MIT" - }, - "node_modules/@polkadot-api/raw-client": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@polkadot-api/raw-client/-/raw-client-0.1.1.tgz", - "integrity": "sha512-HxalpNEo8JCYXfxKM5p3TrK8sEasTGMkGjBNLzD4TLye9IK2smdb5oTvp2yfkU1iuVBdmjr69uif4NaukOYo2g==", - "license": "MIT", - "dependencies": { - "@polkadot-api/json-rpc-provider": "0.0.4" - } - }, - "node_modules/@polkadot-api/sdk-ink": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@polkadot-api/sdk-ink/-/sdk-ink-0.5.1.tgz", - "integrity": "sha512-9pRnghjigivvgq7375hzkoazstvPDbc0YB01Jzw1/MYKcX+YJn1p/H8SAQTWbKlz2ohFgi1nwU52a0bsmKqb/Q==", - "license": "MIT", - "dependencies": { - "@ethereumjs/rlp": "^10.0.0", - "@polkadot-api/common-sdk-utils": "0.1.0", - "@polkadot-api/substrate-bindings": "^0.16.3", - "abitype": "^1.1.1", - "viem": "^2.37.9" - }, - "peerDependencies": { - "@polkadot-api/ink-contracts": ">=0.4.0", - "polkadot-api": ">=1.19.0", - "rxjs": ">=7.8.0" - } - }, - "node_modules/@polkadot-api/sdk-ink/node_modules/@noble/curves": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz", - "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.8.0" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@polkadot-api/sdk-ink/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@polkadot-api/sdk-ink/node_modules/isows": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.7.tgz", - "integrity": "sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "license": "MIT", - "peerDependencies": { - "ws": "*" - } - }, - "node_modules/@polkadot-api/sdk-ink/node_modules/ox": { - "version": "0.9.6", - "resolved": "https://registry.npmjs.org/ox/-/ox-0.9.6.tgz", - "integrity": "sha512-8SuCbHPvv2eZLYXrNmC0EC12rdzXQLdhnOMlHDW2wiCPLxBrOOJwX5L5E61by+UjTPOryqQiRSnjIKCI+GykKg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "license": "MIT", - "dependencies": { - "@adraffy/ens-normalize": "^1.11.0", - "@noble/ciphers": "^1.3.0", - "@noble/curves": "1.9.1", - "@noble/hashes": "^1.8.0", - "@scure/bip32": "^1.7.0", - "@scure/bip39": "^1.6.0", - "abitype": "^1.0.9", - "eventemitter3": "5.0.1" - }, - "peerDependencies": { - "typescript": ">=5.4.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@polkadot-api/sdk-ink/node_modules/viem": { - "version": "2.41.2", - "resolved": "https://registry.npmjs.org/viem/-/viem-2.41.2.tgz", - "integrity": "sha512-LYliajglBe1FU6+EH9mSWozp+gRA/QcHfxeD9Odf83AdH5fwUS7DroH4gHvlv6Sshqi1uXrYFA2B/EOczxd15g==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "license": "MIT", - "dependencies": { - "@noble/curves": "1.9.1", - "@noble/hashes": "1.8.0", - "@scure/bip32": "1.7.0", - "@scure/bip39": "1.6.0", - "abitype": "1.1.0", - "isows": "1.0.7", - "ox": "0.9.6", - "ws": "8.18.3" - }, - "peerDependencies": { - "typescript": ">=5.0.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@polkadot-api/sdk-ink/node_modules/viem/node_modules/abitype": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.1.0.tgz", - "integrity": "sha512-6Vh4HcRxNMLA0puzPjM5GBgT4aAcFGKZzSgAXvuZ27shJP6NEpielTuqbBmZILR5/xd0PizkBGy5hReKz9jl5A==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/wevm" - }, - "peerDependencies": { - "typescript": ">=5.0.4", - "zod": "^3.22.0 || ^4.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - }, - "zod": { - "optional": true - } - } - }, - "node_modules/@polkadot-api/signer": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/@polkadot-api/signer/-/signer-0.2.11.tgz", - "integrity": "sha512-32tqbJo6JDfc/lHg+nTveeunFRULonWoTQX9xbs70arr/tAyyZfljupdECRK8CVRx1777es/CQO3QVj8EpWtYg==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "^2.0.1", - "@polkadot-api/merkleize-metadata": "1.1.27", - "@polkadot-api/polkadot-signer": "0.1.6", - "@polkadot-api/signers-common": "0.1.18", - "@polkadot-api/substrate-bindings": "0.16.5", - "@polkadot-api/utils": "0.2.0" - } - }, - "node_modules/@polkadot-api/signers-common": { - "version": "0.1.18", - "resolved": "https://registry.npmjs.org/@polkadot-api/signers-common/-/signers-common-0.1.18.tgz", - "integrity": "sha512-UQXuRZoQ+jMolEpIPF0mVXcoqQ/382fHrSOgfK5sIvjeH0HPf4P+s3IwcnwyAdpHY2gdHXYlHd/SAw7Q1gJ4EA==", - "license": "MIT", - "dependencies": { - "@polkadot-api/metadata-builders": "0.13.7", - "@polkadot-api/polkadot-signer": "0.1.6", - "@polkadot-api/substrate-bindings": "0.16.5", - "@polkadot-api/utils": "0.2.0" - } - }, - "node_modules/@polkadot-api/sm-provider": { - "version": "0.1.14", - "resolved": "https://registry.npmjs.org/@polkadot-api/sm-provider/-/sm-provider-0.1.14.tgz", - "integrity": "sha512-QQvoeBSIwnEm8IUhGA6sBU6LNh2v7SOuVOnF77ZD7P5ELTrdmQH2Tcn0W15qGTmTG45b3Z52XsKpuQbIJ7c7XA==", - "license": "MIT", - "dependencies": { - "@polkadot-api/json-rpc-provider": "0.0.4", - "@polkadot-api/json-rpc-provider-proxy": "0.2.7" - }, - "peerDependencies": { - "@polkadot-api/smoldot": ">=0.3" - } - }, - "node_modules/@polkadot-api/smoldot": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@polkadot-api/smoldot/-/smoldot-0.3.14.tgz", - "integrity": "sha512-eWqO0xFQaKzqY5mRYxYuZcj1IiaLcQP+J38UQyuJgEorm+9yHVEQ/XBWoM83P+Y8TwE5IWTICp1LCVeiFQTGPQ==", - "license": "MIT", - "dependencies": { - "@types/node": "^24.5.2", - "smoldot": "2.0.39" - } - }, - "node_modules/@polkadot-api/smoldot/node_modules/@types/node": { - "version": "24.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", - "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", - "license": "MIT", - "dependencies": { - "undici-types": "~7.16.0" - } - }, - "node_modules/@polkadot-api/smoldot/node_modules/smoldot": { - "version": "2.0.39", - "resolved": "https://registry.npmjs.org/smoldot/-/smoldot-2.0.39.tgz", - "integrity": "sha512-yFMSzI6nkqWFTNao99lBA/TguUFU+bR3A5UGTDd/QqqB12jqzvZnmW/No6l2rKmagt8Qx/KybMNowV/E28znhA==", - "license": "GPL-3.0-or-later WITH Classpath-exception-2.0", - "dependencies": { - "ws": "^8.8.1" - } - }, - "node_modules/@polkadot-api/smoldot/node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", - "license": "MIT" - }, - "node_modules/@polkadot-api/substrate-bindings": { - "version": "0.16.5", - "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-bindings/-/substrate-bindings-0.16.5.tgz", - "integrity": "sha512-QFgNlBmtLtiUGTCTurxcE6UZrbI2DaQ5/gyIiC2FYfEhStL8tl20b09FRYHcSjY+lxN42Rcf9HVX+MCFWLYlpQ==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "^2.0.1", - "@polkadot-api/utils": "0.2.0", - "@scure/base": "^2.0.0", - "scale-ts": "^1.6.1" - } - }, - "node_modules/@polkadot-api/substrate-bindings/node_modules/@scure/base": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-2.0.0.tgz", - "integrity": "sha512-3E1kpuZginKkek01ovG8krQ0Z44E3DHPjc5S2rjJw9lZn3KSQOs8S7wqikF/AH7iRanHypj85uGyxk0XAyC37w==", - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@polkadot-api/substrate-client": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-client/-/substrate-client-0.4.7.tgz", - "integrity": "sha512-Mmx9VKincVqfVQmq89gzDk4DN3uKwf8CxoqYvq+EiPUZ1QmMUc7X4QMwG1MXIlYdnm5LSXzn+2Jn8ik8xMgL+w==", - "license": "MIT", - "dependencies": { - "@polkadot-api/json-rpc-provider": "0.0.4", - "@polkadot-api/raw-client": "0.1.1", - "@polkadot-api/utils": "0.2.0" - } - }, - "node_modules/@polkadot-api/utils": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@polkadot-api/utils/-/utils-0.2.0.tgz", - "integrity": "sha512-nY3i5fQJoAxU4n3bD7Fs208/KR2J95SGfVc58kDjbRYN5a84kWaGEqzjBNtP9oqht49POM8Bm9mbIrkvC1Bzuw==", - "license": "MIT" - }, - "node_modules/@polkadot-api/wasm-executor": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@polkadot-api/wasm-executor/-/wasm-executor-0.2.3.tgz", - "integrity": "sha512-B2h1o+Qlo9idpASaHvMSoViB2I5ko5OAfwfhYF8LQDkTADK0B+SeStzNj1Qn+FG34wqTuv7HzBCdjaUgzYINJQ==", - "license": "MIT" - }, - "node_modules/@polkadot-api/ws-provider": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@polkadot-api/ws-provider/-/ws-provider-0.7.4.tgz", - "integrity": "sha512-mkk2p8wPht+ljU1xULCPMsLpNF7NHuGaufuDCIZZgopALaZpfVFJxc3qa9s6Xv8X3hM+TRoC5WknuD1ykRY99A==", - "license": "MIT", - "dependencies": { - "@polkadot-api/json-rpc-provider": "0.0.4", - "@polkadot-api/json-rpc-provider-proxy": "0.2.7", - "@types/ws": "^8.18.1", - "ws": "^8.18.3" - } - }, - "node_modules/@polkadot-labs/hdkd": { - "version": "0.0.25", - "resolved": "https://registry.npmjs.org/@polkadot-labs/hdkd/-/hdkd-0.0.25.tgz", - "integrity": "sha512-+yZJC1TE4ZKdfoILw8nGxu3H/klrYXm9GdVB0kcyQDecq320ThUmM1M4l8d1F/3QD0Nez9NwHi9t5B++OgJU5A==", - "license": "MIT", - "dependencies": { - "@polkadot-labs/hdkd-helpers": "~0.0.26" - } - }, - "node_modules/@polkadot-labs/hdkd-helpers": { - "version": "0.0.25", - "resolved": "https://registry.npmjs.org/@polkadot-labs/hdkd-helpers/-/hdkd-helpers-0.0.25.tgz", - "integrity": "sha512-GwHayBuyHKfzvGD0vG47NbjFeiK6rRQHQAn1syut9nt0mhXMg4yb3tJ//IyM317qWuDU3HbD2OIp5jKDEQz2/A==", - "license": "MIT", - "dependencies": { - "@noble/curves": "^2.0.0", - "@noble/hashes": "^2.0.0", - "@scure/base": "^2.0.0", - "@scure/sr25519": "^0.3.0", - "scale-ts": "^1.6.1" - } - }, - "node_modules/@polkadot-labs/hdkd-helpers/node_modules/@noble/curves": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-2.0.1.tgz", - "integrity": "sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "2.0.1" - }, - "engines": { - "node": ">= 20.19.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@polkadot-labs/hdkd-helpers/node_modules/@scure/base": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-2.0.0.tgz", - "integrity": "sha512-3E1kpuZginKkek01ovG8krQ0Z44E3DHPjc5S2rjJw9lZn3KSQOs8S7wqikF/AH7iRanHypj85uGyxk0XAyC37w==", - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@polkadot-labs/hdkd/node_modules/@noble/curves": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-2.0.1.tgz", - "integrity": "sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "2.0.1" - }, - "engines": { - "node": ">= 20.19.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@polkadot-labs/hdkd/node_modules/@polkadot-labs/hdkd-helpers": { - "version": "0.0.26", - "resolved": "https://registry.npmjs.org/@polkadot-labs/hdkd-helpers/-/hdkd-helpers-0.0.26.tgz", - "integrity": "sha512-mp3GCSiOQeh4aPt+DYBQq6UnX/tKgYUH5F75knjW3ATSA90ifEEWWjRan0Bddt4QKYKamaDGadK9GbVREgzQFw==", - "license": "MIT", - "dependencies": { - "@noble/curves": "^2.0.1", - "@noble/hashes": "^2.0.1", - "@scure/base": "^2.0.0", - "@scure/sr25519": "^0.3.0", - "scale-ts": "^1.6.1" - } - }, - "node_modules/@polkadot-labs/hdkd/node_modules/@scure/base": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-2.0.0.tgz", - "integrity": "sha512-3E1kpuZginKkek01ovG8krQ0Z44E3DHPjc5S2rjJw9lZn3KSQOs8S7wqikF/AH7iRanHypj85uGyxk0XAyC37w==", - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@polkadot/api": { - "version": "16.5.3", - "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-16.5.3.tgz", - "integrity": "sha512-Ptwo0f5Qonmus7KIklsbFcGTdHtNjbTAwl5GGI8Mp0dmBc7Y/ISJpIJX49UrG6FhW6COMa0ItsU87XIWMRwI/Q==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/api-augment": "16.5.3", - "@polkadot/api-base": "16.5.3", - "@polkadot/api-derive": "16.5.3", - "@polkadot/keyring": "^13.5.9", - "@polkadot/rpc-augment": "16.5.3", - "@polkadot/rpc-core": "16.5.3", - "@polkadot/rpc-provider": "16.5.3", - "@polkadot/types": "16.5.3", - "@polkadot/types-augment": "16.5.3", - "@polkadot/types-codec": "16.5.3", - "@polkadot/types-create": "16.5.3", - "@polkadot/types-known": "16.5.3", - "@polkadot/util": "^13.5.9", - "@polkadot/util-crypto": "^13.5.9", - "eventemitter3": "^5.0.1", - "rxjs": "^7.8.1", - "tslib": "^2.8.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@polkadot/api-augment": { - "version": "16.5.3", - "resolved": "https://registry.npmjs.org/@polkadot/api-augment/-/api-augment-16.5.3.tgz", - "integrity": "sha512-9+8YKSS66x9qpWS+ZQ/FSm9P4mgE+icD53oAmeIykriPW2gcSTAiNufLwAjmAJAkOLcqbTD7LPjFW6xFlmtYsA==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/api-base": "16.5.3", - "@polkadot/rpc-augment": "16.5.3", - "@polkadot/types": "16.5.3", - "@polkadot/types-augment": "16.5.3", - "@polkadot/types-codec": "16.5.3", - "@polkadot/util": "^13.5.9", - "tslib": "^2.8.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@polkadot/api-base": { - "version": "16.5.3", - "resolved": "https://registry.npmjs.org/@polkadot/api-base/-/api-base-16.5.3.tgz", - "integrity": "sha512-M1+pY6OFQ1uOB73VQMt2JAGq/UVISVQJISqyfjiUllUc0qIzaDMkcZxRqE34Lwaib3fD3RuIpG6dXqCL9rdzJQ==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/rpc-core": "16.5.3", - "@polkadot/types": "16.5.3", - "@polkadot/util": "^13.5.9", - "rxjs": "^7.8.1", - "tslib": "^2.8.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@polkadot/api-derive": { - "version": "16.5.3", - "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-16.5.3.tgz", - "integrity": "sha512-nMsnSC/N1SK1kNhgh2FhrrR1S8bTVH+3WsuBHFRzl+txKHq232IeIn9LpebSvgZdd77PaKaYBxbhYcNaA8Ypew==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/api": "16.5.3", - "@polkadot/api-augment": "16.5.3", - "@polkadot/api-base": "16.5.3", - "@polkadot/rpc-core": "16.5.3", - "@polkadot/types": "16.5.3", - "@polkadot/types-codec": "16.5.3", - "@polkadot/util": "^13.5.9", - "@polkadot/util-crypto": "^13.5.9", - "rxjs": "^7.8.1", - "tslib": "^2.8.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@polkadot/api-derive/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@polkadot/api-derive/node_modules/@polkadot/util-crypto": { - "version": "13.5.9", - "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-13.5.9.tgz", - "integrity": "sha512-foUesMhxkTk8CZ0/XEcfvHk6I0O+aICqqVJllhOpyp/ZVnrTBKBf59T6RpsXx2pCtBlMsLRvg/6Mw7RND1HqDg==", - "license": "Apache-2.0", - "dependencies": { - "@noble/curves": "^1.3.0", - "@noble/hashes": "^1.3.3", - "@polkadot/networks": "13.5.9", - "@polkadot/util": "13.5.9", - "@polkadot/wasm-crypto": "^7.5.3", - "@polkadot/wasm-util": "^7.5.3", - "@polkadot/x-bigint": "13.5.9", - "@polkadot/x-randomvalues": "13.5.9", - "@scure/base": "^1.1.7", - "tslib": "^2.8.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@polkadot/util": "13.5.9" - } - }, - "node_modules/@polkadot/api/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@polkadot/api/node_modules/@polkadot/util-crypto": { - "version": "13.5.9", - "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-13.5.9.tgz", - "integrity": "sha512-foUesMhxkTk8CZ0/XEcfvHk6I0O+aICqqVJllhOpyp/ZVnrTBKBf59T6RpsXx2pCtBlMsLRvg/6Mw7RND1HqDg==", - "license": "Apache-2.0", - "dependencies": { - "@noble/curves": "^1.3.0", - "@noble/hashes": "^1.3.3", - "@polkadot/networks": "13.5.9", - "@polkadot/util": "13.5.9", - "@polkadot/wasm-crypto": "^7.5.3", - "@polkadot/wasm-util": "^7.5.3", - "@polkadot/x-bigint": "13.5.9", - "@polkadot/x-randomvalues": "13.5.9", - "@scure/base": "^1.1.7", - "tslib": "^2.8.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@polkadot/util": "13.5.9" - } - }, - "node_modules/@polkadot/keyring": { - "version": "13.5.9", - "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-13.5.9.tgz", - "integrity": "sha512-bMCpHDN7U8ytxawjBZ89/he5s3AmEZuOdkM/ABcorh/flXNPfyghjFK27Gy4OKoFxX52yJ2sTHR4NxM87GuFXQ==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/util": "13.5.9", - "@polkadot/util-crypto": "13.5.9", - "tslib": "^2.8.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@polkadot/util": "13.5.9", - "@polkadot/util-crypto": "13.5.9" - } - }, - "node_modules/@polkadot/keyring/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@polkadot/keyring/node_modules/@polkadot/util-crypto": { - "version": "13.5.9", - "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-13.5.9.tgz", - "integrity": "sha512-foUesMhxkTk8CZ0/XEcfvHk6I0O+aICqqVJllhOpyp/ZVnrTBKBf59T6RpsXx2pCtBlMsLRvg/6Mw7RND1HqDg==", - "license": "Apache-2.0", - "dependencies": { - "@noble/curves": "^1.3.0", - "@noble/hashes": "^1.3.3", - "@polkadot/networks": "13.5.9", - "@polkadot/util": "13.5.9", - "@polkadot/wasm-crypto": "^7.5.3", - "@polkadot/wasm-util": "^7.5.3", - "@polkadot/x-bigint": "13.5.9", - "@polkadot/x-randomvalues": "13.5.9", - "@scure/base": "^1.1.7", - "tslib": "^2.8.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@polkadot/util": "13.5.9" - } - }, - "node_modules/@polkadot/networks": { - "version": "13.5.9", - "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-13.5.9.tgz", - "integrity": "sha512-nmKUKJjiLgcih0MkdlJNMnhEYdwEml2rv/h59ll2+rAvpsVWMTLCb6Cq6q7UC44+8kiWK2UUJMkFU+3PFFxndA==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/util": "13.5.9", - "@substrate/ss58-registry": "^1.51.0", - "tslib": "^2.8.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@polkadot/rpc-augment": { - "version": "16.5.3", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-augment/-/rpc-augment-16.5.3.tgz", - "integrity": "sha512-q3Y+b0FSwbYe8Qopd4In+9KCL3eH5QmGVvimX7Z8+cvQ9+h+JUA6TP1bfpWBmYJRKlolaljsBQPBWoubchmxSw==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/rpc-core": "16.5.3", - "@polkadot/types": "16.5.3", - "@polkadot/types-codec": "16.5.3", - "@polkadot/util": "^13.5.9", - "tslib": "^2.8.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@polkadot/rpc-core": { - "version": "16.5.3", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-16.5.3.tgz", - "integrity": "sha512-UYEIRhO/1uTz/rpWLwUN9Re3c4fuTs0I9RR8dHKpKsH3jZTs1M3CtqME3NNzpGqApY1xb9tZemU/0GfHjCpeBQ==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/rpc-augment": "16.5.3", - "@polkadot/rpc-provider": "16.5.3", - "@polkadot/types": "16.5.3", - "@polkadot/util": "^13.5.9", - "rxjs": "^7.8.1", - "tslib": "^2.8.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@polkadot/rpc-provider": { - "version": "16.5.3", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-16.5.3.tgz", - "integrity": "sha512-O7hD82HwjT4XJ4i/G58B52RSDM7arHXSpzahZKz4/wtb4x6d6b4JVdfZoskInadARFi5RwIWCrftwPtpRH81Fw==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/keyring": "^13.5.9", - "@polkadot/types": "16.5.3", - "@polkadot/types-support": "16.5.3", - "@polkadot/util": "^13.5.9", - "@polkadot/util-crypto": "^13.5.9", - "@polkadot/x-fetch": "^13.5.9", - "@polkadot/x-global": "^13.5.9", - "@polkadot/x-ws": "^13.5.9", - "eventemitter3": "^5.0.1", - "mock-socket": "^9.3.1", - "nock": "^13.5.5", - "tslib": "^2.8.1" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@substrate/connect": "0.8.11" - } - }, - "node_modules/@polkadot/rpc-provider/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@polkadot/rpc-provider/node_modules/@polkadot/util-crypto": { - "version": "13.5.9", - "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-13.5.9.tgz", - "integrity": "sha512-foUesMhxkTk8CZ0/XEcfvHk6I0O+aICqqVJllhOpyp/ZVnrTBKBf59T6RpsXx2pCtBlMsLRvg/6Mw7RND1HqDg==", - "license": "Apache-2.0", - "dependencies": { - "@noble/curves": "^1.3.0", - "@noble/hashes": "^1.3.3", - "@polkadot/networks": "13.5.9", - "@polkadot/util": "13.5.9", - "@polkadot/wasm-crypto": "^7.5.3", - "@polkadot/wasm-util": "^7.5.3", - "@polkadot/x-bigint": "13.5.9", - "@polkadot/x-randomvalues": "13.5.9", - "@scure/base": "^1.1.7", - "tslib": "^2.8.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@polkadot/util": "13.5.9" - } - }, - "node_modules/@polkadot/types": { - "version": "16.5.3", - "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-16.5.3.tgz", - "integrity": "sha512-xy9uv/X4iT7uJ7TNCoqbcMkR8ePHwNW6DgpOU+1y1zc/KSu9ZC5i+haFOL68BpmR/QXk99YfuHoKwXvteDmykw==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/keyring": "^13.5.9", - "@polkadot/types-augment": "16.5.3", - "@polkadot/types-codec": "16.5.3", - "@polkadot/types-create": "16.5.3", - "@polkadot/util": "^13.5.9", - "@polkadot/util-crypto": "^13.5.9", - "rxjs": "^7.8.1", - "tslib": "^2.8.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@polkadot/types-augment": { - "version": "16.5.3", - "resolved": "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-16.5.3.tgz", - "integrity": "sha512-SfS4arJUxW6BeCEhLMVPrZwWOLte69k5+/lvEKOKHQA8Mz0MEkD4uqGZGibDjgBgdnu8N+3b+rs+Fn3YfZu4yA==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/types": "16.5.3", - "@polkadot/types-codec": "16.5.3", - "@polkadot/util": "^13.5.9", - "tslib": "^2.8.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@polkadot/types-codec": { - "version": "16.5.3", - "resolved": "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-16.5.3.tgz", - "integrity": "sha512-b+oKMrIZrsFH4pPwvGQ6lMS8oFrYAGMy9QSbytA+KDmXAgTCtShz5XGvdQabvsGCjJ45EKgkKpKynVcYh3gk8g==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/util": "^13.5.9", - "@polkadot/x-bigint": "^13.5.9", - "tslib": "^2.8.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@polkadot/types-create": { - "version": "16.5.3", - "resolved": "https://registry.npmjs.org/@polkadot/types-create/-/types-create-16.5.3.tgz", - "integrity": "sha512-XGnBLNamPh7eQGcHNGFghA/prH7z2BsQ+9EVSbHCvw9ENr/Ow24mmmkZyMG5WM/5I6/4HRdfwFJucYt1GL/p9g==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/types-codec": "16.5.3", - "@polkadot/util": "^13.5.9", - "tslib": "^2.8.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@polkadot/types-known": { - "version": "16.5.3", - "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-16.5.3.tgz", - "integrity": "sha512-ZLAZI24bQD0C9CJWYHxrLG8QSmzRzfWa51rlSNwZ9Atsc3R+GeX1YZGc9IljpQxYJCHrCqd6X8TXpAmEJdnbKw==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/networks": "^13.5.9", - "@polkadot/types": "16.5.3", - "@polkadot/types-codec": "16.5.3", - "@polkadot/types-create": "16.5.3", - "@polkadot/util": "^13.5.9", - "tslib": "^2.8.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@polkadot/types-support": { - "version": "16.5.3", - "resolved": "https://registry.npmjs.org/@polkadot/types-support/-/types-support-16.5.3.tgz", - "integrity": "sha512-ggyIRV+4Kn+aG1PiVT0PE00pAqMveyS3CuFsW9gJnKxeev4VrGfr08R4vw/61D7uIfpilkQdkXNgXAbeN09Mxg==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/util": "^13.5.9", - "tslib": "^2.8.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@polkadot/types/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@polkadot/types/node_modules/@polkadot/util-crypto": { - "version": "13.5.9", - "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-13.5.9.tgz", - "integrity": "sha512-foUesMhxkTk8CZ0/XEcfvHk6I0O+aICqqVJllhOpyp/ZVnrTBKBf59T6RpsXx2pCtBlMsLRvg/6Mw7RND1HqDg==", - "license": "Apache-2.0", - "dependencies": { - "@noble/curves": "^1.3.0", - "@noble/hashes": "^1.3.3", - "@polkadot/networks": "13.5.9", - "@polkadot/util": "13.5.9", - "@polkadot/wasm-crypto": "^7.5.3", - "@polkadot/wasm-util": "^7.5.3", - "@polkadot/x-bigint": "13.5.9", - "@polkadot/x-randomvalues": "13.5.9", - "@scure/base": "^1.1.7", - "tslib": "^2.8.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@polkadot/util": "13.5.9" - } - }, - "node_modules/@polkadot/util": { - "version": "13.5.9", - "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-13.5.9.tgz", - "integrity": "sha512-pIK3XYXo7DKeFRkEBNYhf3GbCHg6dKQisSvdzZwuyzA6m7YxQq4DFw4IE464ve4Z7WsJFt3a6C9uII36hl9EWw==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/x-bigint": "13.5.9", - "@polkadot/x-global": "13.5.9", - "@polkadot/x-textdecoder": "13.5.9", - "@polkadot/x-textencoder": "13.5.9", - "@types/bn.js": "^5.1.6", - "bn.js": "^5.2.1", - "tslib": "^2.8.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@polkadot/util-crypto": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-14.0.1.tgz", - "integrity": "sha512-Cu7AKUzBTsUkbOtyuNzXcTpDjR9QW0fVR56o3gBmzfUCmvO1vlsuGzmmPzqpHymQQ3rrfqV78CPs62EGhw0R+A==", - "license": "Apache-2.0", - "dependencies": { - "@noble/curves": "^1.3.0", - "@noble/hashes": "^1.3.3", - "@polkadot/networks": "14.0.1", - "@polkadot/util": "14.0.1", - "@polkadot/wasm-crypto": "^7.5.3", - "@polkadot/wasm-util": "^7.5.3", - "@polkadot/x-bigint": "14.0.1", - "@polkadot/x-randomvalues": "14.0.1", - "@scure/base": "^1.1.7", - "@scure/sr25519": "^0.2.0", - "tslib": "^2.8.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@polkadot/util": "14.0.1" - } - }, - "node_modules/@polkadot/util-crypto/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@polkadot/util-crypto/node_modules/@polkadot/networks": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-14.0.1.tgz", - "integrity": "sha512-wGlBtXDkusRAj4P7uxfPz80gLO1+j99MLBaQi3bEym2xrFrFhgIWVHOZlBit/1PfaBjhX2Z8XjRxaM2w1p7w2w==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/util": "14.0.1", - "@substrate/ss58-registry": "^1.51.0", - "tslib": "^2.8.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@polkadot/util-crypto/node_modules/@polkadot/util": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-14.0.1.tgz", - "integrity": "sha512-764HhxkPV3x5rM0/p6QdynC2dw26n+SaE+jisjx556ViCd4E28Ke4xSPef6C0Spy4aoXf2gt0PuLEcBvd6fVZg==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/x-bigint": "14.0.1", - "@polkadot/x-global": "14.0.1", - "@polkadot/x-textdecoder": "14.0.1", - "@polkadot/x-textencoder": "14.0.1", - "@types/bn.js": "^5.1.6", - "bn.js": "^5.2.1", - "tslib": "^2.8.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@polkadot/util-crypto/node_modules/@polkadot/x-bigint": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-14.0.1.tgz", - "integrity": "sha512-gfozjGnebr2rqURs31KtaWumbW4rRZpbiluhlmai6luCNrf5u8pB+oLA35kPEntrsLk9PnIG9OsC/n4hEtx4OQ==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/x-global": "14.0.1", - "tslib": "^2.8.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@polkadot/util-crypto/node_modules/@polkadot/x-global": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-14.0.1.tgz", - "integrity": "sha512-aCI44DJU4fU0XXqrrSGIpi7JrZXK2kpe0jaQ2p6oDVXOOYEnZYXnMhTTmBE1lF/xtxzX50MnZrrU87jziU0qbA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.8.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@polkadot/util-crypto/node_modules/@polkadot/x-randomvalues": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-14.0.1.tgz", - "integrity": "sha512-/XkQcvshzJLHITuPrN3zmQKuFIPdKWoaiHhhVLD6rQWV60lTXA3ajw3ocju8ZN7xRxnweMS9Ce0kMPYa0NhRMg==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/x-global": "14.0.1", - "tslib": "^2.8.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@polkadot/util": "14.0.1", - "@polkadot/wasm-util": "*" - } - }, - "node_modules/@polkadot/util-crypto/node_modules/@polkadot/x-textdecoder": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-14.0.1.tgz", - "integrity": "sha512-CcWiPCuPVJsNk4Vq43lgFHqLRBQHb4r9RD7ZIYgmwoebES8TNm4g2ew9ToCzakFKSpzKu6I07Ne9wv/dt5zLuw==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/x-global": "14.0.1", - "tslib": "^2.8.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@polkadot/util-crypto/node_modules/@polkadot/x-textencoder": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-14.0.1.tgz", - "integrity": "sha512-VY51SpQmF1ccmAGLfxhYnAe95Spfz049WZ/+kK4NfsGF9WejxVdU53Im5C80l45r8qHuYQsCWU3+t0FNunh2Kg==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/x-global": "14.0.1", - "tslib": "^2.8.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@polkadot/util-crypto/node_modules/@scure/sr25519": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@scure/sr25519/-/sr25519-0.2.0.tgz", - "integrity": "sha512-uUuLP7Z126XdSizKtrCGqYyR3b3hYtJ6Fg/XFUXmc2//k2aXHDLqZwFeXxL97gg4XydPROPVnuaHGF2+xriSKg==", - "license": "MIT", - "dependencies": { - "@noble/curves": "~1.9.2", - "@noble/hashes": "~1.8.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@polkadot/wasm-bridge": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-bridge/-/wasm-bridge-7.5.3.tgz", - "integrity": "sha512-mUvwwNH+uP1wqpMuHjmEwHxRIaVc5csmb+ukycWQGhzwhpXe/0fvBEU2TQ8kwgqO2MU0FS3hN/QcIWKfPRJgxQ==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/wasm-util": "7.5.3", - "tslib": "^2.7.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@polkadot/util": "*", - "@polkadot/x-randomvalues": "*" - } - }, - "node_modules/@polkadot/wasm-crypto": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-7.5.3.tgz", - "integrity": "sha512-dmKUM9vw1wrnCHGuIeOtQo1pwuSF7fkyF4TYimTn3tAa0+3cDctYBErtGxgUeqP0Bo4Q0Of4/vnHlSk5Rbt9Uw==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/wasm-bridge": "7.5.3", - "@polkadot/wasm-crypto-asmjs": "7.5.3", - "@polkadot/wasm-crypto-init": "7.5.3", - "@polkadot/wasm-crypto-wasm": "7.5.3", - "@polkadot/wasm-util": "7.5.3", - "tslib": "^2.7.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@polkadot/util": "*", - "@polkadot/x-randomvalues": "*" - } - }, - "node_modules/@polkadot/wasm-crypto-asmjs": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-7.5.3.tgz", - "integrity": "sha512-fSbbjI+4p0U3PQ8nOz/3p7euHriSdh+2CSywNuXHa8fMaYlMqCKt9K7+HI8CQ4RZNvZWDq+Py1nEDEkM4rZrvw==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.7.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@polkadot/util": "*" - } - }, - "node_modules/@polkadot/wasm-crypto-init": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-init/-/wasm-crypto-init-7.5.3.tgz", - "integrity": "sha512-KvUpxqvW70XhuDiw/N6rM8fQ7zRjIFblw+vdJ0/wwyagwg9jrYNA9TMei5ksQd9sxGCGXN/xJmwHJXuUjkocmg==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/wasm-bridge": "7.5.3", - "@polkadot/wasm-crypto-asmjs": "7.5.3", - "@polkadot/wasm-crypto-wasm": "7.5.3", - "@polkadot/wasm-util": "7.5.3", - "tslib": "^2.7.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@polkadot/util": "*", - "@polkadot/x-randomvalues": "*" - } - }, - "node_modules/@polkadot/wasm-crypto-wasm": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-7.5.3.tgz", - "integrity": "sha512-fc88+HyVxebB/40GVgGUOLBqyO3C571DXWPTFmtt5EX9H8gw7Jg0Bkitz7hgSVP2x4FjXpqS9UNTJ8trVH0x1A==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/wasm-util": "7.5.3", - "tslib": "^2.7.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@polkadot/util": "*" - } - }, - "node_modules/@polkadot/wasm-util": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-util/-/wasm-util-7.5.3.tgz", - "integrity": "sha512-hBr9bbjS+Yr7DrDUSkIIuvlTSoAlI8WXuo9YEB4C76j130u/cl+zyq6Iy/WnaTE6QH+8i9DhM8QTety6TqYnUQ==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.7.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@polkadot/util": "*" - } - }, - "node_modules/@polkadot/x-bigint": { - "version": "13.5.9", - "resolved": "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-13.5.9.tgz", - "integrity": "sha512-JVW6vw3e8fkcRyN9eoc6JIl63MRxNQCP/tuLdHWZts1tcAYao0hpWUzteqJY93AgvmQ91KPsC1Kf3iuuZCi74g==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/x-global": "13.5.9", - "tslib": "^2.8.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@polkadot/x-fetch": { - "version": "13.5.9", - "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-13.5.9.tgz", - "integrity": "sha512-urwXQZtT4yYROiRdJS6zHu18J/jCoAGpbgPIAjwdqjT11t9XIq4SjuPMxD19xBRhbYe9ocWV8i1KHuoMbZgKbA==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/x-global": "13.5.9", - "node-fetch": "^3.3.2", - "tslib": "^2.8.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@polkadot/x-global": { - "version": "13.5.9", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-13.5.9.tgz", - "integrity": "sha512-zSRWvELHd3Q+bFkkI1h2cWIqLo1ETm+MxkNXLec3lB56iyq/MjWBxfXnAFFYFayvlEVneo7CLHcp+YTFd9aVSA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.8.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@polkadot/x-randomvalues": { - "version": "13.5.9", - "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-13.5.9.tgz", - "integrity": "sha512-Uuuz3oubf1JCCK97fsnVUnHvk4BGp/W91mQWJlgl5TIOUSSTIRr+lb5GurCfl4kgnQq53Zi5fJV+qR9YumbnZw==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/x-global": "13.5.9", - "tslib": "^2.8.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@polkadot/util": "13.5.9", - "@polkadot/wasm-util": "*" - } - }, - "node_modules/@polkadot/x-textdecoder": { - "version": "13.5.9", - "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-13.5.9.tgz", - "integrity": "sha512-W2HhVNUbC/tuFdzNMbnXAWsIHSg9SC9QWDNmFD3nXdSzlXNgL8NmuiwN2fkYvCQBtp/XSoy0gDLx0C+Fo19cfw==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/x-global": "13.5.9", - "tslib": "^2.8.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@polkadot/x-textencoder": { - "version": "13.5.9", - "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-13.5.9.tgz", - "integrity": "sha512-SG0MHnLUgn1ZxFdm0KzMdTHJ47SfqFhdIPMcGA0Mg/jt2rwrfrP3jtEIJMsHfQpHvfsNPfv55XOMmoPWuQnP/Q==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/x-global": "13.5.9", - "tslib": "^2.8.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@polkadot/x-ws": { - "version": "13.5.9", - "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-13.5.9.tgz", - "integrity": "sha512-NKVgvACTIvKT8CjaQu9d0dERkZsWIZngX/4NVSjc01WHmln4F4y/zyBdYn/Z2V0Zw28cISx+lB4qxRmqTe7gbg==", - "license": "Apache-2.0", - "dependencies": { - "@polkadot/x-global": "13.5.9", - "tslib": "^2.8.0", - "ws": "^8.18.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.3.tgz", - "integrity": "sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.3.tgz", - "integrity": "sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.3.tgz", - "integrity": "sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.3.tgz", - "integrity": "sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.3.tgz", - "integrity": "sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.3.tgz", - "integrity": "sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.3.tgz", - "integrity": "sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.3.tgz", - "integrity": "sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.3.tgz", - "integrity": "sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.3.tgz", - "integrity": "sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.3.tgz", - "integrity": "sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==", - "cpu": [ - "loong64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.3.tgz", - "integrity": "sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.3.tgz", - "integrity": "sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.3.tgz", - "integrity": "sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.3.tgz", - "integrity": "sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.3.tgz", - "integrity": "sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.3.tgz", - "integrity": "sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.3.tgz", - "integrity": "sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.3.tgz", - "integrity": "sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.3.tgz", - "integrity": "sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.3.tgz", - "integrity": "sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.3.tgz", - "integrity": "sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rx-state/core": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@rx-state/core/-/core-0.1.4.tgz", - "integrity": "sha512-Z+3hjU2xh1HisLxt+W5hlYX/eGSDaXXP+ns82gq/PLZpkXLu0uwcNUh9RLY3Clq4zT+hSsA3vcpIGt6+UAb8rQ==", - "license": "MIT", - "peerDependencies": { - "rxjs": ">=7" - } - }, - "node_modules/@scure/base": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", - "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip32": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz", - "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==", - "license": "MIT", - "dependencies": { - "@noble/curves": "~1.9.0", - "@noble/hashes": "~1.8.0", - "@scure/base": "~1.2.5" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip32/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip39": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz", - "integrity": "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "~1.8.0", - "@scure/base": "~1.2.5" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip39/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/sr25519": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@scure/sr25519/-/sr25519-0.3.0.tgz", - "integrity": "sha512-SKsinX2sImunfcsH3seGrwH/OayBwwaJqVN8J1cJBNRCfbBq5q0jyTKGa9PcW1HWv9vXT6Yuq41JsxFLvF59ew==", - "license": "MIT", - "dependencies": { - "@noble/curves": "~2.0.0", - "@noble/hashes": "~2.0.0" - }, - "engines": { - "node": ">= 20.19.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/sr25519/node_modules/@noble/curves": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-2.0.1.tgz", - "integrity": "sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "2.0.1" - }, - "engines": { - "node": ">= 20.19.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@sec-ant/readable-stream": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", - "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", - "license": "MIT" - }, - "node_modules/@sindresorhus/merge-streams": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", - "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@substrate/connect": { - "version": "0.8.11", - "resolved": "https://registry.npmjs.org/@substrate/connect/-/connect-0.8.11.tgz", - "integrity": "sha512-ofLs1PAO9AtDdPbdyTYj217Pe+lBfTLltdHDs3ds8no0BseoLeAGxpz1mHfi7zB4IxI3YyAiLjH6U8cw4pj4Nw==", - "license": "GPL-3.0-only", - "optional": true, - "dependencies": { - "@substrate/connect-extension-protocol": "^2.0.0", - "@substrate/connect-known-chains": "^1.1.5", - "@substrate/light-client-extension-helpers": "^1.0.0", - "smoldot": "2.0.26" - } - }, - "node_modules/@substrate/connect-extension-protocol": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@substrate/connect-extension-protocol/-/connect-extension-protocol-2.2.2.tgz", - "integrity": "sha512-t66jwrXA0s5Goq82ZtjagLNd7DPGCNjHeehRlE/gcJmJ+G56C0W+2plqOMRicJ8XGR1/YFnUSEqUFiSNbjGrAA==", - "license": "GPL-3.0-only", - "optional": true - }, - "node_modules/@substrate/connect-known-chains": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/@substrate/connect-known-chains/-/connect-known-chains-1.10.3.tgz", - "integrity": "sha512-OJEZO1Pagtb6bNE3wCikc2wrmvEU5x7GxFFLqqbz1AJYYxSlrPCGu4N2og5YTExo4IcloNMQYFRkBGue0BKZ4w==", - "license": "GPL-3.0-only", - "optional": true - }, - "node_modules/@substrate/light-client-extension-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@substrate/light-client-extension-helpers/-/light-client-extension-helpers-1.0.0.tgz", - "integrity": "sha512-TdKlni1mBBZptOaeVrKnusMg/UBpWUORNDv5fdCaJklP4RJiFOzBCrzC+CyVI5kQzsXBisZ+2pXm+rIjS38kHg==", - "license": "MIT", - "optional": true, - "dependencies": { - "@polkadot-api/json-rpc-provider": "^0.0.1", - "@polkadot-api/json-rpc-provider-proxy": "^0.1.0", - "@polkadot-api/observable-client": "^0.3.0", - "@polkadot-api/substrate-client": "^0.1.2", - "@substrate/connect-extension-protocol": "^2.0.0", - "@substrate/connect-known-chains": "^1.1.5", - "rxjs": "^7.8.1" - }, - "peerDependencies": { - "smoldot": "2.x" - } - }, - "node_modules/@substrate/light-client-extension-helpers/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "license": "MIT", - "optional": true, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@substrate/light-client-extension-helpers/node_modules/@polkadot-api/json-rpc-provider": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider/-/json-rpc-provider-0.0.1.tgz", - "integrity": "sha512-/SMC/l7foRjpykLTUTacIH05H3mr9ip8b5xxfwXlVezXrNVLp3Cv0GX6uItkKd+ZjzVPf3PFrDF2B2/HLSNESA==", - "license": "MIT", - "optional": true - }, - "node_modules/@substrate/light-client-extension-helpers/node_modules/@polkadot-api/json-rpc-provider-proxy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider-proxy/-/json-rpc-provider-proxy-0.1.0.tgz", - "integrity": "sha512-8GSFE5+EF73MCuLQm8tjrbCqlgclcHBSRaswvXziJ0ZW7iw3UEMsKkkKvELayWyBuOPa2T5i1nj6gFOeIsqvrg==", - "license": "MIT", - "optional": true - }, - "node_modules/@substrate/light-client-extension-helpers/node_modules/@polkadot-api/metadata-builders": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@polkadot-api/metadata-builders/-/metadata-builders-0.3.2.tgz", - "integrity": "sha512-TKpfoT6vTb+513KDzMBTfCb/ORdgRnsS3TDFpOhAhZ08ikvK+hjHMt5plPiAX/OWkm1Wc9I3+K6W0hX5Ab7MVg==", - "license": "MIT", - "optional": true, - "dependencies": { - "@polkadot-api/substrate-bindings": "0.6.0", - "@polkadot-api/utils": "0.1.0" - } - }, - "node_modules/@substrate/light-client-extension-helpers/node_modules/@polkadot-api/observable-client": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@polkadot-api/observable-client/-/observable-client-0.3.2.tgz", - "integrity": "sha512-HGgqWgEutVyOBXoGOPp4+IAq6CNdK/3MfQJmhCJb8YaJiaK4W6aRGrdQuQSTPHfERHCARt9BrOmEvTXAT257Ug==", - "license": "MIT", - "optional": true, - "dependencies": { - "@polkadot-api/metadata-builders": "0.3.2", - "@polkadot-api/substrate-bindings": "0.6.0", - "@polkadot-api/utils": "0.1.0" - }, - "peerDependencies": { - "@polkadot-api/substrate-client": "0.1.4", - "rxjs": ">=7.8.0" - } - }, - "node_modules/@substrate/light-client-extension-helpers/node_modules/@polkadot-api/substrate-bindings": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-bindings/-/substrate-bindings-0.6.0.tgz", - "integrity": "sha512-lGuhE74NA1/PqdN7fKFdE5C1gNYX357j1tWzdlPXI0kQ7h3kN0zfxNOpPUN7dIrPcOFZ6C0tRRVrBylXkI6xPw==", - "license": "MIT", - "optional": true, - "dependencies": { - "@noble/hashes": "^1.3.1", - "@polkadot-api/utils": "0.1.0", - "@scure/base": "^1.1.1", - "scale-ts": "^1.6.0" - } - }, - "node_modules/@substrate/light-client-extension-helpers/node_modules/@polkadot-api/substrate-client": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-client/-/substrate-client-0.1.4.tgz", - "integrity": "sha512-MljrPobN0ZWTpn++da9vOvt+Ex+NlqTlr/XT7zi9sqPtDJiQcYl+d29hFAgpaeTqbeQKZwz3WDE9xcEfLE8c5A==", - "license": "MIT", - "optional": true, - "dependencies": { - "@polkadot-api/json-rpc-provider": "0.0.1", - "@polkadot-api/utils": "0.1.0" - } - }, - "node_modules/@substrate/light-client-extension-helpers/node_modules/@polkadot-api/utils": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@polkadot-api/utils/-/utils-0.1.0.tgz", - "integrity": "sha512-MXzWZeuGxKizPx2Xf/47wx9sr/uxKw39bVJUptTJdsaQn/TGq+z310mHzf1RCGvC1diHM8f593KrnDgc9oNbJA==", - "license": "MIT", - "optional": true - }, - "node_modules/@substrate/ss58-registry": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/@substrate/ss58-registry/-/ss58-registry-1.51.0.tgz", - "integrity": "sha512-TWDurLiPxndFgKjVavCniytBIw+t4ViOi7TYp9h/D0NMmkEc9klFTo+827eyEJ0lELpqO207Ey7uGxUa+BS1jQ==", - "license": "Apache-2.0" - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", - "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/bn.js/node_modules/@types/node": { - "version": "24.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", - "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", - "license": "MIT", - "dependencies": { - "undici-types": "~7.16.0" - } - }, - "node_modules/@types/bn.js/node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", - "license": "MIT" - }, - "node_modules/@types/chai": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", - "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/deep-eql": "*", - "assertion-error": "^2.0.1" - } - }, - "node_modules/@types/deep-eql": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", - "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "license": "MIT" - }, - "node_modules/@types/mocha": { - "version": "10.0.10", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", - "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "22.19.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.1.tgz", - "integrity": "sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "license": "MIT" - }, - "node_modules/@types/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/ws/node_modules/@types/node": { - "version": "24.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", - "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", - "license": "MIT", - "dependencies": { - "undici-types": "~7.16.0" - } - }, - "node_modules/@types/ws/node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", - "license": "MIT" - }, - "node_modules/abitype": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.2.0.tgz", - "integrity": "sha512-fD3ROjckUrWsybaSor2AdWxzA0e/DSyV2dA4aYd7bd8orHsoJjl09fOgKfUkTDfk0BsDGBf4NBgu/c7JoS2Npw==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/wevm" - }, - "peerDependencies": { - "typescript": ">=5.0.4", - "zod": "^3.22.0 || ^4.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - }, - "zod": { - "optional": true - } - } - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/aes-js": { - "version": "4.0.0-beta.5", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", - "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", - "license": "MIT" - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "license": "MIT" - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "license": "MIT" - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0" - }, - "node_modules/assert": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", - "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "is-nan": "^1.3.2", - "object-is": "^1.1.5", - "object.assign": "^4.1.4", - "util": "^0.12.5" - } - }, - "node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/bn.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", - "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", - "license": "MIT" - }, - "node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "license": "ISC" - }, - "node_modules/bundle-require": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.1.0.tgz", - "integrity": "sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==", - "license": "MIT", - "dependencies": { - "load-tsconfig": "^0.2.3" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "peerDependencies": { - "esbuild": ">=0.18" - } - }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/chai": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.1.tgz", - "integrity": "sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/cli-cursor": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", - "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", - "license": "MIT", - "dependencies": { - "restore-cursor": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-spinners": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-3.3.0.tgz", - "integrity": "sha512-/+40ljC3ONVnYIttjMWrlL51nItDAbBrq2upN8BPyvGU/2n5Oxw3tbNwORCaNuNqLJnxGqOfjUuhsv7l5Q4IsQ==", - "license": "MIT", - "engines": { - "node": ">=18.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/commander": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz", - "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==", - "license": "MIT", - "engines": { - "node": ">=20" - } - }, - "node_modules/confbox": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", - "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", - "license": "MIT" - }, - "node_modules/consola": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", - "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", - "license": "MIT", - "engines": { - "node": "^14.18.0 || >=16.10.0" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deepmerge-ts": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.5.tgz", - "integrity": "sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/detect-indent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-7.0.2.tgz", - "integrity": "sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A==", - "license": "MIT", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dotenv": { - "version": "17.2.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.1.tgz", - "integrity": "sha512-kQhDYKZecqnM0fCnzI5eIv5L4cAe/iRI+HqMbO/hbRdTAeXDG+M9FjipUxNfbARuEg4iHIbhnhs78BCHNbSxEQ==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "license": "MIT" - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/esbuild": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", - "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.12", - "@esbuild/android-arm": "0.25.12", - "@esbuild/android-arm64": "0.25.12", - "@esbuild/android-x64": "0.25.12", - "@esbuild/darwin-arm64": "0.25.12", - "@esbuild/darwin-x64": "0.25.12", - "@esbuild/freebsd-arm64": "0.25.12", - "@esbuild/freebsd-x64": "0.25.12", - "@esbuild/linux-arm": "0.25.12", - "@esbuild/linux-arm64": "0.25.12", - "@esbuild/linux-ia32": "0.25.12", - "@esbuild/linux-loong64": "0.25.12", - "@esbuild/linux-mips64el": "0.25.12", - "@esbuild/linux-ppc64": "0.25.12", - "@esbuild/linux-riscv64": "0.25.12", - "@esbuild/linux-s390x": "0.25.12", - "@esbuild/linux-x64": "0.25.12", - "@esbuild/netbsd-arm64": "0.25.12", - "@esbuild/netbsd-x64": "0.25.12", - "@esbuild/openbsd-arm64": "0.25.12", - "@esbuild/openbsd-x64": "0.25.12", - "@esbuild/openharmony-arm64": "0.25.12", - "@esbuild/sunos-x64": "0.25.12", - "@esbuild/win32-arm64": "0.25.12", - "@esbuild/win32-ia32": "0.25.12", - "@esbuild/win32-x64": "0.25.12" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ethers": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.16.0.tgz", - "integrity": "sha512-U1wulmetNymijEhpSEQ7Ct/P/Jw9/e7R1j5XIbPRydgV2DjLVMsULDlNksq3RQnFgKoLlZf88ijYtWEXcPa07A==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/ethers-io/" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@adraffy/ens-normalize": "1.10.1", - "@noble/curves": "1.2.0", - "@noble/hashes": "1.3.2", - "@types/node": "22.7.5", - "aes-js": "4.0.0-beta.5", - "tslib": "2.7.0", - "ws": "8.17.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/ethers/node_modules/@adraffy/ens-normalize": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", - "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", - "license": "MIT" - }, - "node_modules/ethers/node_modules/@noble/curves": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.3.2" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/ethers/node_modules/@noble/hashes": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", - "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/ethers/node_modules/@types/node": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", - "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/ethers/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "license": "0BSD" - }, - "node_modules/ethers/node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "license": "MIT" - }, - "node_modules/ethers/node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "license": "MIT" - }, - "node_modules/execa": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz", - "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==", - "license": "MIT", - "dependencies": { - "@sindresorhus/merge-streams": "^4.0.0", - "cross-spawn": "^7.0.6", - "figures": "^6.1.0", - "get-stream": "^9.0.0", - "human-signals": "^8.0.1", - "is-plain-obj": "^4.1.0", - "is-stream": "^4.0.1", - "npm-run-path": "^6.0.0", - "pretty-ms": "^9.2.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^4.0.0", - "yoctocolors": "^2.1.1" - }, - "engines": { - "node": "^18.19.0 || >=20.5.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "license": "MIT", - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, - "node_modules/figures": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", - "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", - "license": "MIT", - "dependencies": { - "is-unicode-supported": "^2.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/fix-dts-default-cjs-exports": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fix-dts-default-cjs-exports/-/fix-dts-default-cjs-exports-1.0.1.tgz", - "integrity": "sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==", - "license": "MIT", - "dependencies": { - "magic-string": "^0.30.17", - "mlly": "^1.7.4", - "rollup": "^4.34.8" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" - } - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "license": "MIT", - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/fs.promises.exists": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/fs.promises.exists/-/fs.promises.exists-1.1.4.tgz", - "integrity": "sha512-lJzUGWbZn8vhGWBedA+RYjB/BeJ+3458ljUfmplqhIeb6ewzTFWNPCR1HCiYCkXV9zxcHz9zXkJzMsEgDLzh3Q==", - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/fs.promises.exists?sponsor=1" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/generator-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", - "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-east-asian-width": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", - "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-stream": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", - "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", - "license": "MIT", - "dependencies": { - "@sec-ant/readable-stream": "^0.4.1", - "is-stream": "^4.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "license": "MIT", - "bin": { - "he": "bin/he" - } - }, - "node_modules/hosted-git-info": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.2.tgz", - "integrity": "sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==", - "license": "ISC", - "dependencies": { - "lru-cache": "^11.1.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "11.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", - "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/human-signals": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", - "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/index-to-position": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.2.0.tgz", - "integrity": "sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/is-arguments": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", - "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", - "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.4", - "generator-function": "^2.0.0", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-interactive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", - "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-nan": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", - "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-unicode-supported": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", - "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/isows": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.6.tgz", - "integrity": "sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "license": "MIT", - "peerDependencies": { - "ws": "*" - } - }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/joycon": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", - "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "license": "ISC" - }, - "node_modules/lilconfig": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", - "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "license": "MIT" - }, - "node_modules/load-tsconfig": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", - "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", - "license": "MIT" - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols/node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "license": "ISC" - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mimic-function": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", - "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/mlly": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz", - "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==", - "license": "MIT", - "dependencies": { - "acorn": "^8.15.0", - "pathe": "^2.0.3", - "pkg-types": "^1.3.1", - "ufo": "^1.6.1" - } - }, - "node_modules/mocha": { - "version": "11.7.5", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.5.tgz", - "integrity": "sha512-mTT6RgopEYABzXWFx+GcJ+ZQ32kp4fMf0xvpZIIfSq9Z8lC/++MtcCnQ9t5FP2veYEP95FIYSvW+U9fV4xrlig==", - "license": "MIT", - "dependencies": { - "browser-stdout": "^1.3.1", - "chokidar": "^4.0.1", - "debug": "^4.3.5", - "diff": "^7.0.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^10.4.5", - "he": "^1.2.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^9.0.5", - "ms": "^2.1.3", - "picocolors": "^1.1.1", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^9.2.0", - "yargs": "^17.7.2", - "yargs-parser": "^21.1.1", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/mocha/node_modules/diff": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", - "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/mock-socket": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/mock-socket/-/mock-socket-9.3.1.tgz", - "integrity": "sha512-qxBgB7Qa2sEQgHFjj0dSigq7fX4k6Saisd5Nelwp2q8mlbAFh5dHV9JTTlF8viYJLSSWgMCZFUom8PJcMNBoJw==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "license": "MIT", - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nock": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/nock/-/nock-13.5.6.tgz", - "integrity": "sha512-o2zOYiCpzRqSzPj0Zt/dQ/DqZeYoaQ7TUonc/xUPjCGl9WeHpNbxgVvOquXYAaJzI0M9BXV3HTzG0p8IUAbBTQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.1.0", - "json-stringify-safe": "^5.0.1", - "propagate": "^2.0.0" - }, - "engines": { - "node": ">= 10.13" - } - }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "license": "MIT", - "engines": { - "node": ">=10.5.0" - } - }, - "node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "license": "MIT", - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, - "node_modules/normalize-package-data": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-8.0.0.tgz", - "integrity": "sha512-RWk+PI433eESQ7ounYxIp67CYuVsS1uYSonX3kA6ps/3LWfjVQa/ptEg6Y3T6uAMq1mWpX9PQ+qx+QaHpsc7gQ==", - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^9.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/npm-run-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", - "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0", - "unicorn-magic": "^0.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-is": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", - "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/onetime": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", - "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", - "license": "MIT", - "dependencies": { - "mimic-function": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-9.0.0.tgz", - "integrity": "sha512-m0pg2zscbYgWbqRR6ABga5c3sZdEon7bSgjnlXC64kxtxLOyjRcbbUkLj7HFyy/FTD+P2xdBWu8snGhYI0jc4A==", - "license": "MIT", - "dependencies": { - "chalk": "^5.6.2", - "cli-cursor": "^5.0.0", - "cli-spinners": "^3.2.0", - "is-interactive": "^2.0.0", - "is-unicode-supported": "^2.1.0", - "log-symbols": "^7.0.1", - "stdin-discarder": "^0.2.2", - "string-width": "^8.1.0", - "strip-ansi": "^7.1.2" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ora/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ora/node_modules/log-symbols": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.1.tgz", - "integrity": "sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==", - "license": "MIT", - "dependencies": { - "is-unicode-supported": "^2.0.0", - "yoctocolors": "^2.1.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/string-width": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.1.0.tgz", - "integrity": "sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==", - "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.3.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/ox": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.7.tgz", - "integrity": "sha512-17Gk/eFsFRAZ80p5eKqv89a57uXjd3NgIf1CaXojATPBuujVc/fQSVhBeAU9JCRB+k7J50WQAyWTxK19T9GgbA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "license": "MIT", - "dependencies": { - "@adraffy/ens-normalize": "^1.10.1", - "@noble/curves": "^1.6.0", - "@noble/hashes": "^1.5.0", - "@scure/bip32": "^1.5.0", - "@scure/bip39": "^1.4.0", - "abitype": "^1.0.6", - "eventemitter3": "5.0.1" - }, - "peerDependencies": { - "typescript": ">=5.4.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/ox/node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "license": "BlueOak-1.0.0" - }, - "node_modules/parse-json": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz", - "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.26.2", - "index-to-position": "^1.1.0", - "type-fest": "^4.39.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-ms": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", - "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pirates": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", - "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-types": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", - "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", - "license": "MIT", - "dependencies": { - "confbox": "^0.1.8", - "mlly": "^1.7.4", - "pathe": "^2.0.1" - } - }, - "node_modules/polkadot-api": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/polkadot-api/-/polkadot-api-1.22.0.tgz", - "integrity": "sha512-uREBLroPbnJxBBQ+qSkKLF493qukX4PAg32iThlELrZdxfNNgro6nvWRdVmBv73tFHvf+nyWWHKTx1c57nbixg==", - "license": "MIT", - "dependencies": { - "@polkadot-api/cli": "0.16.3", - "@polkadot-api/ink-contracts": "0.4.3", - "@polkadot-api/json-rpc-provider": "0.0.4", - "@polkadot-api/known-chains": "0.9.15", - "@polkadot-api/logs-provider": "0.0.6", - "@polkadot-api/metadata-builders": "0.13.7", - "@polkadot-api/metadata-compatibility": "0.4.1", - "@polkadot-api/observable-client": "0.17.0", - "@polkadot-api/pjs-signer": "0.6.17", - "@polkadot-api/polkadot-sdk-compat": "2.3.3", - "@polkadot-api/polkadot-signer": "0.1.6", - "@polkadot-api/signer": "0.2.11", - "@polkadot-api/sm-provider": "0.1.14", - "@polkadot-api/smoldot": "0.3.14", - "@polkadot-api/substrate-bindings": "0.16.5", - "@polkadot-api/substrate-client": "0.4.7", - "@polkadot-api/utils": "0.2.0", - "@polkadot-api/ws-provider": "0.7.4", - "@rx-state/core": "^0.1.4" - }, - "bin": { - "papi": "bin/cli.mjs", - "polkadot-api": "bin/cli.mjs" - }, - "peerDependencies": { - "rxjs": ">=7.8.0" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/postcss-load-config": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", - "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "lilconfig": "^3.1.1" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "jiti": ">=1.21.0", - "postcss": ">=8.0.9", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - }, - "postcss": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/prettier": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz", - "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/pretty-ms": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz", - "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==", - "license": "MIT", - "dependencies": { - "parse-ms": "^4.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/propagate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", - "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/read-pkg": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-10.0.0.tgz", - "integrity": "sha512-A70UlgfNdKI5NSvTTfHzLQj7NJRpJ4mT5tGafkllJ4wh71oYuGm/pzphHcmW4s35iox56KSK721AihodoXSc/A==", - "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.4", - "normalize-package-data": "^8.0.0", - "parse-json": "^8.3.0", - "type-fest": "^5.2.0", - "unicorn-magic": "^0.3.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.3.0.tgz", - "integrity": "sha512-d9CwU93nN0IA1QL+GSNDdwLAu1Ew5ZjTwupvedwg3WdfoH6pIDvYQ2hV0Uc2nKBLPq7NB5apCx57MLS5qlmO5g==", - "license": "(MIT OR CC0-1.0)", - "dependencies": { - "tagged-tag": "^1.0.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/restore-cursor": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", - "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", - "license": "MIT", - "dependencies": { - "onetime": "^7.0.0", - "signal-exit": "^4.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/rollup": { - "version": "4.53.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.3.tgz", - "integrity": "sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==", - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.8" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.53.3", - "@rollup/rollup-android-arm64": "4.53.3", - "@rollup/rollup-darwin-arm64": "4.53.3", - "@rollup/rollup-darwin-x64": "4.53.3", - "@rollup/rollup-freebsd-arm64": "4.53.3", - "@rollup/rollup-freebsd-x64": "4.53.3", - "@rollup/rollup-linux-arm-gnueabihf": "4.53.3", - "@rollup/rollup-linux-arm-musleabihf": "4.53.3", - "@rollup/rollup-linux-arm64-gnu": "4.53.3", - "@rollup/rollup-linux-arm64-musl": "4.53.3", - "@rollup/rollup-linux-loong64-gnu": "4.53.3", - "@rollup/rollup-linux-ppc64-gnu": "4.53.3", - "@rollup/rollup-linux-riscv64-gnu": "4.53.3", - "@rollup/rollup-linux-riscv64-musl": "4.53.3", - "@rollup/rollup-linux-s390x-gnu": "4.53.3", - "@rollup/rollup-linux-x64-gnu": "4.53.3", - "@rollup/rollup-linux-x64-musl": "4.53.3", - "@rollup/rollup-openharmony-arm64": "4.53.3", - "@rollup/rollup-win32-arm64-msvc": "4.53.3", - "@rollup/rollup-win32-ia32-msvc": "4.53.3", - "@rollup/rollup-win32-x64-gnu": "4.53.3", - "@rollup/rollup-win32-x64-msvc": "4.53.3", - "fsevents": "~2.3.2" - } - }, - "node_modules/rxjs": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", - "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/scale-ts": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/scale-ts/-/scale-ts-1.6.1.tgz", - "integrity": "sha512-PBMc2AWc6wSEqJYBDPcyCLUj9/tMKnLX70jLOSndMtcUoLQucP/DM0vnQo1wJAYjTrQiq8iG9rD0q6wFzgjH7g==", - "license": "MIT" - }, - "node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/smoldot": { - "version": "2.0.26", - "resolved": "https://registry.npmjs.org/smoldot/-/smoldot-2.0.26.tgz", - "integrity": "sha512-F+qYmH4z2s2FK+CxGj8moYcd1ekSIKH8ywkdqlOz88Dat35iB1DIYL11aILN46YSGMzQW/lbJNS307zBSDN5Ig==", - "license": "GPL-3.0-or-later WITH Classpath-exception-2.0", - "optional": true, - "dependencies": { - "ws": "^8.8.1" - } - }, - "node_modules/sort-keys": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-5.1.0.tgz", - "integrity": "sha512-aSbHV0DaBcr7u0PVHXzM6NbZNAtrr9sF6+Qfs9UUVG7Ll3jQ6hHi8F/xqIIcn2rvIVbr0v/2zyjSdwSV47AgLQ==", - "license": "MIT", - "dependencies": { - "is-plain-obj": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "license": "BSD-3-Clause", - "dependencies": { - "whatwg-url": "^7.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.22", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", - "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", - "license": "CC0-1.0" - }, - "node_modules/stdin-discarder": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", - "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", - "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/sucrase": { - "version": "3.35.1", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", - "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "tinyglobby": "^0.2.11", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/sucrase/node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/tagged-tag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tagged-tag/-/tagged-tag-1.0.0.tgz", - "integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==", - "license": "MIT", - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "license": "MIT", - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "license": "MIT", - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", - "license": "MIT" - }, - "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", - "license": "MIT", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "license": "MIT", - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "license": "Apache-2.0" - }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/tsc-prog": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tsc-prog/-/tsc-prog-2.3.0.tgz", - "integrity": "sha512-ycET2d75EgcX7y8EmG4KiZkLAwUzbY4xRhA6NU0uVbHkY4ZjrAAuzTMxXI85kOwATqPnBI5C/7y7rlpY0xdqHA==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "typescript": ">=4" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, - "node_modules/tsup": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.5.0.tgz", - "integrity": "sha512-VmBp77lWNQq6PfuMqCHD3xWl22vEoWsKajkF8t+yMBawlUS8JzEI+vOVMeuNZIuMML8qXRizFKi9oD5glKQVcQ==", - "license": "MIT", - "dependencies": { - "bundle-require": "^5.1.0", - "cac": "^6.7.14", - "chokidar": "^4.0.3", - "consola": "^3.4.0", - "debug": "^4.4.0", - "esbuild": "^0.25.0", - "fix-dts-default-cjs-exports": "^1.0.0", - "joycon": "^3.1.1", - "picocolors": "^1.1.1", - "postcss-load-config": "^6.0.1", - "resolve-from": "^5.0.0", - "rollup": "^4.34.8", - "source-map": "0.8.0-beta.0", - "sucrase": "^3.35.0", - "tinyexec": "^0.3.2", - "tinyglobby": "^0.2.11", - "tree-kill": "^1.2.2" - }, - "bin": { - "tsup": "dist/cli-default.js", - "tsup-node": "dist/cli-node.js" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@microsoft/api-extractor": "^7.36.0", - "@swc/core": "^1", - "postcss": "^8.4.12", - "typescript": ">=4.5.0" - }, - "peerDependenciesMeta": { - "@microsoft/api-extractor": { - "optional": true - }, - "@swc/core": { - "optional": true - }, - "postcss": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/ufo": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", - "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", - "license": "MIT" - }, - "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, - "license": "MIT" - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/viem": { - "version": "2.23.4", - "resolved": "https://registry.npmjs.org/viem/-/viem-2.23.4.tgz", - "integrity": "sha512-UQquuolKlS1w5H5e0Fd1KKoUlIPJryIEBzY5AUhGyV1ka+9O6+3uYVhUzj6RbvGK0PtsMKn2ddwPZFwjNDVU/A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "license": "MIT", - "dependencies": { - "@noble/curves": "1.8.1", - "@noble/hashes": "1.7.1", - "@scure/bip32": "1.6.2", - "@scure/bip39": "1.5.4", - "abitype": "1.0.8", - "isows": "1.0.6", - "ox": "0.6.7", - "ws": "8.18.0" - }, - "peerDependencies": { - "typescript": ">=5.0.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/viem/node_modules/@noble/curves": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz", - "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.7.1" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/viem/node_modules/@noble/hashes": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", - "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/viem/node_modules/@scure/bip32": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.6.2.tgz", - "integrity": "sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==", - "license": "MIT", - "dependencies": { - "@noble/curves": "~1.8.1", - "@noble/hashes": "~1.7.1", - "@scure/base": "~1.2.2" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/viem/node_modules/@scure/bip32/node_modules/@noble/curves": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.2.tgz", - "integrity": "sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.7.2" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/viem/node_modules/@scure/bip32/node_modules/@noble/hashes": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz", - "integrity": "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/viem/node_modules/@scure/bip39": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.5.4.tgz", - "integrity": "sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "~1.7.1", - "@scure/base": "~1.2.4" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/viem/node_modules/abitype": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.8.tgz", - "integrity": "sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/wevm" - }, - "peerDependencies": { - "typescript": ">=5.0.4", - "zod": "^3 >=3.22.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - }, - "zod": { - "optional": true - } - } - }, - "node_modules/viem/node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/web-streams-polyfill": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", - "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "license": "BSD-2-Clause" - }, - "node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "license": "MIT", - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/workerpool": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.4.tgz", - "integrity": "sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==", - "license": "Apache-2.0" - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/write-json-file": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-6.0.0.tgz", - "integrity": "sha512-MNHcU3f9WxnNyR6MxsYSj64Jz0+dwIpisWKWq9gqLj/GwmA9INg3BZ3vt70/HB3GEwrnDQWr4RPrywnhNzmUFA==", - "license": "MIT", - "dependencies": { - "detect-indent": "^7.0.1", - "is-plain-obj": "^4.1.0", - "sort-keys": "^5.0.0", - "write-file-atomic": "^5.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/write-package": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/write-package/-/write-package-7.2.0.tgz", - "integrity": "sha512-uMQTubF/vcu+Wd0b5BGtDmiXePd/+44hUWQz2nZPbs92/BnxRo74tqs+hqDo12RLiEd+CXFKUwxvvIZvtt34Jw==", - "license": "MIT", - "dependencies": { - "deepmerge-ts": "^7.1.0", - "read-pkg": "^9.0.1", - "sort-keys": "^5.0.0", - "type-fest": "^4.23.0", - "write-json-file": "^6.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/write-package/node_modules/hosted-git-info": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", - "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", - "license": "ISC", - "dependencies": { - "lru-cache": "^10.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/write-package/node_modules/normalize-package-data": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", - "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^7.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/write-package/node_modules/read-pkg": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", - "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", - "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.3", - "normalize-package-data": "^6.0.0", - "parse-json": "^8.0.0", - "type-fest": "^4.6.0", - "unicorn-magic": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/write-package/node_modules/unicorn-magic": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", - "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "license": "MIT", - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yoctocolors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", - "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/contract-tests/package.json b/contract-tests/package.json deleted file mode 100644 index 3acf069c1d..0000000000 --- a/contract-tests/package.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "scripts": { - "test": "TS_NODE_PREFER_TS_EXTS=1 TS_NODE_TRANSPILE_ONLY=1 mocha --timeout 999999 --retries 3 --file src/setup.ts --require ts-node/register --extension ts \"test/**/*.ts\"" - }, - "keywords": [], - "author": "", - "license": "ISC", - "dependencies": { - "@polkadot-api/descriptors": "file:.papi/descriptors", - "@polkadot-api/ink-contracts": "^0.4.1", - "@polkadot-api/sdk-ink": "^0.5.1", - "@polkadot-labs/hdkd": "^0.0.25", - "@polkadot-labs/hdkd-helpers": "^0.0.25", - "@polkadot/api": "^16.4.6", - "@polkadot/util-crypto": "^14.0.1", - "@types/mocha": "^10.0.10", - "dotenv": "17.2.1", - "ethers": "^6.13.5", - "mocha": "^11.1.0", - "polkadot-api": "^1.22.0", - "rxjs": "^7.8.2", - "scale-ts": "^1.6.1", - "viem": "2.23.4", - "ws": "^8.18.2" - }, - "devDependencies": { - "@types/chai": "^5.0.1", - "@types/node": "^22.18.0", - "assert": "^2.1.0", - "chai": "^6.0.1", - "prettier": "^3.3.3", - "ts-node": "^10.9.2", - "typescript": "^5.7.2" - } -} diff --git a/contract-tests/run-ci.sh b/contract-tests/run-ci.sh deleted file mode 100755 index 0ea0e72297..0000000000 --- a/contract-tests/run-ci.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash - -echo "start run-ci.sh" - -cd contract-tests - -cd bittensor - -rustup component add rust-src -cargo install cargo-contract -cargo contract build --release - -cd ../.. - -scripts/localnet.sh &>/dev/null & - -i=1 -while [ $i -le 2000 ]; do - if nc -z localhost 9944; then - echo "node subtensor is running after $i seconds" - break - fi - sleep 1 - i=$((i + 1)) -done - -# port not available exit with error -if [ "$i" -eq 2000 ]; then - exit 1 -fi - -sleep 10 - -if ! nc -z localhost 9944; then - echo "node subtensor exit, port not available" - exit 1 -fi - -cd contract-tests - -# required for papi in get-metadata.sh, but we cannot run yarn before papi as it adds the descriptors to the package.json which won't resolve -npm i -g polkadot-api - -bash get-metadata.sh - -sleep 5 - -yarn install --frozen-lockfile - -yarn run test -TEST_EXIT_CODE=$? - -if [ $TEST_EXIT_CODE -ne 0 ]; then - echo "Tests failed with exit code $TEST_EXIT_CODE" - pkill node-subtensor - exit $TEST_EXIT_CODE -fi - -pkill node-subtensor - -exit 0 \ No newline at end of file diff --git a/contract-tests/src/address-utils.ts b/contract-tests/src/address-utils.ts deleted file mode 100644 index 753eed2530..0000000000 --- a/contract-tests/src/address-utils.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { Address } from "viem" -import { encodeAddress } from "@polkadot/util-crypto"; -import { ss58Address, ss58Decode } from "@polkadot-labs/hdkd-helpers"; -import { hexToU8a } from "@polkadot/util"; -import { blake2AsU8a, decodeAddress } from "@polkadot/util-crypto"; -import { Binary } from "polkadot-api"; -import { SS58_PREFIX } from "./config" - -export function toViemAddress(address: string): Address { - let addressNoPrefix = address.replace("0x", "") - return `0x${addressNoPrefix}` -} - -export function convertH160ToSS58(ethAddress: string) { - // get the public key - const hash = convertH160ToPublicKey(ethAddress); - - // Convert the hash to SS58 format - const ss58Address = encodeAddress(hash, SS58_PREFIX); - return ss58Address; -} - -export function convertPublicKeyToSs58(publickey: Uint8Array) { - return ss58Address(publickey, SS58_PREFIX); -} - -export function convertH160ToPublicKey(ethAddress: string) { - const prefix = "evm:"; - const prefixBytes = new TextEncoder().encode(prefix); - const addressBytes = hexToU8a( - ethAddress.startsWith("0x") ? ethAddress : `0x${ethAddress}` - ); - const combined = new Uint8Array(prefixBytes.length + addressBytes.length); - - // Concatenate prefix and Ethereum address - combined.set(prefixBytes); - combined.set(addressBytes, prefixBytes.length); - - // Hash the combined data (the public key) - const hash = blake2AsU8a(combined); - return hash; -} - -export function ss58ToEthAddress(ss58Address: string) { - // Decode the SS58 address to a Uint8Array public key - const publicKey = decodeAddress(ss58Address); - - // Take the first 20 bytes of the hashed public key for the Ethereum address - const ethereumAddressBytes = publicKey.slice(0, 20); - - // Convert the 20 bytes into an Ethereum H160 address format (Hex string) - const ethereumAddress = '0x' + Buffer.from(ethereumAddressBytes).toString('hex'); - - return ethereumAddress; -} - -export function ss58ToH160(ss58Address: string): Binary { - // Decode the SS58 address to a Uint8Array public key - const publicKey = decodeAddress(ss58Address); - - // Take the first 20 bytes of the hashed public key for the Ethereum address - const ethereumAddressBytes = publicKey.slice(0, 20); - - - return new Binary(ethereumAddressBytes); -} - -export function ethAddressToH160(ethAddress: string): Binary { - // Decode the SS58 address to a Uint8Array public key - const publicKey = hexToU8a(ethAddress); - - // Take the first 20 bytes of the hashed public key for the Ethereum address - // const ethereumAddressBytes = publicKey.slice(0, 20); - - - return new Binary(publicKey); -} \ No newline at end of file diff --git a/contract-tests/src/balance-math.ts b/contract-tests/src/balance-math.ts deleted file mode 100644 index 8d6e86bd5a..0000000000 --- a/contract-tests/src/balance-math.ts +++ /dev/null @@ -1,26 +0,0 @@ -import assert from "assert" - -export const TAO = BigInt(1000000000) // 10^9 -export const ETH_PER_RAO = BigInt(1000000000) // 10^9 -export const GWEI = BigInt(1000000000) // 10^9 -export const MAX_TX_FEE = BigInt(21000000) * GWEI // 100 times EVM to EVM transfer fee - -export function bigintToRao(value: bigint) { - return TAO * value -} - -export function tao(value: number) { - return TAO * BigInt(value) -} - -export function raoToEth(value: bigint) { - return ETH_PER_RAO * value -} - -export function compareEthBalanceWithTxFee(balance1: bigint, balance2: bigint) { - if (balance1 > balance2) { - assert((balance1 - balance2) < MAX_TX_FEE) - } else { - assert((balance2 - balance1) < MAX_TX_FEE) - } -} diff --git a/contract-tests/src/config.ts b/contract-tests/src/config.ts deleted file mode 100644 index 4cc3b27608..0000000000 --- a/contract-tests/src/config.ts +++ /dev/null @@ -1,58 +0,0 @@ -export const ETH_LOCAL_URL = 'http://localhost:9944' -export const SUB_LOCAL_URL = 'ws://localhost:9944' -export const SS58_PREFIX = 42; -// set the tx timeout as 2 second when eable the fast-runtime feature. -export const TX_TIMEOUT = 3000; - -export const IED25519VERIFY_ADDRESS = "0x0000000000000000000000000000000000000402"; -export const IEd25519VerifyABI = [ - { - inputs: [ - { internalType: "bytes32", name: "message", type: "bytes32" }, - { internalType: "bytes32", name: "publicKey", type: "bytes32" }, - { internalType: "bytes32", name: "r", type: "bytes32" }, - { internalType: "bytes32", name: "s", type: "bytes32" }, - ], - name: "verify", - outputs: [{ internalType: "bool", name: "", type: "bool" }], - stateMutability: "pure", - type: "function", - }, -]; - -export const ISr25519VERIFY_ADDRESS = "0x0000000000000000000000000000000000000403"; -export const ISr25519VerifyABI = [ - { - inputs: [ - { internalType: "bytes32", name: "message", type: "bytes32" }, - { internalType: "bytes32", name: "publicKey", type: "bytes32" }, - { internalType: "bytes32", name: "r", type: "bytes32" }, - { internalType: "bytes32", name: "s", type: "bytes32" }, - ], - name: "verify", - outputs: [{ internalType: "bool", name: "", type: "bool" }], - stateMutability: "pure", - type: "function", - }, -]; - -export const IBALANCETRANSFER_ADDRESS = "0x0000000000000000000000000000000000000800"; -export const IBalanceTransferABI = [ - { - inputs: [ - { - internalType: "bytes32", - name: "data", - type: "bytes32", - }, - ], - name: "transfer", - outputs: [], - stateMutability: "payable", - type: "function", - }, -]; - -export const IDISPATCH_ADDRESS = "0x0000000000000000000000000000000000000006"; - -export const ISTORAGE_QUERY_ADDRESS = "0x0000000000000000000000000000000000000807"; diff --git a/contract-tests/src/contracts/addressMapping.ts b/contract-tests/src/contracts/addressMapping.ts deleted file mode 100644 index 114c111d1c..0000000000 --- a/contract-tests/src/contracts/addressMapping.ts +++ /dev/null @@ -1,23 +0,0 @@ -export const IADDRESS_MAPPING_ADDRESS = "0x000000000000000000000000000000000000080c"; - -export const IAddressMappingABI = [ - { - "inputs": [ - { - "internalType": "address", - "name": "target_address", - "type": "address" - } - ], - "name": "addressMapping", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - } -]; diff --git a/contract-tests/src/contracts/alpha.ts b/contract-tests/src/contracts/alpha.ts deleted file mode 100644 index ae24298048..0000000000 --- a/contract-tests/src/contracts/alpha.ts +++ /dev/null @@ -1,332 +0,0 @@ -export const IALPHA_ADDRESS = "0x0000000000000000000000000000000000000808"; - -export const IAlphaABI = [ - { - "inputs": [ - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - } - ], - "name": "getAlphaInEmission", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - } - ], - "name": "getAlphaInPool", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - } - ], - "name": "getAlphaIssuance", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - } - ], - "name": "getAlphaOutEmission", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - } - ], - "name": "getAlphaOutPool", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - } - ], - "name": "getAlphaPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - } - ], - "name": "getEMAPriceHalvingBlocks", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - } - ], - "name": "getMovingAlphaPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getRootNetuid", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - } - ], - "name": "getSubnetMechanism", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - } - ], - "name": "getSubnetVolume", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - } - ], - "name": "getTaoInEmission", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - } - ], - "name": "getTaoInPool", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getTaoWeight", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - }, - { - "internalType": "uint64", - "name": "alpha", - "type": "uint64" - } - ], - "name": "simSwapAlphaForTao", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - }, - { - "internalType": "uint64", - "name": "tao", - "type": "uint64" - } - ], - "name": "simSwapTaoForAlpha", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getSumAlphaPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getCKBurn", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } -] \ No newline at end of file diff --git a/contract-tests/src/contracts/alphaPool.sol b/contract-tests/src/contracts/alphaPool.sol deleted file mode 100644 index 6b5d9b8c0e..0000000000 --- a/contract-tests/src/contracts/alphaPool.sol +++ /dev/null @@ -1,134 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma solidity >=0.8.2 <0.9.0; - -interface IStaking { - function transferStake( - bytes32 coldkey, - bytes32 hotkey, - uint256 netuid1, - uint256 netuid2, - uint256 amount - ) external; - function moveStake( - bytes32 hotkey1, - bytes32 hotkey2, - uint256 netuid1, - uint256 netuid2, - uint256 amount - ) external; - function getStake( - bytes32 hotkey, - bytes32 coldkey, - uint256 netuid - ) external view returns (uint256); -} - -contract AlphaPool { - bytes32 public contract_coldkey; - bytes32 public contract_hotkey; - address public constant ISTAKING_V2_ADDRESS = - 0x0000000000000000000000000000000000000805; - - mapping(address => mapping(uint256 => uint256)) public alphaBalance; - - constructor(bytes32 _contract_hotkey) { - contract_hotkey = _contract_hotkey; - } - - function setContractColdkey(bytes32 _contract_coldkey) public { - contract_coldkey = _contract_coldkey; - } - - function getContractStake(uint256 netuid) public view returns (uint256) { - return - IStaking(ISTAKING_V2_ADDRESS).getStake( - contract_hotkey, - contract_coldkey, - netuid - ); - } - - function depositAlpha( - uint256 _netuid, - uint256 _alphaAmount, - bytes32 _hotkey - ) public { - require(contract_coldkey != 0x00, "contract coldkey not set"); - uint256 contractStake = getContractStake(_netuid); - - bytes memory data = abi.encodeWithSelector( - IStaking.transferStake.selector, - contract_coldkey, - _hotkey, - _netuid, - _netuid, - _alphaAmount - ); - (bool success, ) = address(ISTAKING_V2_ADDRESS).delegatecall{ - gas: gasleft() - }(data); - require(success, "user deposit alpha call failed"); - - uint256 newContractStake = getContractStake(_netuid); - - require( - newContractStake > contractStake, - "contract stake decreased after deposit" - ); - - // use the increased stake as the actual alpha amount, for the swap fee in the move stake call - // the contract will take it and get compensated by laster emission of alpha - uint256 actualAlphaAmount = newContractStake - contractStake; - - if (_hotkey != contract_hotkey) { - data = abi.encodeWithSelector( - IStaking.moveStake.selector, - _hotkey, - contract_hotkey, - _netuid, - _netuid, - actualAlphaAmount - ); - (success, ) = address(ISTAKING_V2_ADDRESS).call{gas: gasleft()}( - data - ); - require(success, "user deposit, move stake call failed"); - } - - alphaBalance[msg.sender][_netuid] += actualAlphaAmount; - } - - function withdrawAlpha( - uint256 _netuid, - uint256 _alphaAmount, - bytes32 _user_coldkey - ) public { - require(contract_coldkey != 0x00, "contract coldkey not set"); - require( - alphaBalance[msg.sender][_netuid] >= _alphaAmount, - "user withdraw, insufficient alpha balance" - ); - uint256 contractStake = getContractStake(_netuid); - - alphaBalance[msg.sender][_netuid] -= _alphaAmount; - - bytes memory data = abi.encodeWithSelector( - IStaking.transferStake.selector, - _user_coldkey, - contract_hotkey, - _netuid, - _netuid, - _alphaAmount - ); - (bool success, ) = address(ISTAKING_V2_ADDRESS).call{gas: gasleft()}( - data - ); - - uint256 newContractStake = getContractStake(_netuid); - require( - newContractStake < contractStake, - "contract stake increased after withdraw" - ); - require(success, "user withdraw alpha call failed"); - } -} diff --git a/contract-tests/src/contracts/alphaPool.ts b/contract-tests/src/contracts/alphaPool.ts deleted file mode 100644 index f52ff6436e..0000000000 --- a/contract-tests/src/contracts/alphaPool.ts +++ /dev/null @@ -1,156 +0,0 @@ -export const ALPHA_POOL_CONTRACT_ABI = [ - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_contract_hotkey", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "ISTAKING_V2_ADDRESS", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "alphaBalance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "contract_coldkey", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "contract_hotkey", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_netuid", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_alphaAmount", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "_hotkey", - "type": "bytes32" - } - ], - "name": "depositAlpha", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - } - ], - "name": "getContractStake", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_contract_coldkey", - "type": "bytes32" - } - ], - "name": "setContractColdkey", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_netuid", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_alphaAmount", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "_user_coldkey", - "type": "bytes32" - } - ], - "name": "withdrawAlpha", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } -]; - -export const ALPHA_POOL_CONTRACT_BYTECODE = "6080604052348015600e575f5ffd5b506040516110d83803806110d88339818101604052810190602e9190606c565b80600181905550506092565b5f5ffd5b5f819050919050565b604e81603e565b81146057575f5ffd5b50565b5f815190506066816047565b92915050565b5f60208284031215607e57607d603a565b5b5f608984828501605a565b91505092915050565b6110398061009f5f395ff3fe608060405234801561000f575f5ffd5b5060043610610086575f3560e01c8063cdcde3e911610059578063cdcde3e914610110578063d67c076114610140578063f0d6bb891461015e578063fdbcdce91461017a57610086565b80632849912d1461008a5780633af975ff146100a657806359948a67146100c4578063bee0bca1146100f4575b5f5ffd5b6100a4600480360381019061009f919061090d565b610198565b005b6100ae610518565b6040516100bb919061096c565b60405180910390f35b6100de60048036038101906100d991906109df565b61051d565b6040516100eb9190610a2c565b60405180910390f35b61010e6004803603810190610109919061090d565b61053d565b005b61012a60048036038101906101259190610a45565b610805565b6040516101379190610a2c565b60405180910390f35b61014861088e565b604051610155919061096c565b60405180910390f35b61017860048036038101906101739190610a70565b610894565b005b61018261089d565b60405161018f9190610aaa565b60405180910390f35b5f5f1b5f54036101dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d490610b1d565b60405180910390fd5b5f6101e784610805565b90505f6317ce5f6260e01b5f548487888860405160240161020c959493929190610b3b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090505f61080573ffffffffffffffffffffffffffffffffffffffff165a836040516102949190610bde565b5f604051808303818686f4925050503d805f81146102cd576040519150601f19603f3d011682016040523d82523d5f602084013e6102d2565b606091505b5050905080610316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030d90610c3e565b60405180910390fd5b5f61032087610805565b9050838111610364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035b90610ccc565b60405180910390fd5b5f84826103719190610d17565b905060015486146104ac57631149f65960e01b866001548a8b8560405160240161039f959493929190610b3b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050935061080573ffffffffffffffffffffffffffffffffffffffff165a856040516104269190610bde565b5f604051808303815f8787f1925050503d805f8114610460576040519150601f19603f3d011682016040523d82523d5f602084013e610465565b606091505b505080935050826104ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a290610dba565b60405180910390fd5b5b8060025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a81526020019081526020015f205f8282546105079190610dd8565b925050819055505050505050505050565b5f5481565b6002602052815f5260405f20602052805f5260405f205f91509150505481565b5f5f1b5f5403610582576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057990610b1d565b60405180910390fd5b8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f20541015610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060890610e7b565b60405180910390fd5b5f61061b84610805565b90508260025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8681526020019081526020015f205f8282546106789190610d17565b925050819055505f6317ce5f6260e01b836001548788886040516024016106a3959493929190610b3b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090505f61080573ffffffffffffffffffffffffffffffffffffffff165a8360405161072b9190610bde565b5f604051808303815f8787f1925050503d805f8114610765576040519150601f19603f3d011682016040523d82523d5f602084013e61076a565b606091505b505090505f61077887610805565b90508381106107bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b390610f09565b60405180910390fd5b816107fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f390610f71565b60405180910390fd5b50505050505050565b5f61080573ffffffffffffffffffffffffffffffffffffffff1663e3b598fa6001545f54856040518463ffffffff1660e01b815260040161084893929190610f8f565b602060405180830381865afa158015610863573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108879190610fd8565b9050919050565b60015481565b805f8190555050565b61080581565b5f5ffd5b5f819050919050565b6108b9816108a7565b81146108c3575f5ffd5b50565b5f813590506108d4816108b0565b92915050565b5f819050919050565b6108ec816108da565b81146108f6575f5ffd5b50565b5f81359050610907816108e3565b92915050565b5f5f5f60608486031215610924576109236108a3565b5b5f610931868287016108c6565b9350506020610942868287016108c6565b9250506040610953868287016108f9565b9150509250925092565b610966816108da565b82525050565b5f60208201905061097f5f83018461095d565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6109ae82610985565b9050919050565b6109be816109a4565b81146109c8575f5ffd5b50565b5f813590506109d9816109b5565b92915050565b5f5f604083850312156109f5576109f46108a3565b5b5f610a02858286016109cb565b9250506020610a13858286016108c6565b9150509250929050565b610a26816108a7565b82525050565b5f602082019050610a3f5f830184610a1d565b92915050565b5f60208284031215610a5a57610a596108a3565b5b5f610a67848285016108c6565b91505092915050565b5f60208284031215610a8557610a846108a3565b5b5f610a92848285016108f9565b91505092915050565b610aa4816109a4565b82525050565b5f602082019050610abd5f830184610a9b565b92915050565b5f82825260208201905092915050565b7f636f6e747261637420636f6c646b6579206e6f742073657400000000000000005f82015250565b5f610b07601883610ac3565b9150610b1282610ad3565b602082019050919050565b5f6020820190508181035f830152610b3481610afb565b9050919050565b5f60a082019050610b4e5f83018861095d565b610b5b602083018761095d565b610b686040830186610a1d565b610b756060830185610a1d565b610b826080830184610a1d565b9695505050505050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f610bb882610b8c565b610bc28185610b96565b9350610bd2818560208601610ba0565b80840191505092915050565b5f610be98284610bae565b915081905092915050565b7f75736572206465706f73697420616c7068612063616c6c206661696c656400005f82015250565b5f610c28601e83610ac3565b9150610c3382610bf4565b602082019050919050565b5f6020820190508181035f830152610c5581610c1c565b9050919050565b7f636f6e7472616374207374616b652064656372656173656420616674657220645f8201527f65706f7369740000000000000000000000000000000000000000000000000000602082015250565b5f610cb6602683610ac3565b9150610cc182610c5c565b604082019050919050565b5f6020820190508181035f830152610ce381610caa565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610d21826108a7565b9150610d2c836108a7565b9250828203905081811115610d4457610d43610cea565b5b92915050565b7f75736572206465706f7369742c206d6f7665207374616b652063616c6c2066615f8201527f696c656400000000000000000000000000000000000000000000000000000000602082015250565b5f610da4602483610ac3565b9150610daf82610d4a565b604082019050919050565b5f6020820190508181035f830152610dd181610d98565b9050919050565b5f610de2826108a7565b9150610ded836108a7565b9250828201905080821115610e0557610e04610cea565b5b92915050565b7f757365722077697468647261772c20696e73756666696369656e7420616c70685f8201527f612062616c616e63650000000000000000000000000000000000000000000000602082015250565b5f610e65602983610ac3565b9150610e7082610e0b565b604082019050919050565b5f6020820190508181035f830152610e9281610e59565b9050919050565b7f636f6e7472616374207374616b6520696e6372656173656420616674657220775f8201527f6974686472617700000000000000000000000000000000000000000000000000602082015250565b5f610ef3602783610ac3565b9150610efe82610e99565b604082019050919050565b5f6020820190508181035f830152610f2081610ee7565b9050919050565b7f7573657220776974686472617720616c7068612063616c6c206661696c6564005f82015250565b5f610f5b601f83610ac3565b9150610f6682610f27565b602082019050919050565b5f6020820190508181035f830152610f8881610f4f565b9050919050565b5f606082019050610fa25f83018661095d565b610faf602083018561095d565b610fbc6040830184610a1d565b949350505050565b5f81519050610fd2816108b0565b92915050565b5f60208284031215610fed57610fec6108a3565b5b5f610ffa84828501610fc4565b9150509291505056fea2646970667358221220a0d4b2eb5f0c7f74a27f987e803ae1c8465e0da35f09c240ddb6bac757ce422164736f6c634300081e0033"; diff --git a/contract-tests/src/contracts/bridgeToken.ts b/contract-tests/src/contracts/bridgeToken.ts deleted file mode 100644 index f8b3ea4d03..0000000000 --- a/contract-tests/src/contracts/bridgeToken.ts +++ /dev/null @@ -1,631 +0,0 @@ -export const BRIDGE_TOKEN_CONTRACT_ABI = [ - { - "inputs": [ - { - "internalType": "string", - "name": "name_", - "type": "string" - }, - { - "internalType": "string", - "name": "symbol_", - "type": "string" - }, - { - "internalType": "address", - "name": "admin", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "AccessControlBadConfirmation", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "neededRole", - "type": "bytes32" - } - ], - "name": "AccessControlUnauthorizedAccount", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "allowance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "needed", - "type": "uint256" - } - ], - "name": "ERC20InsufficientAllowance", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "balance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "needed", - "type": "uint256" - } - ], - "name": "ERC20InsufficientBalance", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "approver", - "type": "address" - } - ], - "name": "ERC20InvalidApprover", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "receiver", - "type": "address" - } - ], - "name": "ERC20InvalidReceiver", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "ERC20InvalidSender", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "ERC20InvalidSpender", - "type": "error" - }, - { - "inputs": [], - "name": "UnauthorizedHandler", - "type": "error" - }, - { - "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": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "previousAdminRole", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "newAdminRole", - "type": "bytes32" - } - ], - "name": "RoleAdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleGranted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleRevoked", - "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": [], - "name": "DEFAULT_ADMIN_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "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": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "burnFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - } - ], - "name": "getRoleAdmin", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "grantRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "hasRole", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "isAdmin", - "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": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "callerConfirmation", - "type": "address" - } - ], - "name": "renounceRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "revokeRole", - "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": "value", - "type": "uint256" - } - ], - "name": "transfer", - "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": "value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } -]; - -export const BRIDGE_TOKEN_CONTRACT_BYTECODE = "0x60806040523480156200001157600080fd5b5060405162000fac38038062000fac8339810160408190526200003491620001ea565b8282600362000044838262000308565b50600462000053828262000308565b5062000065915060009050826200006f565b50505050620003d4565b60008281526005602090815260408083206001600160a01b038516845290915281205460ff16620001185760008381526005602090815260408083206001600160a01b03861684529091529020805460ff19166001179055620000cf3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016200011c565b5060005b92915050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200014a57600080fd5b81516001600160401b038082111562000167576200016762000122565b604051601f8301601f19908116603f0116810190828211818310171562000192576200019262000122565b8160405283815260209250866020858801011115620001b057600080fd5b600091505b83821015620001d45785820183015181830184015290820190620001b5565b6000602085830101528094505050505092915050565b6000806000606084860312156200020057600080fd5b83516001600160401b03808211156200021857600080fd5b620002268783880162000138565b945060208601519150808211156200023d57600080fd5b506200024c8682870162000138565b604086015190935090506001600160a01b03811681146200026c57600080fd5b809150509250925092565b600181811c908216806200028c57607f821691505b602082108103620002ad57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000303576000816000526020600020601f850160051c81016020861015620002de5750805b601f850160051c820191505b81811015620002ff57828155600101620002ea565b5050505b505050565b81516001600160401b0381111562000324576200032462000122565b6200033c8162000335845462000277565b84620002b3565b602080601f8311600181146200037457600084156200035b5750858301515b600019600386901b1c1916600185901b178555620002ff565b600085815260208120601f198616915b82811015620003a55788860151825594840194600190910190840162000384565b5085821015620003c45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610bc880620003e46000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806340c10f19116100ad57806395d89b411161007157806395d89b4114610288578063a217fddf14610290578063a9059cbb14610298578063d547741f146102ab578063dd62ed3e146102be57600080fd5b806340c10f191461021357806342966c681461022657806370a082311461023957806379cc67901461026257806391d148541461027557600080fd5b8063248a9ca3116100f4578063248a9ca3146101a657806324d7806c146101c95780632f2ff15d146101dc578063313ce567146101f157806336568abe1461020057600080fd5b806301ffc9a71461013157806306fdde0314610159578063095ea7b31461016e57806318160ddd1461018157806323b872dd14610193575b600080fd5b61014461013f3660046109ab565b6102f7565b60405190151581526020015b60405180910390f35b61016161032e565b60405161015091906109dc565b61014461017c366004610a47565b6103c0565b6002545b604051908152602001610150565b6101446101a1366004610a71565b6103d8565b6101856101b4366004610aad565b60009081526005602052604090206001015490565b6101446101d7366004610ac6565b6103fc565b6101ef6101ea366004610ae1565b610408565b005b60405160128152602001610150565b6101ef61020e366004610ae1565b610433565b6101ef610221366004610a47565b61046b565b6101ef610234366004610aad565b610480565b610185610247366004610ac6565b6001600160a01b031660009081526020819052604090205490565b6101ef610270366004610a47565b61048d565b610144610283366004610ae1565b6104a2565b6101616104cd565b610185600081565b6101446102a6366004610a47565b6104dc565b6101ef6102b9366004610ae1565b6104ea565b6101856102cc366004610b0d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60006001600160e01b03198216637965db0b60e01b148061032857506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606003805461033d90610b37565b80601f016020809104026020016040519081016040528092919081815260200182805461036990610b37565b80156103b65780601f1061038b576101008083540402835291602001916103b6565b820191906000526020600020905b81548152906001019060200180831161039957829003601f168201915b5050505050905090565b6000336103ce81858561050f565b5060019392505050565b6000336103e685828561051c565b6103f1858585610599565b506001949350505050565b600061032881836104a2565b600082815260056020526040902060010154610423816105f8565b61042d8383610602565b50505050565b6001600160a01b038116331461045c5760405163334bd91960e11b815260040160405180910390fd5b6104668282610696565b505050565b6000610476816105f8565b6104668383610703565b61048a338261073d565b50565b6000610498816105f8565b610466838361073d565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606004805461033d90610b37565b6000336103ce818585610599565b600082815260056020526040902060010154610505816105f8565b61042d8383610696565b6104668383836001610773565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461042d578181101561058a57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61042d84848484036000610773565b6001600160a01b0383166105c357604051634b637e8f60e11b815260006004820152602401610581565b6001600160a01b0382166105ed5760405163ec442f0560e01b815260006004820152602401610581565b610466838383610848565b61048a8133610972565b600061060e83836104a2565b61068e5760008381526005602090815260408083206001600160a01b03861684529091529020805460ff191660011790556106463390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610328565b506000610328565b60006106a283836104a2565b1561068e5760008381526005602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610328565b6001600160a01b03821661072d5760405163ec442f0560e01b815260006004820152602401610581565b61073960008383610848565b5050565b6001600160a01b03821661076757604051634b637e8f60e11b815260006004820152602401610581565b61073982600083610848565b6001600160a01b03841661079d5760405163e602df0560e01b815260006004820152602401610581565b6001600160a01b0383166107c757604051634a1406b160e11b815260006004820152602401610581565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561042d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161083a91815260200190565b60405180910390a350505050565b6001600160a01b0383166108735780600260008282546108689190610b71565b909155506108e59050565b6001600160a01b038316600090815260208190526040902054818110156108c65760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610581565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661090157600280548290039055610920565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161096591815260200190565b60405180910390a3505050565b61097c82826104a2565b6107395760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610581565b6000602082840312156109bd57600080fd5b81356001600160e01b0319811681146109d557600080fd5b9392505050565b60006020808352835180602085015260005b81811015610a0a578581018301518582016040015282016109ee565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610a4257600080fd5b919050565b60008060408385031215610a5a57600080fd5b610a6383610a2b565b946020939093013593505050565b600080600060608486031215610a8657600080fd5b610a8f84610a2b565b9250610a9d60208501610a2b565b9150604084013590509250925092565b600060208284031215610abf57600080fd5b5035919050565b600060208284031215610ad857600080fd5b6109d582610a2b565b60008060408385031215610af457600080fd5b82359150610b0460208401610a2b565b90509250929050565b60008060408385031215610b2057600080fd5b610b2983610a2b565b9150610b0460208401610a2b565b600181811c90821680610b4b57607f821691505b602082108103610b6b57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561032857634e487b7160e01b600052601160045260246000fdfea2646970667358221220e179fc58c926e64cb6e87416f8ca64c117044e3195b184afe45038857606c15364736f6c63430008160033" diff --git a/contract-tests/src/contracts/crowdloan.ts b/contract-tests/src/contracts/crowdloan.ts deleted file mode 100644 index e104c7d4bd..0000000000 --- a/contract-tests/src/contracts/crowdloan.ts +++ /dev/null @@ -1,261 +0,0 @@ -export const ICROWDLOAN_ADDRESS = "0x0000000000000000000000000000000000000809"; - -export const ICrowdloanABI = [ - { - "inputs": [ - { - "internalType": "uint32", - "name": "crowdloanId", - "type": "uint32" - }, - { - "internalType": "uint64", - "name": "amount", - "type": "uint64" - } - ], - "name": "contribute", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "deposit", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "minContribution", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "cap", - "type": "uint64" - }, - { - "internalType": "uint32", - "name": "end", - "type": "uint32" - }, - { - "internalType": "address", - "name": "targetAddress", - "type": "address" - } - ], - "name": "create", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "crowdloanId", - "type": "uint32" - } - ], - "name": "dissolve", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "crowdloanId", - "type": "uint32" - } - ], - "name": "finalize", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "crowdloanId", - "type": "uint32" - }, - { - "internalType": "bytes32", - "name": "coldkey", - "type": "bytes32" - } - ], - "name": "getContribution", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "crowdloanId", - "type": "uint32" - } - ], - "name": "getCrowdloan", - "outputs": [ - { - "components": [ - { - "internalType": "bytes32", - "name": "creator", - "type": "bytes32" - }, - { - "internalType": "uint64", - "name": "deposit", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "min_contribution", - "type": "uint64" - }, - { - "internalType": "uint32", - "name": "end", - "type": "uint32" - }, - { - "internalType": "uint64", - "name": "cap", - "type": "uint64" - }, - { - "internalType": "bytes32", - "name": "funds_account", - "type": "bytes32" - }, - { - "internalType": "uint64", - "name": "raised", - "type": "uint64" - }, - { - "internalType": "bool", - "name": "has_target_address", - "type": "bool" - }, - { - "internalType": "bytes32", - "name": "target_address", - "type": "bytes32" - }, - { - "internalType": "bool", - "name": "finalized", - "type": "bool" - }, - { - "internalType": "uint32", - "name": "contributors_count", - "type": "uint32" - } - ], - "internalType": "struct CrowdloanInfo", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "crowdloanId", - "type": "uint32" - } - ], - "name": "refund", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "crowdloanId", - "type": "uint32" - }, - { - "internalType": "uint64", - "name": "newCap", - "type": "uint64" - } - ], - "name": "updateCap", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "crowdloanId", - "type": "uint32" - }, - { - "internalType": "uint32", - "name": "newEnd", - "type": "uint32" - } - ], - "name": "updateEnd", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "crowdloanId", - "type": "uint32" - }, - { - "internalType": "uint64", - "name": "newMinContribution", - "type": "uint64" - } - ], - "name": "updateMinContribution", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "crowdloanId", - "type": "uint32" - } - ], - "name": "withdraw", - "outputs": [], - "stateMutability": "payable", - "type": "function" - } -] \ No newline at end of file diff --git a/contract-tests/src/contracts/incremental.sol b/contract-tests/src/contracts/incremental.sol deleted file mode 100644 index 2b3bc2fd49..0000000000 --- a/contract-tests/src/contracts/incremental.sol +++ /dev/null @@ -1,22 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma solidity >=0.8.2 <0.9.0; - -contract Storage { - uint256 number; - - /** - * @dev Store value in variable - * @param num value to store - */ - function store(uint256 num) public { - number = num; - } - - /** - * @dev Return value - * @return value of 'number' - */ - function retrieve() public view returns (uint256) { - return number; - } -} diff --git a/contract-tests/src/contracts/incremental.ts b/contract-tests/src/contracts/incremental.ts deleted file mode 100644 index b19909e491..0000000000 --- a/contract-tests/src/contracts/incremental.ts +++ /dev/null @@ -1,39 +0,0 @@ -export const INCREMENTAL_CONTRACT_ABI = [ - { - "inputs": [], - "name": "retrieve", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "num", - "type": "uint256" - } - ], - "name": "store", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } -]; - -/* -"compiler": { - "version": "0.8.26+commit.8a97fa7a" - }, -*/ - -export const INCREMENTAL_CONTRACT_BYTECODE = "6080604052348015600e575f80fd5b506101438061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610034575f3560e01c80632e64cec1146100385780636057361d14610056575b5f80fd5b610040610072565b60405161004d919061009b565b60405180910390f35b610070600480360381019061006b91906100e2565b61007a565b005b5f8054905090565b805f8190555050565b5f819050919050565b61009581610083565b82525050565b5f6020820190506100ae5f83018461008c565b92915050565b5f80fd5b6100c181610083565b81146100cb575f80fd5b50565b5f813590506100dc816100b8565b92915050565b5f602082840312156100f7576100f66100b4565b5b5f610104848285016100ce565b9150509291505056fea26469706673582212209a0dd35336aff1eb3eeb11db76aa60a1427a12c1b92f945ea8c8d1dfa337cf2264736f6c634300081a0033" - - - diff --git a/contract-tests/src/contracts/leasing.ts b/contract-tests/src/contracts/leasing.ts deleted file mode 100644 index 80321c7462..0000000000 --- a/contract-tests/src/contracts/leasing.ts +++ /dev/null @@ -1,174 +0,0 @@ -export const ILEASING_ADDRESS = "0x000000000000000000000000000000000000080a"; - -export const ILeasingABI = [ - { - "inputs": [ - { - "internalType": "uint64", - "name": "crowdloanDeposit", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "crowdloanMinContribution", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "crowdloanCap", - "type": "uint64" - }, - { - "internalType": "uint32", - "name": "crowdloanEnd", - "type": "uint32" - }, - { - "internalType": "uint8", - "name": "leasingEmissionsShare", - "type": "uint8" - }, - { - "internalType": "bool", - "name": "hasLeasingEndBlock", - "type": "bool" - }, - { - "internalType": "uint32", - "name": "leasingEndBlock", - "type": "uint32" - } - ], - "name": "createLeaseCrowdloan", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "leaseId", - "type": "uint32" - }, - { - "internalType": "bytes32", - "name": "contributor", - "type": "bytes32" - } - ], - "name": "getContributorShare", - "outputs": [ - { - "internalType": "uint128", - "name": "", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "", - "type": "uint128" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "leaseId", - "type": "uint32" - } - ], - "name": "getLease", - "outputs": [ - { - "components": [ - { - "internalType": "bytes32", - "name": "beneficiary", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "coldkey", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" - }, - { - "internalType": "uint8", - "name": "emissions_share", - "type": "uint8" - }, - { - "internalType": "bool", - "name": "has_end_block", - "type": "bool" - }, - { - "internalType": "uint32", - "name": "end_block", - "type": "uint32" - }, - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - }, - { - "internalType": "uint64", - "name": "cost", - "type": "uint64" - } - ], - "internalType": "struct LeaseInfo", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - } - ], - "name": "getLeaseIdForSubnet", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "leaseId", - "type": "uint32" - }, - { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" - } - ], - "name": "terminateLease", - "outputs": [], - "stateMutability": "payable", - "type": "function" - } -] \ No newline at end of file diff --git a/contract-tests/src/contracts/metagraph.ts b/contract-tests/src/contracts/metagraph.ts deleted file mode 100644 index d0c3bf5154..0000000000 --- a/contract-tests/src/contracts/metagraph.ts +++ /dev/null @@ -1,391 +0,0 @@ -export const IMETAGRAPH_ADDRESS = "0x0000000000000000000000000000000000000802"; - -export const IMetagraphABI = [ - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint16", - name: "uid", - type: "uint16", - }, - ], - name: "getAxon", - outputs: [ - { - components: [ - { - internalType: "uint64", - name: "block", - type: "uint64", - }, - { - internalType: "uint32", - name: "version", - type: "uint32", - }, - { - internalType: "uint128", - name: "ip", - type: "uint128", - }, - { - internalType: "uint16", - name: "port", - type: "uint16", - }, - { - internalType: "uint8", - name: "ip_type", - type: "uint8", - }, - { - internalType: "uint8", - name: "protocol", - type: "uint8", - }, - ], - internalType: "struct AxonInfo", - name: "", - type: "tuple", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint16", - name: "uid", - type: "uint16", - }, - ], - name: "getColdkey", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint16", - name: "uid", - type: "uint16", - }, - ], - name: "getConsensus", - outputs: [ - { - internalType: "uint16", - name: "", - type: "uint16", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint16", - name: "uid", - type: "uint16", - }, - ], - name: "getDividends", - outputs: [ - { - internalType: "uint16", - name: "", - type: "uint16", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint16", - name: "uid", - type: "uint16", - }, - ], - name: "getEmission", - outputs: [ - { - internalType: "uint64", - name: "", - type: "uint64", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint16", - name: "uid", - type: "uint16", - }, - ], - name: "getHotkey", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint16", - name: "uid", - type: "uint16", - }, - ], - name: "getIncentive", - outputs: [ - { - internalType: "uint16", - name: "", - type: "uint16", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint16", - name: "uid", - type: "uint16", - }, - ], - name: "getIsActive", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint16", - name: "uid", - type: "uint16", - }, - ], - name: "getLastUpdate", - outputs: [ - { - internalType: "uint64", - name: "", - type: "uint64", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint16", - name: "uid", - type: "uint16", - }, - ], - name: "getRank", - outputs: [ - { - internalType: "uint16", - name: "", - type: "uint16", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint16", - name: "uid", - type: "uint16", - }, - ], - name: "getStake", - outputs: [ - { - internalType: "uint64", - name: "", - type: "uint64", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint16", - name: "uid", - type: "uint16", - }, - ], - name: "getTrust", - outputs: [ - { - internalType: "uint16", - name: "", - type: "uint16", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - ], - name: "getUidCount", - outputs: [ - { - internalType: "uint16", - name: "", - type: "uint16", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint16", - name: "uid", - type: "uint16", - }, - ], - name: "getValidatorStatus", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint16", - name: "uid", - type: "uint16", - }, - ], - name: "getVtrust", - outputs: [ - { - internalType: "uint16", - name: "", - type: "uint16", - }, - ], - stateMutability: "view", - type: "function", - }, -]; \ No newline at end of file diff --git a/contract-tests/src/contracts/neuron.ts b/contract-tests/src/contracts/neuron.ts deleted file mode 100644 index 4a8fb47e4c..0000000000 --- a/contract-tests/src/contracts/neuron.ts +++ /dev/null @@ -1,235 +0,0 @@ -export const INEURON_ADDRESS = "0x0000000000000000000000000000000000000804"; - -export const INeuronABI = [ - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "bytes32", - name: "commitHash", - type: "bytes32", - }, - ], - name: "commitWeights", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint16[]", - name: "uids", - type: "uint16[]", - }, - { - internalType: "uint16[]", - name: "values", - type: "uint16[]", - }, - { - internalType: "uint16[]", - name: "salt", - type: "uint16[]", - }, - { - internalType: "uint64", - name: "versionKey", - type: "uint64", - }, - ], - name: "revealWeights", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint16[]", - name: "dests", - type: "uint16[]", - }, - { - internalType: "uint16[]", - name: "weights", - type: "uint16[]", - }, - { - internalType: "uint64", - name: "versionKey", - type: "uint64", - }, - ], - name: "setWeights", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint32", - name: "version", - type: "uint32", - }, - { - internalType: "uint128", - name: "ip", - type: "uint128", - }, - { - internalType: "uint16", - name: "port", - type: "uint16", - }, - { - internalType: "uint8", - name: "ipType", - type: "uint8", - }, - { - internalType: "uint8", - name: "protocol", - type: "uint8", - }, - { - internalType: "uint8", - name: "placeholder1", - type: "uint8", - }, - { - internalType: "uint8", - name: "placeholder2", - type: "uint8", - }, - ], - name: "serveAxon", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint32", - name: "version", - type: "uint32", - }, - { - internalType: "uint128", - name: "ip", - type: "uint128", - }, - { - internalType: "uint16", - name: "port", - type: "uint16", - }, - { - internalType: "uint8", - name: "ipType", - type: "uint8", - }, - { - internalType: "uint8", - name: "protocol", - type: "uint8", - }, - { - internalType: "uint8", - name: "placeholder1", - type: "uint8", - }, - { - internalType: "uint8", - name: "placeholder2", - type: "uint8", - }, - { - internalType: "bytes", - name: "certificate", - type: "bytes", - }, - ], - name: "serveAxonTls", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint32", - name: "version", - type: "uint32", - }, - { - internalType: "uint128", - name: "ip", - type: "uint128", - }, - { - internalType: "uint16", - name: "port", - type: "uint16", - }, - { - internalType: "uint8", - name: "ipType", - type: "uint8", - }, - ], - name: "servePrometheus", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "bytes32", - name: "hotkey", - type: "bytes32", - }, - ], - name: "burnedRegister", - outputs: [], - stateMutability: "payable", - type: "function", - }, -]; \ No newline at end of file diff --git a/contract-tests/src/contracts/precompileGas.sol b/contract-tests/src/contracts/precompileGas.sol deleted file mode 100644 index ee31bce61d..0000000000 --- a/contract-tests/src/contracts/precompileGas.sol +++ /dev/null @@ -1,62 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.23; - -interface ISR25519Verify { - function verify( - bytes32 message, - bytes32 publicKey, - bytes32 r, - bytes32 s - ) external pure returns (bool); -} - -interface IED25519Verify { - function verify( - bytes32 message, - bytes32 publicKey, - bytes32 r, - bytes32 s - ) external pure returns (bool); -} - -contract PrecompileGas { - address constant IED25519VERIFY_ADDRESS = - 0x0000000000000000000000000000000000000402; - address constant ISR25519VERIFY_ADDRESS = - 0x0000000000000000000000000000000000000403; - IED25519Verify constant ed25519 = IED25519Verify(IED25519VERIFY_ADDRESS); - ISR25519Verify constant sr25519 = ISR25519Verify(ISR25519VERIFY_ADDRESS); - - event Log(string message); - - bytes32 message = - 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef; - bytes32 publicKey = - 0x0000000000000000000000000000000000000000000000000000000000000000; - bytes32 r = - 0x0000000000000000000000000000000000000000000000000000000000000000; - bytes32 s = - 0x0000000000000000000000000000000000000000000000000000000000000000; - - /** - * @notice Call the precompile using hardcoded signature data - * @param iterations Number of times to call the precompile - */ - function callED25519(uint64 iterations) external { - for (uint64 i = 0; i < iterations; i++) { - ed25519.verify(message, publicKey, r, s); - } - emit Log("callED25519"); - } - - /** - * @notice Call the precompile using hardcoded signature data - * @param iterations Number of times to call the precompile - */ - function callSR25519(uint64 iterations) external { - for (uint64 i = 0; i < iterations; i++) { - sr25519.verify(message, publicKey, r, s); - } - emit Log("callSR25519"); - } -} diff --git a/contract-tests/src/contracts/precompileGas.ts b/contract-tests/src/contracts/precompileGas.ts deleted file mode 100644 index d94cfd5d26..0000000000 --- a/contract-tests/src/contracts/precompileGas.ts +++ /dev/null @@ -1,44 +0,0 @@ - -export const PrecompileGas_CONTRACT_ABI = [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "message", - "type": "string" - } - ], - "name": "Log", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "iterations", - "type": "uint64" - } - ], - "name": "callED25519", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "iterations", - "type": "uint64" - } - ], - "name": "callSR25519", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } -] - -export const PrecompileGas_CONTRACT_BYTECODE = "60806040527f1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef5f1b5f555f5f1b6001555f5f1b6002555f5f1b6003553480156045575f5ffd5b5061048b806100535f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806356554a5714610038578063bd9cac2b14610054575b5f5ffd5b610052600480360381019061004d919061028f565b610070565b005b61006e6004803603810190610069919061028f565b61015f565b005b5f5f90505b8167ffffffffffffffff168167ffffffffffffffff1610156101265761040373ffffffffffffffffffffffffffffffffffffffff1663869adcb95f546001546002546003546040518563ffffffff1660e01b81526004016100d994939291906102d2565b602060405180830381865afa1580156100f4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610118919061034a565b508080600101915050610075565b507fcf34ef537ac33ee1ac626ca1587a0a7e8e51561e5514f8cb36afa1c5102b3bab604051610154906103cf565b60405180910390a150565b5f5f90505b8167ffffffffffffffff168167ffffffffffffffff1610156102155761040273ffffffffffffffffffffffffffffffffffffffff1663869adcb95f546001546002546003546040518563ffffffff1660e01b81526004016101c894939291906102d2565b602060405180830381865afa1580156101e3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610207919061034a565b508080600101915050610164565b507fcf34ef537ac33ee1ac626ca1587a0a7e8e51561e5514f8cb36afa1c5102b3bab60405161024390610437565b60405180910390a150565b5f5ffd5b5f67ffffffffffffffff82169050919050565b61026e81610252565b8114610278575f5ffd5b50565b5f8135905061028981610265565b92915050565b5f602082840312156102a4576102a361024e565b5b5f6102b18482850161027b565b91505092915050565b5f819050919050565b6102cc816102ba565b82525050565b5f6080820190506102e55f8301876102c3565b6102f260208301866102c3565b6102ff60408301856102c3565b61030c60608301846102c3565b95945050505050565b5f8115159050919050565b61032981610315565b8114610333575f5ffd5b50565b5f8151905061034481610320565b92915050565b5f6020828403121561035f5761035e61024e565b5b5f61036c84828501610336565b91505092915050565b5f82825260208201905092915050565b7f63616c6c535232353531390000000000000000000000000000000000000000005f82015250565b5f6103b9600b83610375565b91506103c482610385565b602082019050919050565b5f6020820190508181035f8301526103e6816103ad565b9050919050565b7f63616c6c454432353531390000000000000000000000000000000000000000005f82015250565b5f610421600b83610375565b915061042c826103ed565b602082019050919050565b5f6020820190508181035f83015261044e81610415565b905091905056fea26469706673582212202addcdae9c59ee78157cddedc3148678edf455132bdfc62347f85e7c660b4d2164736f6c634300081e0033" \ No newline at end of file diff --git a/contract-tests/src/contracts/precompileWrapper.sol b/contract-tests/src/contracts/precompileWrapper.sol deleted file mode 100644 index 57ee067ff5..0000000000 --- a/contract-tests/src/contracts/precompileWrapper.sol +++ /dev/null @@ -1,367 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -// Precompile addresses -address constant ISUBTENSOR_BALANCE_TRANSFER_ADDRESS = 0x0000000000000000000000000000000000000800; -address constant IMETAGRAPH_ADDRESS = 0x0000000000000000000000000000000000000802; -address constant ISUBNET_ADDRESS = 0x0000000000000000000000000000000000000803; -address constant INEURON_ADDRESS = 0x0000000000000000000000000000000000000804; -address constant ISTAKING_V2_ADDRESS = 0x0000000000000000000000000000000000000805; -address constant IUID_LOOKUP_ADDRESS = 0x0000000000000000000000000000000000000806; -address constant IALPHA_ADDRESS = 0x0000000000000000000000000000000000000808; -address constant ICROWDLOAN_ADDRESS = 0x0000000000000000000000000000000000000809; -address constant ILEASING_ADDRESS = 0x000000000000000000000000000000000000080a; -address constant IPROXY_ADDRESS = 0x000000000000000000000000000000000000080b; -address constant IADDRESS_MAPPING_ADDRESS = 0x000000000000000000000000000000000000080C; - -// Interface definitions -interface ISubtensorBalanceTransfer { - function transfer(bytes32 data) external payable; -} - -interface IMetagraph { - function getUidCount(uint16 netuid) external view returns (uint16); -} - -interface ISubnet { - function registerNetwork( - bytes32 hotkey, - string memory subnetName, - string memory githubRepo, - string memory subnetContact, - string memory subnetUrl, - string memory discord, - string memory description, - string memory additional - ) external payable; - function getServingRateLimit(uint16 netuid) external view returns (uint64); - function getNetworkRegistrationBlock(uint16 netuid) external view returns (uint64); -} - -interface INeuron { - function burnedRegister(uint16 netuid, bytes32 hotkey) external payable; -} - -interface IStaking { - function addStake( - bytes32 hotkey, - uint256 amount, - uint256 netuid - ) external payable; - function removeStake( - bytes32 hotkey, - uint256 amount, - uint256 netuid - ) external payable; - function getTotalColdkeyStake( - bytes32 coldkey - ) external view returns (uint256); - function getTotalHotkeyStake( - bytes32 hotkey - ) external view returns (uint256); -} - -struct LookupItem { - uint16 uid; - uint64 block_associated; -} - -interface IUidLookup { - function uidLookup( - uint16 netuid, - address evm_address, - uint16 limit - ) external view returns (LookupItem[] memory); -} - -interface IAlpha { - function getAlphaPrice(uint16 netuid) external view returns (uint256); -} - -struct CrowdloanInfo { - bytes32 creator; - uint64 deposit; - uint64 min_contribution; - uint32 end; - uint64 cap; - bytes32 funds_account; - uint64 raised; - bool has_target_address; - bytes32 target_address; - bool finalized; - uint32 contributors_count; -} - -interface ICrowdloan { - function getCrowdloan( - uint32 crowdloanId - ) external view returns (CrowdloanInfo memory); - function getContribution( - uint32 crowdloanId, - bytes32 coldkey - ) external view returns (uint64); - function create( - uint64 deposit, - uint64 minContribution, - uint64 cap, - uint32 end, - address targetAddress - ) external payable; -} - -struct LeaseInfo { - bytes32 beneficiary; - bytes32 coldkey; - bytes32 hotkey; - uint8 emissions_share; - bool has_end_block; - uint32 end_block; - uint16 netuid; - uint64 cost; -} - -interface ILeasing { - function getContributorShare( - uint32 leaseId, - bytes32 contributor - ) external view returns (uint128, uint128); - function createLeaseCrowdloan( - uint64 crowdloanDeposit, - uint64 crowdloanMinContribution, - uint64 crowdloanCap, - uint32 crowdloanEnd, - uint8 leasingEmissionsShare, - bool hasLeasingEndBlock, - uint32 leasingEndBlock - ) external payable; -} - -interface IProxy { - struct ProxyInfo { - bytes32 delegate; - uint256 proxy_type; - uint256 delay; - } - - function addProxy( - bytes32 delegate, - uint8 proxy_type, - uint32 delay - ) external; - function proxyCall( - bytes32 real, - uint8[] memory force_proxy_type, - uint8[] memory call - ) external; - function getProxies( - bytes32 account - ) external view returns (ProxyInfo[] memory); -} - -interface IAddressMapping { - function addressMapping( - address target_address - ) external view returns (bytes32); -} - -/** - * @title PrecompileWrapper - * @dev A wrapper contract that calls all precompile functions directly - * instead of using low-level calls like address.call() - */ -contract PrecompileWrapper { - ISubtensorBalanceTransfer public constant balanceTransfer = - ISubtensorBalanceTransfer(ISUBTENSOR_BALANCE_TRANSFER_ADDRESS); - IMetagraph public constant metagraph = IMetagraph(IMETAGRAPH_ADDRESS); - ISubnet public constant subnet = ISubnet(ISUBNET_ADDRESS); - INeuron public constant neuron = INeuron(INEURON_ADDRESS); - IStaking public constant staking = IStaking(ISTAKING_V2_ADDRESS); - IUidLookup public constant uidLookupPrecompile = - IUidLookup(IUID_LOOKUP_ADDRESS); - IAlpha public constant alpha = IAlpha(IALPHA_ADDRESS); - ICrowdloan public constant crowdloan = ICrowdloan(ICROWDLOAN_ADDRESS); - ILeasing public constant leasing = ILeasing(ILEASING_ADDRESS); - IProxy public constant proxy = IProxy(IPROXY_ADDRESS); - IAddressMapping public constant addressMappingPrecompile = - IAddressMapping(IADDRESS_MAPPING_ADDRESS); - - // ============ SubtensorBalanceTransfer Functions ============ - function transfer(bytes32 data) external payable { - balanceTransfer.transfer{value: msg.value}(data); - } - - // ============ Metagraph Functions ============ - - function getUidCount(uint16 netuid) external view returns (uint16) { - return metagraph.getUidCount(netuid); - } - - // ============ Subnet Functions ============ - - function registerNetworkWithDetails( - bytes32 hotkey, - string memory subnetName, - string memory githubRepo, - string memory subnetContact, - string memory subnetUrl, - string memory discord, - string memory description, - string memory additional - ) external payable { - subnet.registerNetwork( - hotkey, - subnetName, - githubRepo, - subnetContact, - subnetUrl, - discord, - description, - additional - ); - } - - function getServingRateLimit(uint16 netuid) external view returns (uint64) { - return subnet.getServingRateLimit(netuid); - } - - function getNetworkRegistrationBlock(uint16 netuid) external view returns (uint64) { - return subnet.getNetworkRegistrationBlock(netuid); - } - - // ============ Neuron Functions ============ - - function burnedRegister(uint16 netuid, bytes32 hotkey) external payable { - neuron.burnedRegister{value: msg.value}(netuid, hotkey); - } - - // ============ Staking Functions ============ - function addStake( - bytes32 hotkey, - uint256 amount, - uint256 netuid - ) external payable { - staking.addStake(hotkey, amount, netuid); - } - - function removeStake( - bytes32 hotkey, - uint256 amount, - uint256 netuid - ) external payable { - staking.removeStake(hotkey, amount, netuid); - } - - function getTotalColdkeyStake( - bytes32 coldkey - ) external view returns (uint256) { - return staking.getTotalColdkeyStake(coldkey); - } - - function getTotalHotkeyStake( - bytes32 hotkey - ) external view returns (uint256) { - return staking.getTotalHotkeyStake(hotkey); - } - - // ============ Alpha Functions ============ - - function getAlphaPrice(uint16 netuid) external view returns (uint256) { - return alpha.getAlphaPrice(netuid); - } - - // ============ Address Mapping Functions ============ - - function addressMapping( - address target_address - ) external view returns (bytes32) { - return addressMappingPrecompile.addressMapping(target_address); - } - - // ============ Proxy Functions ============ - - function proxyCall( - bytes32 real, - uint8[] memory force_proxy_type, - uint8[] memory call - ) external { - proxy.proxyCall(real, force_proxy_type, call); - } - - function addProxy( - bytes32 delegate, - uint8 proxy_type, - uint32 delay - ) external { - proxy.addProxy(delegate, proxy_type, delay); - } - - function getProxies( - bytes32 account - ) external view returns (IProxy.ProxyInfo[] memory) { - return proxy.getProxies(account); - } - - // ============ UID Lookup Functions ============ - - function uidLookup( - uint16 netuid, - address evm_address, - uint16 limit - ) external view returns (LookupItem[] memory) { - return uidLookupPrecompile.uidLookup(netuid, evm_address, limit); - } - - // ============ Crowdloan Functions ============ - - function getCrowdloan( - uint32 crowdloanId - ) external view returns (CrowdloanInfo memory) { - return crowdloan.getCrowdloan(crowdloanId); - } - - function getContribution( - uint32 crowdloanId, - bytes32 coldkey - ) external view returns (uint64) { - return crowdloan.getContribution(crowdloanId, coldkey); - } - - function createCrowdloan( - uint64 deposit, - uint64 minContribution, - uint64 cap, - uint32 end, - address targetAddress - ) external payable { - crowdloan.create(deposit, minContribution, cap, end, targetAddress); - } - - // ============ Leasing Functions ============ - - function getContributorShare( - uint32 leaseId, - bytes32 contributor - ) external view returns (uint128, uint128) { - return leasing.getContributorShare(leaseId, contributor); - } - - function createLeaseCrowdloan( - uint64 crowdloanDeposit, - uint64 crowdloanMinContribution, - uint64 crowdloanCap, - uint32 crowdloanEnd, - uint8 leasingEmissionsShare, - bool hasLeasingEndBlock, - uint32 leasingEndBlock - ) external payable { - leasing.createLeaseCrowdloan( - crowdloanDeposit, - crowdloanMinContribution, - crowdloanCap, - crowdloanEnd, - leasingEmissionsShare, - hasLeasingEndBlock, - leasingEndBlock - ); - } -} diff --git a/contract-tests/src/contracts/precompileWrapper.ts b/contract-tests/src/contracts/precompileWrapper.ts deleted file mode 100644 index 3e41c5aa02..0000000000 --- a/contract-tests/src/contracts/precompileWrapper.ts +++ /dev/null @@ -1,733 +0,0 @@ -export const PRECOMPILE_WRAPPER_ABI = [ - { - "inputs": [ - { - "internalType": "bytes32", - "name": "delegate", - "type": "bytes32" - }, - { - "internalType": "uint8", - "name": "proxy_type", - "type": "uint8" - }, - { - "internalType": "uint32", - "name": "delay", - "type": "uint32" - } - ], - "name": "addProxy", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - } - ], - "name": "addStake", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "target_address", - "type": "address" - } - ], - "name": "addressMapping", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "addressMappingPrecompile", - "outputs": [ - { - "internalType": "contract IAddressMapping", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "alpha", - "outputs": [ - { - "internalType": "contract IAlpha", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "balanceTransfer", - "outputs": [ - { - "internalType": "contract ISubtensorBalanceTransfer", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - }, - { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" - } - ], - "name": "burnedRegister", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "deposit", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "minContribution", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "cap", - "type": "uint64" - }, - { - "internalType": "uint32", - "name": "end", - "type": "uint32" - }, - { - "internalType": "address", - "name": "targetAddress", - "type": "address" - } - ], - "name": "createCrowdloan", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "crowdloanDeposit", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "crowdloanMinContribution", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "crowdloanCap", - "type": "uint64" - }, - { - "internalType": "uint32", - "name": "crowdloanEnd", - "type": "uint32" - }, - { - "internalType": "uint8", - "name": "leasingEmissionsShare", - "type": "uint8" - }, - { - "internalType": "bool", - "name": "hasLeasingEndBlock", - "type": "bool" - }, - { - "internalType": "uint32", - "name": "leasingEndBlock", - "type": "uint32" - } - ], - "name": "createLeaseCrowdloan", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [], - "name": "crowdloan", - "outputs": [ - { - "internalType": "contract ICrowdloan", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - } - ], - "name": "getAlphaPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "crowdloanId", - "type": "uint32" - }, - { - "internalType": "bytes32", - "name": "coldkey", - "type": "bytes32" - } - ], - "name": "getContribution", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "leaseId", - "type": "uint32" - }, - { - "internalType": "bytes32", - "name": "contributor", - "type": "bytes32" - } - ], - "name": "getContributorShare", - "outputs": [ - { - "internalType": "uint128", - "name": "", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "", - "type": "uint128" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "crowdloanId", - "type": "uint32" - } - ], - "name": "getCrowdloan", - "outputs": [ - { - "components": [ - { - "internalType": "bytes32", - "name": "creator", - "type": "bytes32" - }, - { - "internalType": "uint64", - "name": "deposit", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "min_contribution", - "type": "uint64" - }, - { - "internalType": "uint32", - "name": "end", - "type": "uint32" - }, - { - "internalType": "uint64", - "name": "cap", - "type": "uint64" - }, - { - "internalType": "bytes32", - "name": "funds_account", - "type": "bytes32" - }, - { - "internalType": "uint64", - "name": "raised", - "type": "uint64" - }, - { - "internalType": "bool", - "name": "has_target_address", - "type": "bool" - }, - { - "internalType": "bytes32", - "name": "target_address", - "type": "bytes32" - }, - { - "internalType": "bool", - "name": "finalized", - "type": "bool" - }, - { - "internalType": "uint32", - "name": "contributors_count", - "type": "uint32" - } - ], - "internalType": "struct CrowdloanInfo", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "account", - "type": "bytes32" - } - ], - "name": "getProxies", - "outputs": [ - { - "components": [ - { - "internalType": "bytes32", - "name": "delegate", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "proxy_type", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "delay", - "type": "uint256" - } - ], - "internalType": "struct IProxy.ProxyInfo[]", - "name": "", - "type": "tuple[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - } - ], - "name": "getServingRateLimit", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - } - ], - "name": "getNetworkRegistrationBlock", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "coldkey", - "type": "bytes32" - } - ], - "name": "getTotalColdkeyStake", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" - } - ], - "name": "getTotalHotkeyStake", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - } - ], - "name": "getUidCount", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "leasing", - "outputs": [ - { - "internalType": "contract ILeasing", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "metagraph", - "outputs": [ - { - "internalType": "contract IMetagraph", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "neuron", - "outputs": [ - { - "internalType": "contract INeuron", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "proxy", - "outputs": [ - { - "internalType": "contract IProxy", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "real", - "type": "bytes32" - }, - { - "internalType": "uint8[]", - "name": "force_proxy_type", - "type": "uint8[]" - }, - { - "internalType": "uint8[]", - "name": "call", - "type": "uint8[]" - } - ], - "name": "proxyCall", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" - }, - { - "internalType": "string", - "name": "subnetName", - "type": "string" - }, - { - "internalType": "string", - "name": "githubRepo", - "type": "string" - }, - { - "internalType": "string", - "name": "subnetContact", - "type": "string" - }, - { - "internalType": "string", - "name": "subnetUrl", - "type": "string" - }, - { - "internalType": "string", - "name": "discord", - "type": "string" - }, - { - "internalType": "string", - "name": "description", - "type": "string" - }, - { - "internalType": "string", - "name": "additional", - "type": "string" - } - ], - "name": "registerNetworkWithDetails", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - } - ], - "name": "removeStake", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [], - "name": "staking", - "outputs": [ - { - "internalType": "contract IStaking", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "subnet", - "outputs": [ - { - "internalType": "contract ISubnet", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "data", - "type": "bytes32" - } - ], - "name": "transfer", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - }, - { - "internalType": "address", - "name": "evm_address", - "type": "address" - }, - { - "internalType": "uint16", - "name": "limit", - "type": "uint16" - } - ], - "name": "uidLookup", - "outputs": [ - { - "components": [ - { - "internalType": "uint16", - "name": "uid", - "type": "uint16" - }, - { - "internalType": "uint64", - "name": "block_associated", - "type": "uint64" - } - ], - "internalType": "struct LookupItem[]", - "name": "", - "type": "tuple[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "uidLookupPrecompile", - "outputs": [ - { - "internalType": "contract IUidLookup", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } -]; - -export const PRECOMPILE_WRAPPER_BYTECODE = "6080604052348015600e575f5ffd5b506119368061001c5f395ff3fe6080604052600436106101da575f3560e01c80638bba466c116100fd578063b1f789ef11610092578063d75e3e0d11610062578063d75e3e0d14610547578063db1d0fd51461055c578063ec55688914610571578063fc6679fb14610586575f5ffd5b8063b1f789ef146104de578063bfe252a21461050a578063caf2ebf21461051f578063cd6f4eb114610534575f5ffd5b8063a2176276116100cd578063a217627614610482578063ac3166bf14610497578063afed65f9146104ac578063b0c751b0146104bf575f5ffd5b80638bba466c146103ec57806394e3ac6f14610418578063998538c4146104445780639f246f6f14610463575f5ffd5b80634cf088d91161017357806369e38bc31161014357806369e38bc31461038857806371214e27146103a75780637444dadc146103ba5780637d691e30146103d9575f5ffd5b80634cf088d9146103145780635b53ddde146103295780635b7210c51461033e5780635e25f3f814610375575f5ffd5b80631fc9b141116101ae5780631fc9b141146102825780633175bd98146102955780634054ecca146102d45780634c378a96146102e7575f5ffd5b80620ae759146101de5780630494cd9a146101ff5780630cadeda5146102315780631f19357214610250575b5f5ffd5b3480156101e9575f5ffd5b506101fd6101f8366004610e85565b61059b565b005b34801561020a575f5ffd5b5061021e610219366004610f06565b6105f4565b6040519081526020015b60405180910390f35b34801561023c575f5ffd5b506101fd61024b366004610f33565b610665565b34801561025b575f5ffd5b5061026f61026a366004610f7f565b6106a0565b60405161ffff9091168152602001610228565b6101fd610290366004610f9a565b610705565b3480156102a0575f5ffd5b506102b46102af366004610fc3565b610739565b604080516001600160801b03938416815292909116602083015201610228565b6101fd6102e2366004610fed565b6107b3565b3480156102f2575f5ffd5b506102fc61080481565b6040516001600160a01b039091168152602001610228565b34801561031f575f5ffd5b506102fc61080581565b348015610334575f5ffd5b506102fc61080a81565b348015610349575f5ffd5b5061035d610358366004610fc3565b6107f7565b6040516001600160401b039091168152602001610228565b6101fd610383366004611074565b61086c565b348015610393575f5ffd5b5061021e6103a2366004610f7f565b6108d6565b6101fd6103b53660046111c2565b610901565b3480156103c5575f5ffd5b5061035d6103d4366004610f7f565b610989565b6101fd6103e7366004610f9a565b6109ef565b3480156103f7575f5ffd5b5061040b61040636600461122b565b610a23565b6040516102289190611246565b348015610423575f5ffd5b50610437610432366004611334565b610add565b604051610228919061134b565b34801561044f575f5ffd5b5061021e61045e366004611334565b610b42565b34801561046e575f5ffd5b5061021e61047d366004611334565b610b6a565b34801561048d575f5ffd5b506102fc61080681565b3480156104a2575f5ffd5b506102fc61080c81565b6101fd6104ba3660046113b6565b610b92565b3480156104ca575f5ffd5b5061035d6104d9366004610f7f565b610c26565b3480156104e9575f5ffd5b506104fd6104f8366004611445565b610c51565b6040516102289190611480565b348015610515575f5ffd5b506102fc61080981565b34801561052a575f5ffd5b506102fc61080381565b6101fd610542366004611334565b610cd8565b348015610552575f5ffd5b506102fc61080081565b348015610567575f5ffd5b506102fc61080881565b34801561057c575f5ffd5b506102fc61080b81565b348015610591575f5ffd5b506102fc61080281565b604051620ae75960e01b815261080b90620ae759906105c29086908690869060040161150d565b5f604051808303815f87803b1580156105d9575f5ffd5b505af11580156105eb573d5f5f3e3d5ffd5b50505050505050565b60405163024a66cd60e11b81526001600160a01b03821660048201525f9061080c90630494cd9a906024015b602060405180830381865afa15801561063b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065f9190611541565b92915050565b604051630cadeda560e01b81526004810184905260ff8316602482015263ffffffff8216604482015261080b90630cadeda5906064016105c2565b604051630f8c9ab960e11b815261ffff821660048201525f9061080290631f19357290602401602060405180830381865afa1580156106e1573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065f9190611558565b604051631fc9b14160e01b815260048101849052602481018390526044810182905261080590631fc9b141906064016105c2565b60405163062eb7b360e31b815263ffffffff83166004820152602481018290525f90819061080a90633175bd98906044016040805180830381865afa158015610784573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a89190611589565b915091509250929050565b60405163202a766560e11b815261ffff831660048201526024810182905261080490634054ecca9034906044015f604051808303818588803b1580156105d9575f5ffd5b604051635b7210c560e01b815263ffffffff83166004820152602481018290525f9061080990635b7210c590604401602060405180830381865afa158015610841573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061086591906115c5565b9392505050565b604051631cf98c6b60e01b815261080390631cf98c6b9061089f908b908b908b908b908b908b908b908b9060040161160e565b5f604051808303815f87803b1580156108b6575f5ffd5b505af11580156108c8573d5f5f3e3d5ffd5b505050505050505050505050565b6040516369e38bc360e01b815261ffff821660048201525f90610808906369e38bc390602401610620565b60405163127e1adb60e01b81526001600160401b03808716600483015280861660248301528416604482015263ffffffff831660648201526001600160a01b03821660848201526108099063127e1adb9060a4015f604051808303815f87803b15801561096c575f5ffd5b505af115801561097e573d5f5f3e3d5ffd5b505050505050505050565b604051631d1136b760e21b815261ffff821660048201525f9061080390637444dadc906024015b602060405180830381865afa1580156109cb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065f91906115c5565b6040516307d691e360e41b815260048101849052602481018390526044810182905261080590637d691e30906064016105c2565b60408051610160810182525f80825260208201819052818301819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082015290516322ee919b60e21b815263ffffffff8316600482015261080990638bba466c9060240161016060405180830381865afa158015610ab9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065f91906116c3565b6040516394e3ac6f60e01b81526004810182905260609061080b906394e3ac6f906024015f60405180830381865afa158015610b1b573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261065f919081019061178a565b6040516326614e3160e21b8152600481018290525f906108059063998538c490602401610620565b604051639f246f6f60e01b8152600481018290525f9061080590639f246f6f90602401610620565b60405163afed65f960e01b81526001600160401b03808916600483015280881660248301528616604482015263ffffffff808616606483015260ff8516608483015283151560a4830152821660c482015261080a9063afed65f99060e4015f604051808303815f87803b158015610c07575f5ffd5b505af1158015610c19573d5f5f3e3d5ffd5b5050505050505050505050565b604051630b0c751b60e41b815261ffff821660048201525f906108039063b0c751b0906024016109b0565b60405163b1f789ef60e01b815261ffff80851660048301526001600160a01b0384166024830152821660448201526060906108069063b1f789ef906064015f60405180830381865afa158015610ca9573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610cd0919081019061183f565b949350505050565b60405163cd6f4eb160e01b8152600481018290526108009063cd6f4eb19034906024015f604051808303818588803b158015610d12575f5ffd5b505af1158015610d24573d5f5f3e3d5ffd5b505050505050565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b0381118282101715610d6357610d63610d2c565b60405290565b604051606081016001600160401b0381118282101715610d6357610d63610d2c565b604080519081016001600160401b0381118282101715610d6357610d63610d2c565b604051601f8201601f191681016001600160401b0381118282101715610dd557610dd5610d2c565b604052919050565b5f6001600160401b03821115610df557610df5610d2c565b5060051b60200190565b803560ff81168114610e0f575f5ffd5b919050565b5f82601f830112610e23575f5ffd5b8135610e36610e3182610ddd565b610dad565b8082825260208201915060208360051b860101925085831115610e57575f5ffd5b602085015b83811015610e7b57610e6d81610dff565b835260209283019201610e5c565b5095945050505050565b5f5f5f60608486031215610e97575f5ffd5b8335925060208401356001600160401b03811115610eb3575f5ffd5b610ebf86828701610e14565b92505060408401356001600160401b03811115610eda575f5ffd5b610ee686828701610e14565b9150509250925092565b80356001600160a01b0381168114610e0f575f5ffd5b5f60208284031215610f16575f5ffd5b61086582610ef0565b63ffffffff81168114610f30575f5ffd5b50565b5f5f5f60608486031215610f45575f5ffd5b83359250610f5560208501610dff565b91506040840135610f6581610f1f565b809150509250925092565b61ffff81168114610f30575f5ffd5b5f60208284031215610f8f575f5ffd5b813561086581610f70565b5f5f5f60608486031215610fac575f5ffd5b505081359360208301359350604090920135919050565b5f5f60408385031215610fd4575f5ffd5b8235610fdf81610f1f565b946020939093013593505050565b5f5f60408385031215610ffe575f5ffd5b8235610fdf81610f70565b5f82601f830112611018575f5ffd5b81356001600160401b0381111561103157611031610d2c565b611044601f8201601f1916602001610dad565b818152846020838601011115611058575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f5f5f5f610100898b03121561108c575f5ffd5b8835975060208901356001600160401b038111156110a8575f5ffd5b6110b48b828c01611009565b97505060408901356001600160401b038111156110cf575f5ffd5b6110db8b828c01611009565b96505060608901356001600160401b038111156110f6575f5ffd5b6111028b828c01611009565b95505060808901356001600160401b0381111561111d575f5ffd5b6111298b828c01611009565b94505060a08901356001600160401b03811115611144575f5ffd5b6111508b828c01611009565b93505060c08901356001600160401b0381111561116b575f5ffd5b6111778b828c01611009565b92505060e08901356001600160401b03811115611192575f5ffd5b61119e8b828c01611009565b9150509295985092959890939650565b6001600160401b0381168114610f30575f5ffd5b5f5f5f5f5f60a086880312156111d6575f5ffd5b85356111e1816111ae565b945060208601356111f1816111ae565b93506040860135611201816111ae565b9250606086013561121181610f1f565b915061121f60808701610ef0565b90509295509295909350565b5f6020828403121561123b575f5ffd5b813561086581610f1f565b8151815260208083015161016083019161126a908401826001600160401b03169052565b50604083015161128560408401826001600160401b03169052565b50606083015161129d606084018263ffffffff169052565b5060808301516112b860808401826001600160401b03169052565b5060a083015160a083015260c08301516112dd60c08401826001600160401b03169052565b5060e08301516112f160e084018215159052565b5061010083015161010083015261012083015161131361012084018215159052565b5061014083015161132d61014084018263ffffffff169052565b5092915050565b5f60208284031215611344575f5ffd5b5035919050565b602080825282518282018190525f918401906040840190835b8181101561139e57835180518452602081015160208501526040810151604085015250606083019250602084019350600181019050611364565b509095945050505050565b8015158114610f30575f5ffd5b5f5f5f5f5f5f5f60e0888a0312156113cc575f5ffd5b87356113d7816111ae565b965060208801356113e7816111ae565b955060408801356113f7816111ae565b9450606088013561140781610f1f565b935061141560808901610dff565b925060a0880135611425816113a9565b915060c088013561143581610f1f565b8091505092959891949750929550565b5f5f5f60608486031215611457575f5ffd5b833561146281610f70565b925061147060208501610ef0565b91506040840135610f6581610f70565b602080825282518282018190525f918401906040840190835b8181101561139e578351805161ffff1684526020908101516001600160401b03168185015290930192604090920191600101611499565b5f8151808452602084019350602083015f5b8281101561150357815160ff168652602095860195909101906001016114e2565b5093949350505050565b838152606060208201525f61152560608301856114d0565b828103604084015261153781856114d0565b9695505050505050565b5f60208284031215611551575f5ffd5b5051919050565b5f60208284031215611568575f5ffd5b815161086581610f70565b80516001600160801b0381168114610e0f575f5ffd5b5f5f6040838503121561159a575f5ffd5b6115a383611573565b91506115b160208401611573565b90509250929050565b8051610e0f816111ae565b5f602082840312156115d5575f5ffd5b8151610865816111ae565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b88815261010060208201525f61162861010083018a6115e0565b828103604084015261163a818a6115e0565b9050828103606084015261164e81896115e0565b9050828103608084015261166281886115e0565b905082810360a084015261167681876115e0565b905082810360c084015261168a81866115e0565b905082810360e084015261169e81856115e0565b9b9a5050505050505050505050565b8051610e0f81610f1f565b8051610e0f816113a9565b5f6101608284031280156116d5575f5ffd5b506116de610d40565b825181526116ee602084016115ba565b60208201526116ff604084016115ba565b6040820152611710606084016116ad565b6060820152611721608084016115ba565b608082015260a0838101519082015261173c60c084016115ba565b60c082015261174d60e084016116b8565b60e0820152610100838101519082015261176a61012084016116b8565b61012082015261177d61014084016116ad565b6101408201529392505050565b5f6020828403121561179a575f5ffd5b81516001600160401b038111156117af575f5ffd5b8201601f810184136117bf575f5ffd5b80516117cd610e3182610ddd565b808282526020820191506020606084028501019250868311156117ee575f5ffd5b6020840193505b82841015611537576060848803121561180c575f5ffd5b611814610d69565b84518152602080860151818301526040808701519083015290835260609094019391909101906117f5565b5f6020828403121561184f575f5ffd5b81516001600160401b03811115611864575f5ffd5b8201601f81018413611874575f5ffd5b8051611882610e3182610ddd565b8082825260208201915060208360061b8501019250868311156118a3575f5ffd5b6020840193505b8284101561153757604084880312156118c1575f5ffd5b6118c9610d8b565b84516118d481610f70565b815260208501516118e4816111ae565b80602083015250808352506020820191506040840193506118aa56fea264697066735822122026460b0cf8f5e17c58e4083c1b1155431c8d2cb9962cd9d5f6105ce473df73ee64736f6c63430008230033"; diff --git a/contract-tests/src/contracts/proxy.ts b/contract-tests/src/contracts/proxy.ts deleted file mode 100644 index 1a3eab3594..0000000000 --- a/contract-tests/src/contracts/proxy.ts +++ /dev/null @@ -1,184 +0,0 @@ -export const IPROXY_ADDRESS = "0x000000000000000000000000000000000000080b"; - -export const IProxyABI = [ - { - "inputs": [ - { - "internalType": "uint8", - "name": "proxy_type", - "type": "uint8" - }, - { - "internalType": "uint32", - "name": "delay", - "type": "uint32" - }, - { - "internalType": "uint16", - "name": "index", - "type": "uint16" - } - ], - "name": "createPureProxy", - "outputs": [ - { - "internalType": "bytes32", - "name": "proxy", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "spawner", - "type": "bytes32" - }, - { - "internalType": "uint8", - "name": "proxy_type", - "type": "uint8" - }, - { - "internalType": "uint16", - "name": "index", - "type": "uint16" - }, - { - "internalType": "uint32", - "name": "height", - "type": "uint32" - }, - { - "internalType": "uint32", - "name": "ext_index", - "type": "uint32" - } - ], - "name": "killPureProxy", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "real", - "type": "bytes32" - }, - { - "internalType": "uint8[]", - "name": "force_proxy_type", // optional - "type": "uint8[]" - }, - { - "internalType": "uint8[]", - "name": "call", - "type": "uint8[]" - } - ], - "name": "proxyCall", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "removeProxies", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { - "inputs": [], - "name": "pokeDeposit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "delegate", - "type": "bytes32" - }, - { - "internalType": "uint8", - "name": "proxy_type", - "type": "uint8" - }, - { - "internalType": "uint32", - "name": "delay", - "type": "uint32" - } - ], - "name": "removeProxy", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "delegate", - "type": "bytes32" - }, - { - "internalType": "uint8", - "name": "proxy_type", - "type": "uint8" - }, - { - "internalType": "uint32", - "name": "delay", - "type": "uint32" - } - ], - "name": "addProxy", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "account", - "type": "bytes32" - } - ], - "name": "getProxies", - "outputs": [ - { - "components": [ - { - "internalType": "bytes32", - "name": "delegate", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "proxy_type", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "delay", - "type": "uint256" - } - ], - "internalType": "struct IProxy.ProxyInfo[]", - "name": "", - "type": "tuple[]" - } - ], - "stateMutability": "view", - "type": "function" - } -]; diff --git a/contract-tests/src/contracts/stakeWrap.sol b/contract-tests/src/contracts/stakeWrap.sol deleted file mode 100644 index c7d11d42a0..0000000000 --- a/contract-tests/src/contracts/stakeWrap.sol +++ /dev/null @@ -1,99 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -// need use the compiler version 0.8.20 for this contract, otherwise there is an issue -// opcode(94) swap5 not supported. -pragma solidity >=0.8.0 <0.8.2; - -address constant ISTAKING_ADDRESS = 0x0000000000000000000000000000000000000805; - -interface Staking { - function addStakeLimit( - bytes32 hotkey, - uint256 amount, - uint256 limit_price, - bool allow_partial, - uint256 netuid - ) external; - - function addStake(bytes32 hotkey, uint256 amount, uint256 netuid) external; - - function removeStake( - bytes32 hotkey, - uint256 amount, - uint256 netuid - ) external; -} - -contract StakeWrap { - address public owner; - constructor() { - owner = msg.sender; - } - - modifier onlyOwner() { - require(msg.sender == owner, "Only owner can call this function"); - _; - } - - receive() external payable {} - - function stake( - bytes32 hotkey, - uint256 netuid, - uint256 amount - ) external onlyOwner { - // can't call precompile like this way, the call never go to runtime precompile - //Staking(ISTAKING_ADDRESS).addStake(hotkey, amount, netuid); - - bytes memory data = abi.encodeWithSelector( - Staking.addStake.selector, - hotkey, - amount, - netuid - ); - (bool success, ) = ISTAKING_ADDRESS.call{gas: gasleft()}(data); - require(success, "addStake call failed"); - } - - function stakeLimit( - bytes32 hotkey, - uint256 netuid, - uint256 limitPrice, - uint256 amount, - bool allowPartial - ) external onlyOwner { - // can't call precompile like this way, the call never go to runtime precompile - // Staking(ISTAKING_ADDRESS).addStakeLimit( - // hotkey, - // amount, - // limitPrice, - // allowPartial, - // netuid - // ); - - bytes memory data = abi.encodeWithSelector( - Staking.addStakeLimit.selector, - hotkey, - amount, - limitPrice, - allowPartial, - netuid - ); - (bool success, ) = ISTAKING_ADDRESS.call{gas: gasleft()}(data); - require(success, "addStakeLimit call failed"); - } - - function removeStake( - bytes32 hotkey, - uint256 netuid, - uint256 amount - ) external onlyOwner { - bytes memory data = abi.encodeWithSelector( - Staking.removeStake.selector, - hotkey, - amount, - netuid - ); - (bool success, ) = ISTAKING_ADDRESS.call{gas: gasleft()}(data); - require(success, "addStake call failed"); - } -} diff --git a/contract-tests/src/contracts/stakeWrap.ts b/contract-tests/src/contracts/stakeWrap.ts deleted file mode 100644 index 07853470a1..0000000000 --- a/contract-tests/src/contracts/stakeWrap.ts +++ /dev/null @@ -1,106 +0,0 @@ -export const abi = [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "removeStake", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "stake", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "limitPrice", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "allowPartial", - "type": "bool" - } - ], - "name": "stakeLimit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } -]; - -// compiled with 0.8.20 -export const bytecode = "6080604052348015600e575f5ffd5b50335f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ad08061005b5f395ff3fe608060405260043610610042575f3560e01c80632daedd521461004d5780637d691e30146100755780638da5cb5b1461009d57806390b9d534146100c757610049565b3661004957005b5f5ffd5b348015610058575f5ffd5b50610073600480360381019061006e91906106bd565b6100ef565b005b348015610080575f5ffd5b5061009b600480360381019061009691906106bd565b6102ad565b005b3480156100a8575f5ffd5b506100b161046b565b6040516100be919061074c565b60405180910390f35b3480156100d2575f5ffd5b506100ed60048036038101906100e8919061079a565b61048f565b005b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461017d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017490610891565b60405180910390fd5b5f631fc9b14160e01b84838560405160240161019b939291906108cd565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090505f61080573ffffffffffffffffffffffffffffffffffffffff165a836040516102239190610954565b5f604051808303815f8787f1925050503d805f811461025d576040519150601f19603f3d011682016040523d82523d5f602084013e610262565b606091505b50509050806102a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161029d906109b4565b60405180910390fd5b5050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461033b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033290610891565b60405180910390fd5b5f637d691e3060e01b848385604051602401610359939291906108cd565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090505f61080573ffffffffffffffffffffffffffffffffffffffff165a836040516103e19190610954565b5f604051808303815f8787f1925050503d805f811461041b576040519150601f19603f3d011682016040523d82523d5f602084013e610420565b606091505b5050905080610464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045b906109b4565b60405180910390fd5b5050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461051d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051490610891565b60405180910390fd5b5f635beb6b7460e01b868486858960405160240161053f9594939291906109e1565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090505f61080573ffffffffffffffffffffffffffffffffffffffff165a836040516105c79190610954565b5f604051808303815f8787f1925050503d805f8114610601576040519150601f19603f3d011682016040523d82523d5f602084013e610606565b606091505b505090508061064a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064190610a7c565b60405180910390fd5b50505050505050565b5f5ffd5b5f819050919050565b61066981610657565b8114610673575f5ffd5b50565b5f8135905061068481610660565b92915050565b5f819050919050565b61069c8161068a565b81146106a6575f5ffd5b50565b5f813590506106b781610693565b92915050565b5f5f5f606084860312156106d4576106d3610653565b5b5f6106e186828701610676565b93505060206106f2868287016106a9565b9250506040610703868287016106a9565b9150509250925092565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6107368261070d565b9050919050565b6107468161072c565b82525050565b5f60208201905061075f5f83018461073d565b92915050565b5f8115159050919050565b61077981610765565b8114610783575f5ffd5b50565b5f8135905061079481610770565b92915050565b5f5f5f5f5f60a086880312156107b3576107b2610653565b5b5f6107c088828901610676565b95505060206107d1888289016106a9565b94505060406107e2888289016106a9565b93505060606107f3888289016106a9565b925050608061080488828901610786565b9150509295509295909350565b5f82825260208201905092915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f5f8201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f61087b602183610811565b915061088682610821565b604082019050919050565b5f6020820190508181035f8301526108a88161086f565b9050919050565b6108b881610657565b82525050565b6108c78161068a565b82525050565b5f6060820190506108e05f8301866108af565b6108ed60208301856108be565b6108fa60408301846108be565b949350505050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f61092e82610902565b610938818561090c565b9350610948818560208601610916565b80840191505092915050565b5f61095f8284610924565b915081905092915050565b7f6164645374616b652063616c6c206661696c65640000000000000000000000005f82015250565b5f61099e601483610811565b91506109a98261096a565b602082019050919050565b5f6020820190508181035f8301526109cb81610992565b9050919050565b6109db81610765565b82525050565b5f60a0820190506109f45f8301886108af565b610a0160208301876108be565b610a0e60408301866108be565b610a1b60608301856109d2565b610a2860808301846108be565b9695505050505050565b7f6164645374616b654c696d69742063616c6c206661696c6564000000000000005f82015250565b5f610a66601983610811565b9150610a7182610a32565b602082019050919050565b5f6020820190508181035f830152610a9381610a5a565b905091905056fea2646970667358221220f8ad692d7919fb10f08e5311c64a0aa705a4e665689967633c2ddade5398076664736f6c634300081e0033" diff --git a/contract-tests/src/contracts/staking.ts b/contract-tests/src/contracts/staking.ts deleted file mode 100644 index ad21b31be8..0000000000 --- a/contract-tests/src/contracts/staking.ts +++ /dev/null @@ -1,594 +0,0 @@ -export const ISTAKING_ADDRESS = "0x0000000000000000000000000000000000000801"; -export const ISTAKING_V2_ADDRESS = "0x0000000000000000000000000000000000000805"; - -export const IStakingABI = [ - { - inputs: [ - { - internalType: "bytes32", - name: "delegate", - type: "bytes32", - }, - ], - name: "addProxy", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "hotkey", - type: "bytes32", - }, - { - internalType: "uint256", - name: "netuid", - type: "uint256", - }, - ], - name: "addStake", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "delegate", - type: "bytes32", - }, - ], - name: "removeProxy", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "hotkey", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "coldkey", - type: "bytes32", - }, - { - internalType: "uint256", - name: "netuid", - type: "uint256", - }, - ], - name: "getStake", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "hotkey", - type: "bytes32", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "uint256", - name: "netuid", - type: "uint256", - }, - ], - name: "removeStake", - outputs: [], - stateMutability: "payable", - type: "function", - }, -]; - -export const IStakingV2ABI = [ - { - "inputs": [ - { - "internalType": "bytes32", - "name": "delegate", - "type": "bytes32" - } - ], - "name": "addProxy", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - } - ], - "name": "addStake", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - } - ], - "name": "getAlphaStakedValidators", - "outputs": [ - { - "internalType": "uint256[]", - "name": "", - "type": "uint256[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "coldkey", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - } - ], - "name": "getStake", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - } - ], - "name": "getTotalAlphaStaked", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "coldkey", - "type": "bytes32" - } - ], - "name": "getTotalColdkeyStake", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "coldkey", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - } - ], - "name": "getTotalColdkeyStakeOnSubnet", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" - } - ], - "name": "getTotalHotkeyStake", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getNominatorMinRequiredStake", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "delegate", - "type": "bytes32" - } - ], - "name": "removeProxy", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - } - ], - "name": "removeStake", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "limit_price", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "allow_partial", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - } - ], - "name": "addStakeLimit", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "limit_price", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "allow_partial", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - } - ], - "name": "removeStakeLimit", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - }, - ], - "name": "removeStakeFull", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "limit_price", - "type": "uint256" - } - ], - "name": "removeStakeFullLimit", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - } - ], - "name": "burnAlpha", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spenderAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "absoluteAmount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [], - "stateMutability": "", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sourceAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "spenderAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spenderAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "increaseAmount", - "type": "uint256" - } - ], - "name": "increaseAllowance", - "outputs": [], - "stateMutability": "", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spenderAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "netuid", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "decreaseAmount", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [], - "stateMutability": "", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sourceAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "destinationAddress", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "originNetuid", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "destinationNetuid", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferStakeFrom", - "outputs": [], - "stateMutability": "", - "type": "function" - } -]; diff --git a/contract-tests/src/contracts/subnet.ts b/contract-tests/src/contracts/subnet.ts deleted file mode 100644 index dd058dafe4..0000000000 --- a/contract-tests/src/contracts/subnet.ts +++ /dev/null @@ -1,980 +0,0 @@ -export const ISUBNET_ADDRESS = "0x0000000000000000000000000000000000000803"; - -export const ISubnetABI = [ - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - ], - name: "getAdjustmentAlpha", - outputs: [ - { - internalType: "uint64", - name: "", - type: "uint64", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - ], - name: "getAlphaValues", - outputs: [ - { - internalType: "uint16", - name: "", - type: "uint16", - }, - { - internalType: "uint16", - name: "", - type: "uint16", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - ], - name: "getBondsMovingAverage", - outputs: [ - { - internalType: "uint64", - name: "", - type: "uint64", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - ], - name: "getCommitRevealWeightsEnabled", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - ], - name: "getDifficulty", - outputs: [ - { - internalType: "uint64", - name: "", - type: "uint64", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "", - type: "uint16", - }, - ], - name: "getImmunityPeriod", - outputs: [ - { - internalType: "uint16", - name: "", - type: "uint16", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "", - type: "uint16", - }, - ], - name: "getKappa", - outputs: [ - { - internalType: "uint16", - name: "", - type: "uint16", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - ], - name: "getMaxBurn", - outputs: [ - { - internalType: "uint64", - name: "", - type: "uint64", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - ], - name: "getMaxDifficulty", - outputs: [ - { - internalType: "uint64", - name: "", - type: "uint64", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - ], - name: "getMaxWeightLimit", - outputs: [ - { - internalType: "uint16", - name: "", - type: "uint16", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - ], - name: "getMinAllowedWeights", - outputs: [ - { - internalType: "uint16", - name: "", - type: "uint16", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - ], - name: "getMinBurn", - outputs: [ - { - internalType: "uint64", - name: "", - type: "uint64", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - ], - name: "getMinDifficulty", - outputs: [ - { - internalType: "uint64", - name: "", - type: "uint64", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - ], - name: "getNetworkRegistrationAllowed", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "", - type: "uint16", - }, - ], - name: "getRho", - outputs: [ - { - internalType: "uint16", - name: "", - type: "uint16", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - ], - name: "getNetworkRegistrationBlock", - outputs: [ - { - internalType: "uint64", - name: "", - type: "uint64", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - ], - name: "getServingRateLimit", - outputs: [ - { - internalType: "uint64", - name: "", - type: "uint64", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - ], - name: "getWeightsSetRateLimit", - outputs: [ - { - internalType: "uint64", - name: "", - type: "uint64", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - ], - name: "getWeightsVersionKey", - outputs: [ - { - internalType: "uint64", - name: "", - type: "uint64", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint16", - name: "activityCutoff", - type: "uint16", - }, - ], - name: "setActivityCutoff", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - ], - name: "getActivityCutoff", - outputs: [ - { - internalType: "uint16", - name: "", - type: "uint16", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint64", - name: "adjustmentAlpha", - type: "uint64", - }, - ], - name: "setAdjustmentAlpha", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint16", - name: "alphaLow", - type: "uint16", - }, - { - internalType: "uint16", - name: "alphaHigh", - type: "uint16", - }, - ], - name: "setAlphaValues", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint64", - name: "bondsMovingAverage", - type: "uint64", - }, - ], - name: "setBondsMovingAverage", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "bool", - name: "commitRevealWeightsEnabled", - type: "bool", - }, - ], - name: "setCommitRevealWeightsEnabled", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - ], - name: "getCommitRevealWeightsInterval", - outputs: [ - { - internalType: "uint64", - name: "", - type: "uint64", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint64", - name: "commitRevealWeightsInterval", - type: "uint64", - }, - ], - name: "setCommitRevealWeightsInterval", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint64", - name: "difficulty", - type: "uint64", - }, - ], - name: "setDifficulty", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint16", - name: "immunityPeriod", - type: "uint16", - }, - ], - name: "setImmunityPeriod", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint16", - name: "kappa", - type: "uint16", - }, - ], - name: "setKappa", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - ], - name: "getLiquidAlphaEnabled", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - ], - name: "getYuma3Enabled", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "bool", - name: "yuma3Enabled", - type: "bool", - }, - ], - name: "setYuma3Enabled", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "bool", - name: "liquidAlphaEnabled", - type: "bool", - }, - ], - name: "setLiquidAlphaEnabled", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint64", - name: "maxBurn", - type: "uint64", - }, - ], - name: "setMaxBurn", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint64", - name: "maxDifficulty", - type: "uint64", - }, - ], - name: "setMaxDifficulty", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint16", - name: "minAllowedWeights", - type: "uint16", - }, - ], - name: "setMinAllowedWeights", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint64", - name: "minBurn", - type: "uint64", - }, - ], - name: "setMinBurn", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint64", - name: "minDifficulty", - type: "uint64", - }, - ], - name: "setMinDifficulty", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - ], - name: "getNetworkPowRegistrationAllowed", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "bool", - name: "networkPowRegistrationAllowed", - type: "bool", - }, - ], - name: "setNetworkPowRegistrationAllowed", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "bool", - name: "networkRegistrationAllowed", - type: "bool", - }, - ], - name: "setNetworkRegistrationAllowed", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint16", - name: "rho", - type: "uint16", - }, - ], - name: "setRho", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint64", - name: "servingRateLimit", - type: "uint64", - }, - ], - name: "setServingRateLimit", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint64", - name: "weightsSetRateLimit", - type: "uint64", - }, - ], - name: "setWeightsSetRateLimit", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16", - }, - { - internalType: "uint64", - name: "weightsVersionKey", - type: "uint64", - }, - ], - name: "setWeightsVersionKey", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "hotkey", - type: "bytes32", - }, - ], - name: "registerNetwork", - outputs: [], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes32", - name: "hotkey", - type: "bytes32" - }, - { - internalType: "string", - name: "subnetName", - type: "string" - }, - { - internalType: "string", - name: "githubRepo", - type: "string" - }, - { - internalType: "string", - name: "subnetContact", - type: "string" - }, - { - internalType: "string", - name: "subnetUrl", - type: "string" - }, - { - internalType: "string", - name: "discord", - type: "string" - }, - { - internalType: "string", - name: "description", - type: "string" - }, - { - internalType: "string", - name: "additional", - type: "string" - } - ], - name: "registerNetwork", - outputs: [], - stateMutability: "payable", - type: "function" - }, - { - inputs: [ - { - internalType: "bytes32", - name: "hotkey", - type: "bytes32" - }, - { - internalType: "string", - name: "subnetName", - type: "string" - }, - { - internalType: "string", - name: "githubRepo", - type: "string" - }, - { - internalType: "string", - name: "subnetContact", - type: "string" - }, - { - internalType: "string", - name: "subnetUrl", - type: "string" - }, - { - internalType: "string", - name: "discord", - type: "string" - }, - { - internalType: "string", - name: "description", - type: "string" - }, - { - internalType: "string", - name: "logoUrl", - type: "string" - }, - { - internalType: "string", - name: "additional", - type: "string" - } - ], - name: "registerNetwork", - outputs: [], - stateMutability: "payable", - type: "function" - }, -]; diff --git a/contract-tests/src/contracts/uidLookup.ts b/contract-tests/src/contracts/uidLookup.ts deleted file mode 100644 index 06c68805e6..0000000000 --- a/contract-tests/src/contracts/uidLookup.ts +++ /dev/null @@ -1,45 +0,0 @@ -export const IUID_LOOKUP_ADDRESS = "0x0000000000000000000000000000000000000806"; - -export const IUIDLookupABI = [ - { - inputs: [ - { - internalType: "uint16", - name: "netuid", - type: "uint16" - }, - { - internalType: "address", - name: "evm_address", - type: "address" - }, - { - internalType: "uint16", - name: "limit", - type: "uint16" - } - ], - name: "uidLookup", - outputs: [ - { - components: [ - { - internalType: "uint16", - name: "uid", - type: "uint16" - }, - { - internalType: "uint64", - name: "block_associated", - type: "uint64" - } - ], - internalType: "struct LookupItem[]", - name: "", - type: "tuple[]" - } - ], - stateMutability: "view", - type: "function" - } -]; diff --git a/contract-tests/src/contracts/votingPower.ts b/contract-tests/src/contracts/votingPower.ts deleted file mode 100644 index bbcc3ca6e6..0000000000 --- a/contract-tests/src/contracts/votingPower.ts +++ /dev/null @@ -1,104 +0,0 @@ -export const IVOTING_POWER_ADDRESS = "0x000000000000000000000000000000000000080d"; - -export const IVotingPowerABI = [ - { - "inputs": [ - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - }, - { - "internalType": "bytes32", - "name": "hotkey", - "type": "bytes32" - } - ], - "name": "getVotingPower", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - } - ], - "name": "isVotingPowerTrackingEnabled", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - } - ], - "name": "getVotingPowerDisableAtBlock", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - } - ], - "name": "getVotingPowerEmaAlpha", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "netuid", - "type": "uint16" - } - ], - "name": "getTotalVotingPower", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } -] diff --git a/contract-tests/src/contracts/withdraw.sol b/contract-tests/src/contracts/withdraw.sol deleted file mode 100644 index 3945661e09..0000000000 --- a/contract-tests/src/contracts/withdraw.sol +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 - -pragma solidity >=0.7.0 <0.9.0; - -contract Withdraw { - constructor() {} - - function withdraw(uint256 value) public payable { - payable(msg.sender).transfer(value); - } - - receive() external payable {} -} diff --git a/contract-tests/src/contracts/withdraw.ts b/contract-tests/src/contracts/withdraw.ts deleted file mode 100644 index 46fe66bf24..0000000000 --- a/contract-tests/src/contracts/withdraw.ts +++ /dev/null @@ -1,31 +0,0 @@ -export const WITHDRAW_CONTRACT_ABI = [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "withdraw", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } -]; - -// "compiler": { -// "version": "0.8.26+commit.8a97fa7a" -// }, - -export const WITHDRAW_CONTRACT_BYTECODE = "6080604052348015600e575f80fd5b506101148061001c5f395ff3fe608060405260043610601e575f3560e01c80632e1a7d4d146028576024565b36602457005b5f80fd5b603e6004803603810190603a919060b8565b6040565b005b3373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156082573d5f803e3d5ffd5b5050565b5f80fd5b5f819050919050565b609a81608a565b811460a3575f80fd5b50565b5f8135905060b2816093565b92915050565b5f6020828403121560ca5760c96086565b5b5f60d58482850160a6565b9150509291505056fea2646970667358221220f43400858bfe4fcc0bf3c1e2e06d3a9e6ced86454a00bd7e4866b3d4d64e46bb64736f6c634300081a0033" - diff --git a/contract-tests/src/eth.ts b/contract-tests/src/eth.ts deleted file mode 100644 index a34e33bc2d..0000000000 --- a/contract-tests/src/eth.ts +++ /dev/null @@ -1,16 +0,0 @@ - -import { ethers, Provider, TransactionRequest, Wallet } from "ethers"; -export async function estimateTransactionCost(provider: Provider, tx: TransactionRequest) { - const feeData = await provider.getFeeData(); - const estimatedGas = BigInt(await provider.estimateGas(tx)); - const gasPrice = feeData.gasPrice || feeData.maxFeePerGas; - if (gasPrice === null) - return estimatedGas - else - return estimatedGas * BigInt(gasPrice); -} - -export function getContract(contractAddress: string, abi: {}[], wallet: Wallet) { - const contract = new ethers.Contract(contractAddress, abi, wallet); - return contract -} diff --git a/contract-tests/src/setup.ts b/contract-tests/src/setup.ts deleted file mode 100644 index 1ef872cd5a..0000000000 --- a/contract-tests/src/setup.ts +++ /dev/null @@ -1,19 +0,0 @@ - -import { createClient, TypedApi, PolkadotClient, Binary } from 'polkadot-api'; -import { SUB_LOCAL_URL } from "./config" -import { getWsProvider } from 'polkadot-api/ws-provider/web'; - -let client: PolkadotClient | undefined = undefined - -export async function getClient() { - if (client === undefined) { - const provider = getWsProvider(SUB_LOCAL_URL); - client = createClient(provider); - } - return client; -} - -after(() => { - client?.destroy() -}); - diff --git a/contract-tests/src/substrate.ts b/contract-tests/src/substrate.ts deleted file mode 100644 index c7c9efe3d9..0000000000 --- a/contract-tests/src/substrate.ts +++ /dev/null @@ -1,265 +0,0 @@ -import { devnet, MultiAddress } from '@polkadot-api/descriptors'; -import { TypedApi, Transaction, PolkadotSigner, Binary } from 'polkadot-api'; -import { sr25519CreateDerive } from "@polkadot-labs/hdkd" -import { DEV_PHRASE, entropyToMiniSecret, mnemonicToEntropy, KeyPair } from "@polkadot-labs/hdkd-helpers" -import { getPolkadotSigner } from "polkadot-api/signer" -import { randomBytes } from 'crypto'; -import { Keyring } from '@polkadot/keyring'; -import { SS58_PREFIX, TX_TIMEOUT } from "./config"; -import { getClient } from "./setup" - -let api: TypedApi | undefined = undefined - -// define url string as type to extend in the future -// export type ClientUrlType = 'ws://localhost:9944' | 'wss://test.finney.opentensor.ai:443' | 'wss://dev.chain.opentensor.ai:443' | 'wss://archive.chain.opentensor.ai'; -export type ClientUrlType = 'ws://localhost:9944' - -export async function getDevnetApi() { - if (api === undefined) { - let client = await getClient() - - api = client.getTypedApi(devnet) - } - return api -} - -export function getKeypairFromPath(path: string) { - const entropy = mnemonicToEntropy(DEV_PHRASE) - const miniSecret = entropyToMiniSecret(entropy) - const derive = sr25519CreateDerive(miniSecret) - const hdkdKeyPair = derive(path) - - return hdkdKeyPair -} - -export const getAlice = () => getKeypairFromPath("//Alice") -export const getBob = () => getKeypairFromPath("//Bob") -export const getCharlie = () => getKeypairFromPath("//Charlie") -export const getDave = () => getKeypairFromPath("//Dave") - -export function getSignerFromPath(path: string) { - const keypair = getKeypairFromPath(path) - const polkadotSigner = getPolkadotSigner( - keypair.publicKey, - "Sr25519", - keypair.sign, - ) - - return polkadotSigner -} - -export const getAliceSigner = () => getSignerFromPath("//Alice") -export const getBobSigner = () => getSignerFromPath("//Bob") -export const getCharlieSigner = () => getSignerFromPath("//Charlie") -export const getDaveSigner = () => getSignerFromPath("//Dave") - -export function getRandomSubstrateSigner() { - const keypair = getRandomSubstrateKeypair(); - return getSignerFromKeypair(keypair) -} - -export function getSignerFromKeypair(keypair: KeyPair) { - const polkadotSigner = getPolkadotSigner( - keypair.publicKey, - "Sr25519", - keypair.sign, - ) - return polkadotSigner -} - -export function getRandomSubstrateKeypair() { - const seed = randomBytes(32); - const miniSecret = entropyToMiniSecret(seed) - const derive = sr25519CreateDerive(miniSecret) - const hdkdKeyPair = derive("") - - return hdkdKeyPair -} - -export async function getBalance(api: TypedApi, ss58Address: string) { - const value = await api.query.System.Account.getValue(ss58Address) - return value.data.free -} - -export async function getNonce(api: TypedApi, ss58Address: string): Promise { - const value = await api.query.System.Account.getValue(ss58Address); - return value.nonce -} - -export async function getNonceChangePromise(api: TypedApi, ss58Address: string) { - // api.query.System.Account.getValue() - const initValue = await api.query.System.Account.getValue(ss58Address); - return new Promise((resolve, reject) => { - const subscription = api.query.System.Account.watchValue(ss58Address).subscribe({ - next(value) { - if (value.nonce > initValue.nonce) { - subscription.unsubscribe(); - // Resolve the promise when the transaction is finalized - resolve(); - } - }, - - error(err: Error) { - console.error("Transaction failed:", err); - subscription.unsubscribe(); - // Reject the promise in case of an error - reject(err); - }, - complete() { - console.log("Subscription complete"); - } - }) - - setTimeout(() => { - subscription.unsubscribe(); - console.log('unsubscribed!'); - resolve() - }, TX_TIMEOUT); - - }) -} - -export function convertPublicKeyToMultiAddress(publicKey: Uint8Array, ss58Format: number = SS58_PREFIX): MultiAddress { - // Create a keyring instance - const keyring = new Keyring({ type: 'sr25519', ss58Format }); - - // Add the public key to the keyring - const address = keyring.encodeAddress(publicKey); - - return MultiAddress.Id(address); -} - -export async function waitForTransactionWithRetry( - api: TypedApi, - tx: Transaction<{}, string, string, void>, - signer: PolkadotSigner, -) { - let success = false; - let retries = 0; - - // set max retries times - while (!success && retries < 5) { - await waitForTransactionCompletion(api, tx, signer) - .then(() => { success = true }) - .catch((error) => { - console.log(`transaction error ${error}`); - }); - await new Promise((resolve) => setTimeout(resolve, 1000)); - retries += 1; - } - - if (!success) { - console.log("Transaction failed after 5 retries"); - } -} - -export async function waitForTransactionCompletion(api: TypedApi, tx: Transaction<{}, string, string, void>, signer: PolkadotSigner,) { - const transactionPromise = await getTransactionWatchPromise(tx, signer) - return transactionPromise - - // If we can't always get the finalized event, then add nonce subscribe as other evidence for tx is finalized. - // Don't need it based on current testing. - // const ss58Address = convertPublicKeyToSs58(signer.publicKey) - // const noncePromise = await getNonceChangePromise(api, ss58Address) - - // return new Promise((resolve, reject) => { - // Promise.race([transactionPromise, noncePromise]) - // .then(resolve) - // .catch(reject); - // }) -} - - -export async function getTransactionWatchPromise(tx: Transaction<{}, string, string, void>, signer: PolkadotSigner,) { - return new Promise((resolve, reject) => { - // store the txHash, then use it in timeout. easier to know which tx is not finalized in time - let txHash = "" - const subscription = tx.signSubmitAndWatch(signer).subscribe({ - next(value) { - txHash = value.txHash - - // TODO investigate why finalized not for each extrinsic - if (value.type === "finalized") { - console.log("Transaction is finalized in block:", value.txHash); - subscription.unsubscribe(); - clearTimeout(timeoutId); - if (!value.ok) { - console.log("Transaction threw an error:", value.dispatchError) - } - // Resolve the promise when the transaction is finalized - resolve(); - } - }, - error(err) { - console.error("Transaction failed:", err); - subscription.unsubscribe(); - clearTimeout(timeoutId); - // Reject the promise in case of an error - reject(err); - - }, - complete() { - console.log("Subscription complete"); - } - }); - - const timeoutId = setTimeout(() => { - subscription.unsubscribe(); - console.log('unsubscribed because of timeout for tx {}', txHash); - reject() - }, TX_TIMEOUT); - }); -} - -// second solution to wait for transaction finalization. pass the raw data to avoid the complex transaction type definition -export async function waitForTransactionCompletion2(api: TypedApi, raw: Binary, signer: PolkadotSigner,) { - const tx = await api.txFromCallData(raw); - return new Promise((resolve, reject) => { - const subscription = tx.signSubmitAndWatch(signer).subscribe({ - next(value) { - console.log("Event:", value); - - if (value.type === "txBestBlocksState") { - console.log("Transaction is finalized in block:", value.txHash); - subscription.unsubscribe(); - // Resolve the promise when the transaction is finalized - resolve(); - - } - }, - error(err: Error) { - console.error("Transaction failed:", err); - subscription.unsubscribe(); - // Reject the promise in case of an error - reject(err); - - }, - complete() { - console.log("Subscription complete"); - } - }); - }); -} - -export async function waitForNonceChange(api: TypedApi, ss58Address: string) { - const initNonce = await getNonce(api, ss58Address) - while (true) { - const currentNonce = await getNonce(api, ss58Address) - if (currentNonce > initNonce) { - break - } - - await new Promise(resolve => setTimeout(resolve, 200)); - } -} - -export function waitForFinalizedBlock(api: TypedApi, end: number) { - return new Promise((resolve) => { - const subscription = api.query.System.Number.watchValue("finalized").subscribe((current) => { - if (current > end) { - subscription.unsubscribe(); - resolve(); - } - }) - }) -} \ No newline at end of file diff --git a/contract-tests/src/subtensor.ts b/contract-tests/src/subtensor.ts deleted file mode 100644 index 478148909d..0000000000 --- a/contract-tests/src/subtensor.ts +++ /dev/null @@ -1,588 +0,0 @@ -import * as assert from "assert"; -import { devnet, MultiAddress } from '@polkadot-api/descriptors'; -import { TypedApi, TxCallData, Binary, Enum, getTypedCodecs } from 'polkadot-api'; -import { KeyPair } from "@polkadot-labs/hdkd-helpers" -import { getAliceSigner, waitForTransactionCompletion, getSignerFromKeypair, waitForTransactionWithRetry } from './substrate' -import { convertH160ToSS58, convertPublicKeyToSs58, ethAddressToH160 } from './address-utils' -import { tao } from './balance-math' -import internal from "stream"; -import { createCodec } from "scale-ts"; - -// create a new subnet and return netuid -export async function addNewSubnetwork(api: TypedApi, hotkey: KeyPair, coldkey: KeyPair) { - const alice = getAliceSigner() - const totalNetworks = await api.query.SubtensorModule.TotalNetworks.getValue() - - const defaultNetworkLastLockCost = await api.query.SubtensorModule.NetworkLastLockCost.getValue() - - const rateLimit = await api.query.SubtensorModule.NetworkRateLimit.getValue() - if (rateLimit !== BigInt(0)) { - const internalCall = api.tx.AdminUtils.sudo_set_network_rate_limit({ rate_limit: BigInt(0) }) - const tx = api.tx.Sudo.sudo({ call: internalCall.decodedCall }) - await waitForTransactionWithRetry(api, tx, alice) - } - - const signer = getSignerFromKeypair(coldkey) - const registerNetworkTx = api.tx.SubtensorModule.register_network({ hotkey: convertPublicKeyToSs58(hotkey.publicKey) }) - await waitForTransactionWithRetry(api, registerNetworkTx, signer) - - const newTotalNetworks = await api.query.SubtensorModule.TotalNetworks.getValue() - // could create multiple subnetworks during retry, just return the first created one - assert.ok(newTotalNetworks > totalNetworks) - - // reset network last lock cost to 0, to avoid the lock cost calculation error - await setNetworkLastLockCost(api, defaultNetworkLastLockCost) - return totalNetworks -} - -// force set balance for a ss58 address -export async function forceSetBalanceToSs58Address(api: TypedApi, ss58Address: string) { - const alice = getAliceSigner() - const balance = tao(1e10) - const internalCall = api.tx.Balances.force_set_balance({ who: MultiAddress.Id(ss58Address), new_free: balance }) - const tx = api.tx.Sudo.sudo({ call: internalCall.decodedCall }) - - await waitForTransactionWithRetry(api, tx, alice) - - const balanceOnChain = (await api.query.System.Account.getValue(ss58Address)).data.free - // check the balance except for sudo account becasue of tx fee - if (ss58Address !== convertPublicKeyToSs58(alice.publicKey)) { - assert.equal(balance, balanceOnChain) - } -} - -// set balance for an eth address -export async function forceSetBalanceToEthAddress(api: TypedApi, ethAddress: string) { - const ss58Address = convertH160ToSS58(ethAddress) - await forceSetBalanceToSs58Address(api, ss58Address) -} - -export async function setCommitRevealWeightsEnabled(api: TypedApi, netuid: number, enabled: boolean) { - const value = await api.query.SubtensorModule.CommitRevealWeightsEnabled.getValue(netuid) - if (value === enabled) { - return; - } - - const alice = getAliceSigner() - const internalCall = api.tx.AdminUtils.sudo_set_commit_reveal_weights_enabled({ netuid: netuid, enabled: enabled }) - const tx = api.tx.Sudo.sudo({ call: internalCall.decodedCall }) - - await waitForTransactionWithRetry(api, tx, alice) - assert.equal(enabled, await api.query.SubtensorModule.CommitRevealWeightsEnabled.getValue(netuid)) -} - -export async function setWeightsSetRateLimit(api: TypedApi, netuid: number, rateLimit: bigint) { - const value = await api.query.SubtensorModule.WeightsSetRateLimit.getValue(netuid) - if (value === rateLimit) { - return; - } - - const alice = getAliceSigner() - const internalCall = api.tx.AdminUtils.sudo_set_weights_set_rate_limit({ netuid: netuid, weights_set_rate_limit: rateLimit }) - const tx = api.tx.Sudo.sudo({ call: internalCall.decodedCall }) - - await waitForTransactionWithRetry(api, tx, alice) - assert.equal(rateLimit, await api.query.SubtensorModule.WeightsSetRateLimit.getValue(netuid)) -} - -// tempo is u16 in rust, but we just number in js. so value should be less than u16::Max -export async function setTempo(api: TypedApi, netuid: number, tempo: number) { - const value = await api.query.SubtensorModule.Tempo.getValue(netuid) - console.log("init avlue is ", value) - if (value === tempo) { - return; - } - - const alice = getAliceSigner() - const internalCall = api.tx.AdminUtils.sudo_set_tempo({ netuid: netuid, tempo: tempo }) - const tx = api.tx.Sudo.sudo({ call: internalCall.decodedCall }) - - await waitForTransactionWithRetry(api, tx, alice) - assert.equal(tempo, await api.query.SubtensorModule.Tempo.getValue(netuid)) -} - -export async function setCommitRevealWeightsInterval(api: TypedApi, netuid: number, interval: bigint) { - const value = await api.query.SubtensorModule.RevealPeriodEpochs.getValue(netuid) - if (value === interval) { - return; - } - - const alice = getAliceSigner() - const internalCall = api.tx.AdminUtils.sudo_set_commit_reveal_weights_interval({ netuid: netuid, interval: interval }) - const tx = api.tx.Sudo.sudo({ call: internalCall.decodedCall }) - - await waitForTransactionWithRetry(api, tx, alice) - assert.equal(interval, await api.query.SubtensorModule.RevealPeriodEpochs.getValue(netuid)) -} - - -export async function forceSetChainID(api: TypedApi, chainId: bigint) { - const value = await api.query.EVMChainId.ChainId.getValue() - if (value === chainId) { - return; - } - - const alice = getAliceSigner() - const internalCall = api.tx.AdminUtils.sudo_set_evm_chain_id({ chain_id: chainId }) - const tx = api.tx.Sudo.sudo({ call: internalCall.decodedCall }) - - await waitForTransactionWithRetry(api, tx, alice) - assert.equal(chainId, await api.query.EVMChainId.ChainId.getValue()) -} - -export async function disableWhiteListCheck(api: TypedApi, disabled: boolean) { - const value = await api.query.EVM.DisableWhitelistCheck.getValue() - if (value === disabled) { - return; - } - - const alice = getAliceSigner() - const internalCall = api.tx.EVM.disable_whitelist({ disabled: disabled }) - const tx = api.tx.Sudo.sudo({ call: internalCall.decodedCall }) - - await waitForTransactionWithRetry(api, tx, alice) - assert.equal(disabled, await api.query.EVM.DisableWhitelistCheck.getValue()) -} - -export async function burnedRegister(api: TypedApi, netuid: number, ss58Address: string, keypair: KeyPair) { - const registered = await api.query.SubtensorModule.Uids.getValue(netuid, ss58Address); - // just return if already registered - if (registered !== undefined) { - console.log("hotkey ", ss58Address, " already registered in netuid ", netuid) - return; - } - - await new Promise((resolve) => setTimeout(resolve, 1000)); - const uids = await api.query.SubtensorModule.SubnetworkN.getValue(netuid) - const signer = getSignerFromKeypair(keypair) - const tx = api.tx.SubtensorModule.burned_register({ hotkey: ss58Address, netuid: netuid }) - await waitForTransactionWithRetry(api, tx, signer) - assert.equal(uids + 1, await api.query.SubtensorModule.SubnetworkN.getValue(netuid)) -} - - -export async function sendProxyCall(api: TypedApi, calldata: TxCallData, ss58Address: string, keypair: KeyPair) { - const signer = getSignerFromKeypair(keypair) - const tx = api.tx.Proxy.proxy({ - call: calldata, - real: MultiAddress.Id(ss58Address), - force_proxy_type: undefined - }); - await waitForTransactionWithRetry(api, tx, signer) -} - - -export async function setTxRateLimit(api: TypedApi, txRateLimit: bigint) { - const value = await api.query.SubtensorModule.TxRateLimit.getValue() - if (value === txRateLimit) { - return; - } - const alice = getAliceSigner() - - const internalCall = api.tx.AdminUtils.sudo_set_tx_rate_limit({ tx_rate_limit: txRateLimit }) - const tx = api.tx.Sudo.sudo({ call: internalCall.decodedCall }) - - - await waitForTransactionWithRetry(api, tx, alice) -} - -export async function setMaxAllowedValidators(api: TypedApi, netuid: number, maxAllowedValidators: number) { - const value = await api.query.SubtensorModule.MaxAllowedValidators.getValue(netuid) - if (value === maxAllowedValidators) { - return; - } - - const alice = getAliceSigner() - - const internalCall = api.tx.AdminUtils.sudo_set_max_allowed_validators({ - netuid: netuid, - max_allowed_validators: maxAllowedValidators - }) - const tx = api.tx.Sudo.sudo({ call: internalCall.decodedCall }) - - await waitForTransactionWithRetry(api, tx, alice) - assert.equal(maxAllowedValidators, await api.query.SubtensorModule.MaxAllowedValidators.getValue(netuid)) -} - -export async function setSubnetOwnerCut(api: TypedApi, subnetOwnerCut: number) { - const value = await api.query.SubtensorModule.SubnetOwnerCut.getValue() - if (value === subnetOwnerCut) { - return; - } - - const alice = getAliceSigner() - - const internalCall = api.tx.AdminUtils.sudo_set_subnet_owner_cut({ - subnet_owner_cut: subnetOwnerCut - }) - const tx = api.tx.Sudo.sudo({ call: internalCall.decodedCall }) - - await waitForTransactionWithRetry(api, tx, alice) - assert.equal(subnetOwnerCut, await api.query.SubtensorModule.SubnetOwnerCut.getValue()) -} - -export async function setActivityCutoff(api: TypedApi, netuid: number, activityCutoff: number) { - const value = await api.query.SubtensorModule.ActivityCutoff.getValue(netuid) - if (value === activityCutoff) { - return; - } - - const alice = getAliceSigner() - - const internalCall = api.tx.AdminUtils.sudo_set_activity_cutoff({ - netuid: netuid, - activity_cutoff: activityCutoff - }) - const tx = api.tx.Sudo.sudo({ call: internalCall.decodedCall }) - - await waitForTransactionWithRetry(api, tx, alice) - assert.equal(activityCutoff, await api.query.SubtensorModule.ActivityCutoff.getValue(netuid)) -} - -export async function setMinDelegateTake(api: TypedApi, minDelegateTake: number) { - const value = await api.query.SubtensorModule.MinDelegateTake.getValue() - if (value === minDelegateTake) { - return; - } - - const alice = getAliceSigner() - - const internalCall = api.tx.AdminUtils.sudo_set_min_delegate_take({ - take: minDelegateTake - }) - const tx = api.tx.Sudo.sudo({ call: internalCall.decodedCall }) - - await waitForTransactionWithRetry(api, tx, alice) - assert.equal(minDelegateTake, await api.query.SubtensorModule.MinDelegateTake.getValue()) -} - -export async function addStake(api: TypedApi, netuid: number, ss58Address: string, amount_staked: bigint, keypair: KeyPair) { - const signer = getSignerFromKeypair(keypair) - let tx = api.tx.SubtensorModule.add_stake({ - netuid: netuid, - hotkey: ss58Address, - amount_staked: amount_staked - }) - - await waitForTransactionWithRetry(api, tx, signer) -} - -export async function setWeight(api: TypedApi, netuid: number, dests: number[], weights: number[], version_key: bigint, keypair: KeyPair) { - const signer = getSignerFromKeypair(keypair) - let tx = api.tx.SubtensorModule.set_weights({ - netuid: netuid, - dests: dests, - weights: weights, - version_key: version_key - }) - - await waitForTransactionWithRetry(api, tx, signer) -} - -export async function rootRegister(api: TypedApi, ss58Address: string, keypair: KeyPair) { - const signer = getSignerFromKeypair(keypair) - let tx = api.tx.SubtensorModule.root_register({ - hotkey: ss58Address - }) - - await waitForTransactionWithRetry(api, tx, signer) -} - -export async function setSubtokenEnable(api: TypedApi, netuid: number, subtokenEnable: boolean) { - const signer = getAliceSigner() - let internalTx = api.tx.AdminUtils.sudo_set_subtoken_enabled({ - netuid: netuid, - subtoken_enabled: subtokenEnable - }) - let tx = api.tx.Sudo.sudo({ call: internalTx.decodedCall }) - - await waitForTransactionWithRetry(api, tx, signer) -} - -export async function startCall(api: TypedApi, netuid: number, keypair: KeyPair) { - const registerBlock = Number(await api.query.SubtensorModule.NetworkRegisteredAt.getValue(netuid)) - let currentBlock = await api.query.System.Number.getValue() - const duration = Number(await api.constants.SubtensorModule.InitialStartCallDelay) - - while (currentBlock - registerBlock <= duration) { - await new Promise((resolve) => setTimeout(resolve, 2000)); - currentBlock = await api.query.System.Number.getValue() - } - // wait for chain to run coinbase - await new Promise((resolve) => setTimeout(resolve, 2000)); - - const signer = getSignerFromKeypair(keypair) - let tx = api.tx.SubtensorModule.start_call({ - netuid: netuid, - }) - - await waitForTransactionWithRetry(api, tx, signer) - - await new Promise((resolve) => setTimeout(resolve, 1000)); - const callStarted = await api.query.SubtensorModule.FirstEmissionBlockNumber - .getValue(netuid); - assert.notEqual(callStarted, undefined); -} - -export async function setMaxChildkeyTake(api: TypedApi, take: number) { - const alice = getAliceSigner() - const internalCall = api.tx.SubtensorModule.sudo_set_max_childkey_take({ take }) - const tx = api.tx.Sudo.sudo({ call: internalCall.decodedCall }) - - await waitForTransactionWithRetry(api, tx, alice) -} - -// Swap coldkey to contract address -export async function swapColdkey( - api: TypedApi, - coldkey: KeyPair, - contractAddress: string, -) { - const alice = getAliceSigner(); - const internal_tx = api.tx.SubtensorModule.swap_coldkey({ - old_coldkey: convertPublicKeyToSs58(coldkey.publicKey), - new_coldkey: convertH160ToSS58(contractAddress), - swap_cost: tao(10), - }); - const tx = api.tx.Sudo.sudo({ - call: internal_tx.decodedCall, - }); - await waitForTransactionWithRetry(api, tx, alice); -} - -// Set target registrations per interval to 1000 -export async function setTargetRegistrationsPerInterval( - api: TypedApi, - netuid: number, -) { - const alice = getAliceSigner(); - const internal_tx = api.tx.AdminUtils - .sudo_set_target_registrations_per_interval({ - netuid, - target_registrations_per_interval: 1000, - }); - const tx = api.tx.Sudo.sudo({ - call: internal_tx.decodedCall, - }); - await waitForTransactionWithRetry(api, tx, alice); - - const value = await api.query.SubtensorModule.TargetRegistrationsPerInterval.getValue(netuid) - assert.equal(1000, value) -} - -// Disable admin freeze window and owner hyperparam rate limiting for tests -export async function disableAdminFreezeWindowAndOwnerHyperparamRateLimit(api: TypedApi) { - const alice = getAliceSigner() - - const currentAdminFreezeWindow = await api.query.SubtensorModule.AdminFreezeWindow.getValue() - if (currentAdminFreezeWindow !== 0) { - // Set AdminFreezeWindow to 0 - const setFreezeWindow = api.tx.AdminUtils.sudo_set_admin_freeze_window({ window: 0 }) - const sudoFreezeTx = api.tx.Sudo.sudo({ call: setFreezeWindow.decodedCall }) - await waitForTransactionWithRetry(api, sudoFreezeTx, alice) - } - - const currentOwnerHyperparamRateLimit = await api.query.SubtensorModule.OwnerHyperparamRateLimit.getValue() - if (currentOwnerHyperparamRateLimit !== 0) { - // Set OwnerHyperparamRateLimit to 0 - const setOwnerRateLimit = api.tx.AdminUtils.sudo_set_owner_hparam_rate_limit({ epochs: 0 }) - const sudoOwnerRateTx = api.tx.Sudo.sudo({ call: setOwnerRateLimit.decodedCall }) - await waitForTransactionWithRetry(api, sudoOwnerRateTx, alice) - } - - assert.equal(0, await api.query.SubtensorModule.AdminFreezeWindow.getValue()) - assert.equal(BigInt(0), await api.query.SubtensorModule.OwnerHyperparamRateLimit.getValue()) -} - -export async function sendWasmContractExtrinsic(api: TypedApi, coldkey: KeyPair, contractAddress: string, data: Binary) { - const signer = getSignerFromKeypair(coldkey) - const tx = await api.tx.Contracts.call({ - value: BigInt(0), - dest: MultiAddress.Id(contractAddress), - data: Binary.fromBytes(data.asBytes()), - gas_limit: { - ref_time: BigInt(10000000000), - proof_size: BigInt(10000000), - }, - storage_deposit_limit: BigInt(1000000000) - }) - await waitForTransactionWithRetry(api, tx, signer) -} - -export async function setNetworkLastLockCost(api: TypedApi, defaultNetworkLastLockCost: bigint) { - const alice = getAliceSigner() - const key = await api.query.SubtensorModule.NetworkLastLockCost.getKey() - const codec = await getTypedCodecs(devnet); - const value = codec.query.SubtensorModule.NetworkLastLockCost.value.enc(defaultNetworkLastLockCost) - const internalCall = api.tx.System.set_storage({ - items: [[Binary.fromHex(key), Binary.fromBytes(value)]] - }) - const tx = api.tx.Sudo.sudo({ call: internalCall.decodedCall }) - await waitForTransactionWithRetry(api, tx, alice) - - const valueOnChain = await api.query.SubtensorModule.NetworkLastLockCost.getValue() - assert.equal(defaultNetworkLastLockCost, valueOnChain) -} - -export function getSubnetAccountId(netuid: number): string { - // Hardcode to speed up tests - const NETUID_TO_ACCOUNT_ID: Record = { - 0: "5EYCAe5jLQhn6ofDSvqF6iY53erXNkwhyE1aCEgvi1NNs91F", - 1: "5EYCAe5jLQhn6ofDSvqWqk5fA9XiqK3ahtx5kBNmAqF78mqL", - 2: "5EYCAe5jLQhn6ofDSvqnamdFGeCvHs9TSZtbJ84bdf7qQRc6", - 3: "5EYCAe5jLQhn6ofDSvr4KoAqP8t7kRFLBEq6r4kS6UzZgCb5", - 4: "5EYCAe5jLQhn6ofDSvrL4piRVdZKCyMCuumcQ1SGZJsHwmeE", - 5: "5EYCAe5jLQhn6ofDSvrborG1c8EWfXT5eai7wx8728k2DHK7", - 6: "5EYCAe5jLQhn6ofDSvrsYsobicui85YxPFedVtowUxckUuF8", - 7: "5EYCAe5jLQhn6ofDSvs9HuMBq7auadeq7vb93qVmwnVUkg5A", - 8: "5EYCAe5jLQhn6ofDSvsR2vtmwcG73BkhrbXebnBcQcND2Bdh", - 9: "5EYCAe5jLQhn6ofDSvsgmxSN46wJVjrabGUA9isSsSEwHnFy", - 10: "5EYCAe5jLQhn6ofDSvsxWyyxAbcVxHxTKwQfhfZHLG7fZUJG", - 11: "5EYCAe5jLQhn6ofDSvtEG1XYH6HhQr4L4cMBFcF7o5zPpyA3", - 12: "5EYCAe5jLQhn6ofDSvtW1358PaxtsQACoHHgoYvxFus86kJK", - 13: "5EYCAe5jLQhn6ofDSvtmk4ciW5e6KxG5XxECMVcnijjrN8rz", - 14: "5EYCAe5jLQhn6ofDSvu3V6AJcaKHnWMxGdAhuSJdBZcadwDn", - 15: "5EYCAe5jLQhn6ofDSvuKE7htj4zVF4Tq1J7DTNzTePVJucfX", - 16: "5EYCAe5jLQhn6ofDSvuay9FUqZfghcZhjy3j1KgJ7DN3BDc2", - 17: "5EYCAe5jLQhn6ofDSvuriAo4x4LtAAfaUdzEZGN8a3EmSncG", - 18: "5EYCAe5jLQhn6ofDSvv8TCLf4Z25cimTDJvk7D3y2s7ViZEm", - 19: "5EYCAe5jLQhn6ofDSvvQCDtFB3hH5GsKwysFf9joVgzDytnb", - 20: "5EYCAe5jLQhn6ofDSvvfwFRqHYNUXpyCgeomD6RdxWrxFpQR", - 21: "5EYCAe5jLQhn6ofDSvvwgGyRQ33fzP55RKkGm37URLjgXG7M", - 22: "5EYCAe5jLQhn6ofDSvwDRJX1WXisSwAx9zgnJyoJtAcQo59Y", - 23: "5EYCAe5jLQhn6ofDSvwVAL4bd2Q4uVGptfdHrvV9LzV94VBb", - 24: "5EYCAe5jLQhn6ofDSvwkuMcBjX5GN3NhdLZoQsAyopMsL7A7", - 25: "5EYCAe5jLQhn6ofDSvx2eP9mr1kTpbUaN1WJxorpGeEbbfgG", - 26: "5EYCAe5jLQhn6ofDSvxJPQhMxWRfH9aT6gSpWkYejU7KsbGp", - 27: "5EYCAe5jLQhn6ofDSvxa8SEx516rjhgKqMPL4hEVCHz49DPw", - 28: "5EYCAe5jLQhn6ofDSvxqsTnYBVn4CFnCa2KqcdvKf7rnQo7f", - 29: "5EYCAe5jLQhn6ofDSvy7cVL8HzTFeot5JhGMAacA7wjWgPix", - 30: "5EYCAe5jLQhn6ofDSvyPMWsiQV8T7Myx3NCriXHzamcEwyqa", - 31: "5EYCAe5jLQhn6ofDSvyf6YRJWyoeZv5pn39NGTyq3bUyDc8k", - 32: "5EYCAe5jLQhn6ofDSvyvqZxtdUUr2UBhWi5spQffWRMhV5hU", - 33: "5EYCAe5jLQhn6ofDSvzCabWUjyA3V2HaFP2PNMMVyFERkxPm", - 34: "5EYCAe5jLQhn6ofDSvzUKd44rTqEwaPSz3xtvJ3LS57A2Td3", - 35: "5EYCAe5jLQhn6ofDSvzk4ebexxWSQ8VKiiuQUEjAttytJ8Nx", - 36: "5EYCAe5jLQhn6ofDSw11og9F5TBdrgbCTPqv2BR1MircZp68", - 37: "5EYCAe5jLQhn6ofDSw1HYhgqBwrqKEh5C4nRa86qpYjLqCQd", - 38: "5EYCAe5jLQhn6ofDSw1ZHjERJSY2mnnwvjiw84ngHNc56t9n", - 39: "5EYCAe5jLQhn6ofDSw1q2kn1QwDEELtpfQfSg1UWkCUoNVFh", - 40: "5EYCAe5jLQhn6ofDSw26mnKbXRtRgtzhQ5bxDxAMD2MXeL6A", - 41: "5EYCAe5jLQhn6ofDSw2NWosBdvZd9T6a8kYTmtrBfrEFusmX", - 42: "5EYCAe5jLQhn6ofDSw2eFqQmkREpc1CSsRUyKqY28g6zBbxD", - 43: "5EYCAe5jLQhn6ofDSw2uzrxMruv24ZJKc6RUsnDrbVyiT4uZ", - 44: "5EYCAe5jLQhn6ofDSw3BjtVwyQbDX7QCLmMzRiuh4KrSienC", - 45: "5EYCAe5jLQhn6ofDSw3TUv3Y5uGQyfW55SJVyfbXX9jAzHBc", - 46: "5EYCAe5jLQhn6ofDSw3jDwb8CPwcSDbwp7F1XcHMyybuFsV6", - 47: "5EYCAe5jLQhn6ofDSw3zxy8iJtcotmhpYnBX5YyCSoUdXS9C", - 48: "5EYCAe5jLQhn6ofDSw4GhzgJRPJ1MKohHT82dVf2udMMo854", - 49: "5EYCAe5jLQhn6ofDSw4YT2DtXsyCosua284YBSLsNTE64sjn", - 50: "5EYCAe5jLQhn6ofDSw4pC3mUeNeQGS1Sko13jP2hqH6pLJc1", - 51: "5EYCAe5jLQhn6ofDSw55w5K4ksKbiz7KVTwZHKiYJ6yYc62p", - 52: "5EYCAe5jLQhn6ofDSw5Mg6resMzoBYDCE8t4qGQNkvrGsYLi", - 53: "5EYCAe5jLQhn6ofDSw5dR8QEyrfze6K4xopaPD6DDkj19BcH", - 54: "5EYCAe5jLQhn6ofDSw5uA9wq6MMC6eQwhUm5w9n3gabjR243", - 55: "5EYCAe5jLQhn6ofDSw6AuBVRCr2PZCWpS9hbV6Tt9QUTghER", - 56: "5EYCAe5jLQhn6ofDSw6SeD31KLhb1kchApe7339icEMBxKr7", - 57: "5EYCAe5jLQhn6ofDSw6iPEabRqNnUJiZuVacayqZ54DvDhGB", - 58: "5EYCAe5jLQhn6ofDSw6z8G8BYL3yvrpSeAX88vXPXt6eVRoY", - 59: "5EYCAe5jLQhn6ofDSw7FsHfmepjBPQvKNqTdgsDDzhyNky3e", - 60: "5EYCAe5jLQhn6ofDSw7XcKDMmKQNqy2C7WQ9Eou4TXr72f1B", - 61: "5EYCAe5jLQhn6ofDSw7oMLkwsp5aJX84rBLenkatvMiqJC2W", - 62: "5EYCAe5jLQhn6ofDSw856NJXzJkmm5DwarHALhGjPBbZa5wW", - 63: "5EYCAe5jLQhn6ofDSw8LqPr86oRyDdKpKXDftdxZr1UHqWzq", - 64: "5EYCAe5jLQhn6ofDSw8caRPiDJ7AgBRh4CABSaeQJqM278gq", - 65: "5EYCAe5jLQhn6ofDSw8tKSwJKnnN8jXZns6gzXLEmfDkNtXu", - 66: "5EYCAe5jLQhn6ofDSw9A4UUtSHTZbHdSXY3CYU25EV6UeLH2", - 67: "5EYCAe5jLQhn6ofDSw9RoW2UYn8m3qjKGCyi6QhuhJyCv9nu", - 68: "5EYCAe5jLQhn6ofDSw9hYXa4fGoxWPqBzsvDeMPkA8qwBecQ", - 69: "5EYCAe5jLQhn6ofDSw9yHZ7emmV9xww4jYrjCJ5acxifTH7b", - 70: "5EYCAe5jLQhn6ofDSwAF2afEtGAMRW2wUDoEkEmR5nbPiuFf", - 71: "5EYCAe5jLQhn6ofDSwAWmcCpzkqYt48pCtjkJBTFYcU7ziWG", - 72: "5EYCAe5jLQhn6ofDSwAnWdkR7FWkLcEgwZgFr8961SLrGPJp", - 73: "5EYCAe5jLQhn6ofDSwB4FfJ1DkBwoALZgEcmQ4pvUGDaXxGw", - 74: "5EYCAe5jLQhn6ofDSwBKzgqbLEs9FiSSQuZGx1Wkw66JoNQY", - 75: "5EYCAe5jLQhn6ofDSwBbjiPBSjYLiGYK9aVnVxCbPuy357eQ", - 76: "5EYCAe5jLQhn6ofDSwBsUjvmZEDYApeBtFSJ3ttRrjqmLmRP", - 77: "5EYCAe5jLQhn6ofDSwC9DmUMfitjdNk4cvNobqaGKZiVcSd4", - 78: "5EYCAe5jLQhn6ofDSwCQxo1wnDZw5vqwMbKK9nG6nPbDsr3v", - 79: "5EYCAe5jLQhn6ofDSwCghpZXtiF8YUwp6GFphiwwFDTx9ZXw", - 80: "5EYCAe5jLQhn6ofDSwCxSr781CvL133gpwCLFfdmi3LgRGUs", - 81: "5EYCAe5jLQhn6ofDSwDEBsei7hbXTb9ZZc8qocKcAsDQgmDH", - 82: "5EYCAe5jLQhn6ofDSwDVvuCJECGiv9FSJH5MMZ1Sdh68xe6G", - 83: "5EYCAe5jLQhn6ofDSwDmfvjtLgwvNhMK2x1ruVhH6WxsE2Rh", - 84: "5EYCAe5jLQhn6ofDSwE3QxHUTBd7qFTBmcxNTSP7ZLqbVqHX", - 85: "5EYCAe5jLQhn6ofDSwEK9yq4ZgJKHoZ4WHtt1P4x2AiKmP2V", - 86: "5EYCAe5jLQhn6ofDSwEau1NegAyWkMewExqPZKknUzb42r36", - 87: "5EYCAe5jLQhn6ofDSwEre2vEnfeiCukoydmu7GScwpTnJa5d", - 88: "5EYCAe5jLQhn6ofDSwF8P4TpuAKufTrgiJiQfD8TQeLWaGop", - 89: "5EYCAe5jLQhn6ofDSwFQ861R1f1781xZSyevD9pHsUDEqiBR", - 90: "5EYCAe5jLQhn6ofDSwFfs7Z189gJaa4SBebRm6W8LJ5y7dfH", - 91: "5EYCAe5jLQhn6ofDSwFwc96bEeMW38AJvKXwK3Bxo7xhP3yn", - 92: "5EYCAe5jLQhn6ofDSwGDMAeBM92hVgGBezUSrysoFwqReqrS", - 93: "5EYCAe5jLQhn6ofDSwGV6CBmTdhtxEN4PfQxQvZdimi9vW9r", - 94: "5EYCAe5jLQhn6ofDSwGkqDjMa8P6QnTw8LMTxsFUBbatC8C5", - 95: "5EYCAe5jLQhn6ofDSwH2aFGwgd4HsLZos1HyWowJeRTcTVsg", - 96: "5EYCAe5jLQhn6ofDSwHJKGpXo7jVKtfgbgEV4kd97FLLjBeJ", - 97: "5EYCAe5jLQhn6ofDSwHa4JN7ucQgnSmZLMAzchJya5D4zq8v", - 98: "5EYCAe5jLQhn6ofDSwHqoKui275tEzsS527WAdzp2u5oGNSd", - 99: "5EYCAe5jLQhn6ofDSwJ7YMTJ8bm5hYyJoh41iageVixXYH59", - 100: "5EYCAe5jLQhn6ofDSwJPHNztF6SHA75BYMzXGXNUxYqFoj9g", - 101: "5EYCAe5jLQhn6ofDSwJf2QYUMb7UcfB4H2w2pU4KRNhz5GP5", - 102: "5EYCAe5jLQhn6ofDSwJvmS64U5ng5DGw1hsYNQk9tCaiLvoS", - 103: "5EYCAe5jLQhn6ofDSwKCWTdeaaTsXmNokNp3vMRzM2TScknA", - 104: "5EYCAe5jLQhn6ofDSwKUFVBEh594zKUgV3kZUJ7porLAtE76", - 105: "5EYCAe5jLQhn6ofDSwKjzWipoZpGSsaZDih52EofGgCu9mbP", - 106: "5EYCAe5jLQhn6ofDSwL1jYGQv4VTuRgRxPdaaBVVjW5dRU9u", - 107: "5EYCAe5jLQhn6ofDSwLHUZp12ZAfMynJh4a688BLCKxMhEMq", - 108: "5EYCAe5jLQhn6ofDSwLZDbMb93qrpXtBRjWbg4sAf9q5xtB8", - 109: "5EYCAe5jLQhn6ofDSwLpxcuBFYX4H5z4AQT7E1Z17yhpELLK", - 110: "5EYCAe5jLQhn6ofDSwM6heSmN3CFje5vu5PcmxEqaoaYW1KP", - 111: "5EYCAe5jLQhn6ofDSwMNSfzMUXsTCCBodkL8Ktvg3dTGmYbX", - 112: "5EYCAe5jLQhn6ofDSwMeBhXwb2YeekHgNRGdsqcWWTL13NLP", - 113: "5EYCAe5jLQhn6ofDSwMuvj5XhXDr7JPZ76D9RnJLyHCjK2Zy", - 114: "5EYCAe5jLQhn6ofDSwNBfkd7p1u3ZrVRqm9eyizBS75TaPgK", - 115: "5EYCAe5jLQhn6ofDSwNTQnAhvWaF2QbJaS6AXfg1tvxBrDUN", - 116: "5EYCAe5jLQhn6ofDSwNj9oiJ31FSUxhBK72g5cMrMkpv7iJx", - 117: "5EYCAe5jLQhn6ofDSwNztqFt9VvdwWo43myBdZ3gpahePQpf", - 118: "5EYCAe5jLQhn6ofDSwPGdroUFzbqQ4tvnSuhBVjXHQaNet2o", - 119: "5EYCAe5jLQhn6ofDSwPYNtM4NVH2rczoX7rCjSRMkET6vioH", - 120: "5EYCAe5jLQhn6ofDSwPp7uteUyxEKB6gFnniHP7CD4KqCQDN", - 121: "5EYCAe5jLQhn6ofDSwQ5rwSEbUdRmjCYzTjDqKo2ftCZTubr", - 122: "5EYCAe5jLQhn6ofDSwQMbxyphyJdEHJRj8fjPGUs8i5HjcA3", - 123: "5EYCAe5jLQhn6ofDSwQdLzXQpTypgqQJTocEwDAhbXx21Awy", - 124: "5EYCAe5jLQhn6ofDSwQu624zvxf29PWBCUYkV9rY4MpkGu1f", - 125: "5EYCAe5jLQhn6ofDSwRAq3cb3TLDbwc3w9VG36YNXBhUYKDi", - 126: "5EYCAe5jLQhn6ofDSwRSa5AB9x1R4VhvfpRmb3ECz1aCp2ze", - 127: "5EYCAe5jLQhn6ofDSwRiK6hmGSgcX3ooQVNH8yv3SqSw5mpH", - 128: "5EYCAe5jLQhn6ofDSwRz48FMNwMoybug9AJngvbsufKfME2t", - } - - return NETUID_TO_ACCOUNT_ID[netuid]; -} - -export async function getStake(api: TypedApi, hotkey: string, coldkey: string, netuid: number): Promise { - const value = (await api.query.SubtensorModule.AlphaV2.getValue(hotkey, coldkey, netuid)); - - const mantissa = value.mantissa; - const exponent = value.exponent; - - let result: bigint; - - if (exponent >= 0) { - result = mantissa * BigInt(10) ** exponent; - } else { - result = mantissa / BigInt(10) ** -exponent; - } - - return result; -} - -export async function setAdminFreezeWindow(api: TypedApi) { - const alice = getAliceSigner() - const window = 0; - const internalCall = api.tx.AdminUtils.sudo_set_admin_freeze_window({ window: window }) - const tx = api.tx.Sudo.sudo({ call: internalCall.decodedCall }) - await waitForTransactionWithRetry(api, tx, alice) - assert.equal(window, await api.query.SubtensorModule.AdminFreezeWindow.getValue()) -} \ No newline at end of file diff --git a/contract-tests/src/utils.ts b/contract-tests/src/utils.ts deleted file mode 100644 index 1ba191d833..0000000000 --- a/contract-tests/src/utils.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { defineChain, http, publicActions, createPublicClient } from "viem" -import { privateKeyToAccount, generatePrivateKey } from 'viem/accounts' -import { ethers } from "ethers" -import { ETH_LOCAL_URL } from "./config" -import { FixedSizeBinary } from "polkadot-api"; -import { hexToU8a } from "@polkadot/util"; - -export type ClientUrlType = 'http://localhost:9944'; - -export const chain = (id: number, url: string) => defineChain({ - id: id, - name: 'bittensor', - network: 'bittensor', - nativeCurrency: { - name: 'tao', - symbol: 'TAO', - decimals: 9, - }, - rpcUrls: { - default: { - http: [url], - }, - }, - testnet: true, -}) - - -export async function getPublicClient(url: ClientUrlType) { - const wallet = createPublicClient({ - chain: chain(42, url), - transport: http(), - - }) - - return wallet.extend(publicActions) -} - -/** - * Generates a random Ethereum wallet - * @returns wallet keyring - */ -export function generateRandomEthWallet() { - let privateKey = generatePrivateKey().toString(); - privateKey = privateKey.replace('0x', ''); - - const account = privateKeyToAccount(`0x${privateKey}`) - return account -} - - -export function generateRandomEthersWallet() { - const account = ethers.Wallet.createRandom(); - const provider = new ethers.JsonRpcProvider(ETH_LOCAL_URL); - - const wallet = new ethers.Wallet(account.privateKey, provider); - return wallet; -} - -export function convertToFixedSizeBinary(hexString: string, size: T): FixedSizeBinary { - // Convert hex string to a byte array - const byteArray = hexToU8a(hexString); - - // Ensure the byte array is exactly the specified size - if (byteArray.length !== size) { - throw new Error(`The provided string "${hexString}" does not convert to exactly ${size} bytes.`); - } - - return new FixedSizeBinary(byteArray); -} diff --git a/contract-tests/test/alphaPool.test.ts b/contract-tests/test/alphaPool.test.ts deleted file mode 100644 index d8ecdc8a00..0000000000 --- a/contract-tests/test/alphaPool.test.ts +++ /dev/null @@ -1,126 +0,0 @@ -import { devnet } from "@polkadot-api/descriptors"; -import { u8aToHex } from "@polkadot/util"; -import * as assert from "assert"; -import { ethers } from "ethers"; -import { TypedApi } from "polkadot-api"; -import { PublicClient } from "viem"; -import { convertH160ToPublicKey, convertH160ToSS58, convertPublicKeyToSs58, toViemAddress } from "../src/address-utils"; -import { tao } from "../src/balance-math"; -import { ETH_LOCAL_URL } from "../src/config"; -import { ALPHA_POOL_CONTRACT_ABI, ALPHA_POOL_CONTRACT_BYTECODE } from "../src/contracts/alphaPool"; -import { ISTAKING_V2_ADDRESS, IStakingV2ABI } from "../src/contracts/staking"; -import { getDevnetApi, getRandomSubstrateKeypair } from "../src/substrate"; -import { addNewSubnetwork, burnedRegister, disableWhiteListCheck, forceSetBalanceToEthAddress, forceSetBalanceToSs58Address, getStake, startCall } from "../src/subtensor"; -import { generateRandomEthersWallet, getPublicClient } from "../src/utils"; -// import { KeyPair } from "@polkadot-labs/hdkd-helpers"; -describe("bridge token contract deployment", () => { - // init eth part - const wallet = generateRandomEthersWallet(); - let publicClient: PublicClient; - - // init substrate part - let api: TypedApi - const hotkey = getRandomSubstrateKeypair(); - const coldkey = getRandomSubstrateKeypair(); - - before(async () => { - // init variables got from await and async - publicClient = await getPublicClient(ETH_LOCAL_URL) - api = await getDevnetApi() - - let value = await api.constants.SubtensorModule.InitialMinStake; - - await forceSetBalanceToSs58Address(api, convertPublicKeyToSs58(hotkey.publicKey)) - await forceSetBalanceToSs58Address(api, convertPublicKeyToSs58(coldkey.publicKey)) - await addNewSubnetwork(api, hotkey, coldkey) - let netuid = (await api.query.SubtensorModule.TotalNetworks.getValue()) - 1 - await startCall(api, netuid, coldkey) - console.log("will test in subnet: ", netuid) - - await burnedRegister(api, netuid, convertH160ToSS58(wallet.address), coldkey) - - await forceSetBalanceToEthAddress(api, wallet.address) - await disableWhiteListCheck(api, true) - }); - - it("Can add stake V2", async () => { - let netuid = (await api.query.SubtensorModule.TotalNetworks.getValue()) - 1 - // the unit in V2 is RAO, not ETH - let stakeBalance = tao(20) - const stakeBefore = await getStake(api, convertPublicKeyToSs58(hotkey.publicKey), convertH160ToSS58(wallet.address), netuid) - const contract = new ethers.Contract(ISTAKING_V2_ADDRESS, IStakingV2ABI, wallet); - const tx = await contract.addStake(hotkey.publicKey, stakeBalance.toString(), netuid) - await tx.wait() - - const stakeFromContract = BigInt( - await contract.getStake(hotkey.publicKey, convertH160ToPublicKey(wallet.address), netuid) - ); - - assert.ok(stakeFromContract > stakeBefore) - const stakeAfter = await getStake(api, convertPublicKeyToSs58(hotkey.publicKey), convertH160ToSS58(wallet.address), netuid) - assert.ok(stakeAfter > stakeBefore) - assert.ok(stakeFromContract > tao(20)) - }) - - - it("Can deploy alpha pool smart contract", async () => { - let netuid = (await api.query.SubtensorModule.TotalNetworks.getValue()) - 1 - const stakingPrecompile = new ethers.Contract(ISTAKING_V2_ADDRESS, IStakingV2ABI, wallet); - - const stakeBeforeDeposit = await getStake(api, convertPublicKeyToSs58(hotkey.publicKey), convertH160ToSS58(wallet.address), netuid) - - const contractFactory = new ethers.ContractFactory(ALPHA_POOL_CONTRACT_ABI, ALPHA_POOL_CONTRACT_BYTECODE, wallet) - const contract = await contractFactory.deploy(hotkey.publicKey) - await contract.waitForDeployment() - assert.notEqual(contract.target, undefined) - - const contractAddress = contract.target.toString() - const contractPublicKey = convertH160ToPublicKey(contractAddress) - await forceSetBalanceToSs58Address(api, convertPublicKeyToSs58(contractPublicKey)) - - const code = await publicClient.getCode({ address: toViemAddress(contractAddress) }) - if (code === undefined) { - throw new Error("code not available") - } - assert.ok(code.length > 100) - assert.ok(code.includes("0x60806040523480156")) - - console.log("deployment contractAddress: ", contractAddress) - - const contractForCall = new ethers.Contract(contractAddress, ALPHA_POOL_CONTRACT_ABI, wallet) - const setContractColdkeyTx = await contractForCall.setContractColdkey(contractPublicKey) - await setContractColdkeyTx.wait() - - // check contract coldkey and hotkey - const contractColdkey = await contractForCall.contract_coldkey() - assert.equal(contractColdkey, u8aToHex(contractPublicKey)) - const contractHotkey = await contractForCall.contract_hotkey() - assert.equal(contractHotkey, u8aToHex(hotkey.publicKey)) - - const alphaInPool = await contractForCall.getContractStake(netuid) - assert.equal(alphaInPool, BigInt(0)) - - const depositAlphaTx = await contractForCall.depositAlpha(netuid, tao(10).toString(), hotkey.publicKey) - await depositAlphaTx.wait() - - // compare wallet stake - const stakeAftereDeposit = await getStake(api, convertPublicKeyToSs58(hotkey.publicKey), convertH160ToSS58(wallet.address), netuid) - assert.ok(stakeAftereDeposit < stakeBeforeDeposit) - - // check the contract stake - const ContractStake = await getStake(api, convertPublicKeyToSs58(hotkey.publicKey), convertH160ToSS58(contractAddress), netuid) - assert.ok(ContractStake > 0) - - // check the wallet alpha balance in contract, the actual swapped alpha could be less than alphaAmount in deposit call - const alphaBalanceOnContract = await contractForCall.alphaBalance(wallet.address, netuid) - assert.ok(tao(10) - alphaBalanceOnContract < BigInt(1000)) - - // check the contract stake from the staking precompile - const stakeFromContract = BigInt( - await stakingPrecompile.getStake(hotkey.publicKey, contractPublicKey, netuid) - ); - assert.equal(stakeFromContract, await contractForCall.getContractStake(netuid)) - - }); - -}); diff --git a/contract-tests/test/eth.bridgeToken.deploy.test.ts b/contract-tests/test/eth.bridgeToken.deploy.test.ts deleted file mode 100644 index 94ebcd1260..0000000000 --- a/contract-tests/test/eth.bridgeToken.deploy.test.ts +++ /dev/null @@ -1,69 +0,0 @@ -import * as assert from "assert"; -import * as chai from "chai"; - -import { getDevnetApi } from "../src/substrate" -import { generateRandomEthersWallet, getPublicClient } from "../src/utils"; -import { ETH_LOCAL_URL } from "../src/config"; -import { devnet } from "@polkadot-api/descriptors" -import { PublicClient } from "viem"; -import { TypedApi } from "polkadot-api"; -import { BRIDGE_TOKEN_CONTRACT_ABI, BRIDGE_TOKEN_CONTRACT_BYTECODE } from "../src/contracts/bridgeToken"; -import { toViemAddress } from "../src/address-utils"; -import { forceSetBalanceToEthAddress, disableWhiteListCheck } from "../src/subtensor"; -import { ethers } from "ethers" -describe("bridge token contract deployment", () => { - // init eth part - const wallet = generateRandomEthersWallet(); - let publicClient: PublicClient; - - // init substrate part - let api: TypedApi - - before(async () => { - // init variables got from await and async - publicClient = await getPublicClient(ETH_LOCAL_URL) - api = await getDevnetApi() - - await forceSetBalanceToEthAddress(api, wallet.address) - await disableWhiteListCheck(api, true) - }); - - it("Can deploy bridge token smart contract", async () => { - const contractFactory = new ethers.ContractFactory(BRIDGE_TOKEN_CONTRACT_ABI, BRIDGE_TOKEN_CONTRACT_BYTECODE, wallet) - const contract = await contractFactory.deploy("name", - "symbol", wallet.address) - await contract.waitForDeployment() - assert.notEqual(contract.target, undefined) - - const contractAddress = contract.target.toString() - - const code = await publicClient.getCode({ address: toViemAddress(contractAddress) }) - if (code === undefined) { - throw new Error("code not available") - } - assert.ok(code.length > 100) - assert.ok(code.includes("0x60806040523480156")) - }); - - it("Can deploy bridge token contract with gas limit", async () => { - const contractFactory = new ethers.ContractFactory(BRIDGE_TOKEN_CONTRACT_ABI, BRIDGE_TOKEN_CONTRACT_BYTECODE, wallet) - const successful_gas_limit = "12345678"; - const contract = await contractFactory.deploy("name", - "symbol", wallet.address, - { - gasLimit: successful_gas_limit, - } - ) - await contract.waitForDeployment() - assert.notEqual(contract.target, undefined) - - const contractAddress = contract.target.toString() - - const code = await publicClient.getCode({ address: toViemAddress(contractAddress) }) - if (code === undefined) { - throw new Error("code not available") - } - assert.ok(code.length > 100) - assert.ok(code.includes("0x60806040523480156")) - }); -}); \ No newline at end of file diff --git a/contract-tests/test/eth.chain-id.test.ts b/contract-tests/test/eth.chain-id.test.ts deleted file mode 100644 index 2e1c18d3d4..0000000000 --- a/contract-tests/test/eth.chain-id.test.ts +++ /dev/null @@ -1,74 +0,0 @@ - -import * as assert from "assert"; -import * as chai from "chai"; - -import { getDevnetApi, waitForTransactionWithRetry, getRandomSubstrateKeypair } from "../src/substrate" -import { generateRandomEthWallet, getPublicClient } from "../src/utils"; -import { convertPublicKeyToSs58 } from "../src/address-utils" -import { ETH_LOCAL_URL } from "../src/config"; -import { devnet } from "@polkadot-api/descriptors" -import { getPolkadotSigner } from "polkadot-api/signer"; -import { PublicClient } from "viem"; -import { TypedApi } from "polkadot-api"; -import { forceSetBalanceToSs58Address, forceSetChainID } from "../src/subtensor"; - -describe("Test the EVM chain ID", () => { - // init eth part - const wallet = generateRandomEthWallet(); - let ethClient: PublicClient; - - // init substrate part - const keyPair = getRandomSubstrateKeypair(); - let api: TypedApi; - - // init other variable - const initChainId = 42; - - before(async () => { - // init variables got from await and async - ethClient = await getPublicClient(ETH_LOCAL_URL); - api = await getDevnetApi() - await forceSetBalanceToSs58Address(api, convertPublicKeyToSs58(keyPair.publicKey)) - - }); - - it("EVM chain id update is ok", async () => { - let chainId = await ethClient.getChainId(); - // init chain id should be 42 - assert.equal(chainId, initChainId); - - const newChainId = BigInt(100) - await forceSetChainID(api, newChainId) - - chainId = await ethClient.getChainId(); - assert.equal(chainId, newChainId); - - await forceSetChainID(api, BigInt(initChainId)) - - chainId = await ethClient.getChainId(); - // back to original value for other tests. and we can run it repeatedly - assert.equal(chainId, initChainId); - - }); - - it("EVM chain id is the same, only sudo can change it.", async () => { - let chainId = await ethClient.getChainId(); - // init chain id should be 42 - assert.equal(chainId, initChainId); - - // invalide signer for set chain ID - let signer = getPolkadotSigner( - keyPair.publicKey, - "Sr25519", - keyPair.sign, - ) - - let tx = api.tx.AdminUtils.sudo_set_evm_chain_id({ chain_id: BigInt(100) }) - await waitForTransactionWithRetry(api, tx, signer) - - // extrinsic should be failed and chain ID not updated. - chainId = await ethClient.getChainId(); - assert.equal(chainId, 42); - - }); -}); \ No newline at end of file diff --git a/contract-tests/test/precompileGas.test.ts b/contract-tests/test/precompileGas.test.ts deleted file mode 100644 index 120d7fdd79..0000000000 --- a/contract-tests/test/precompileGas.test.ts +++ /dev/null @@ -1,88 +0,0 @@ -import * as assert from "assert"; -import { generateRandomEthersWallet, getPublicClient } from "../src/utils"; -import { ETH_LOCAL_URL } from "../src/config"; -import { getBalance, getDevnetApi } from "../src/substrate"; -import { forceSetBalanceToEthAddress } from "../src/subtensor"; -import { PrecompileGas_CONTRACT_ABI, PrecompileGas_CONTRACT_BYTECODE } from "../src/contracts/precompileGas"; -import { ethers } from "ethers"; -import { TypedApi } from "polkadot-api"; -import { devnet } from "@polkadot-api/descriptors"; -import { disableWhiteListCheck } from "../src/subtensor"; -import { convertH160ToSS58, convertPublicKeyToSs58 } from "../src/address-utils"; - -describe("SR25519 ED25519 Precompile Gas Test", () => { - const wallet = generateRandomEthersWallet(); - let api: TypedApi; - - // scope of precompile gas usage for sr25519 and ed25519 - const minPrecompileGas = BigInt(6000); - const maxPrecompileGas = BigInt(10000); - - before(async () => { - api = await getDevnetApi(); - await forceSetBalanceToEthAddress(api, wallet.address); - await disableWhiteListCheck(api, true); - }); - - it("Can deploy and call attackHardcoded", async () => { - const fee = await api.query.BaseFee.BaseFeePerGas.getValue() - assert.ok(fee[0] > 1000000000); - const baseFee = BigInt(fee[0]) / BigInt(1000000000); - console.log("Base fee per gas:", baseFee); - - const contractFactory = new ethers.ContractFactory(PrecompileGas_CONTRACT_ABI, PrecompileGas_CONTRACT_BYTECODE, wallet); - const contractDeploy = await contractFactory.deploy(); - - const result = await contractDeploy.waitForDeployment(); - console.log("Contract deployed to:", result.target); - - - let oneIterationGas = BigInt(0); - - for (const iter of [1, 11, 101]) { - const balanceBefore = await getBalance(api, convertH160ToSS58(wallet.address)); - const contract = new ethers.Contract(result.target, PrecompileGas_CONTRACT_ABI, wallet); - const iterations = iter; - const tx = await contract.callED25519(iterations) - await tx.wait() - - const balanceAfter = await getBalance(api, convertH160ToSS58(wallet.address)); - assert.ok(balanceAfter < balanceBefore); - - const usedGas = balanceBefore - balanceAfter; - if (iterations === 1) { - oneIterationGas = usedGas; - continue; - } - - assert.ok(usedGas >= oneIterationGas); - - const precompileUsedGas = BigInt(usedGas - oneIterationGas); - assert.ok(precompileUsedGas >= minPrecompileGas * BigInt(iterations - 1) * baseFee); - assert.ok(precompileUsedGas <= maxPrecompileGas * BigInt(iterations - 1) * baseFee); - } - - for (const iter of [1, 11, 101]) { - const balanceBefore = await getBalance(api, convertH160ToSS58(wallet.address)); - const contract = new ethers.Contract(result.target, PrecompileGas_CONTRACT_ABI, wallet); - const iterations = iter; - const tx = await contract.callSR25519(iterations) - await tx.wait() - - const balanceAfter = await getBalance(api, convertH160ToSS58(wallet.address)); - assert.ok(balanceAfter < balanceBefore); - - const usedGas = balanceBefore - balanceAfter; - if (iterations === 1) { - oneIterationGas = usedGas; - continue; - } - - assert.ok(usedGas >= oneIterationGas); - - const precompileUsedGas = BigInt(usedGas - oneIterationGas); - assert.ok(precompileUsedGas >= minPrecompileGas * BigInt(iterations - 1) * baseFee); - assert.ok(precompileUsedGas <= maxPrecompileGas * BigInt(iterations - 1) * baseFee); - } - }); -}); diff --git a/contract-tests/test/precompileWrapper.direct-call.test.ts b/contract-tests/test/precompileWrapper.direct-call.test.ts deleted file mode 100644 index 53bc21c41f..0000000000 --- a/contract-tests/test/precompileWrapper.direct-call.test.ts +++ /dev/null @@ -1,417 +0,0 @@ -import * as assert from "assert"; -import { getDevnetApi, getRandomSubstrateKeypair, getBalance, getSignerFromKeypair } from "../src/substrate"; -import { devnet } from "@polkadot-api/descriptors"; -import { TypedApi, Binary } from "polkadot-api"; -import { convertH160ToSS58, convertPublicKeyToSs58, convertH160ToPublicKey } from "../src/address-utils"; -import { tao, raoToEth } from "../src/balance-math"; -import { - forceSetBalanceToSs58Address, - addNewSubnetwork, - startCall, - disableWhiteListCheck, - forceSetBalanceToEthAddress, - getStake, - -} from "../src/subtensor"; -import { ethers } from "ethers"; -import { generateRandomEthersWallet, getPublicClient } from "../src/utils"; -import { PRECOMPILE_WRAPPER_ABI, PRECOMPILE_WRAPPER_BYTECODE } from "../src/contracts/precompileWrapper"; -import { ETH_LOCAL_URL } from "../src/config"; -import { PublicClient } from "viem"; -import { IProxyABI, IPROXY_ADDRESS } from "../src/contracts/proxy" - -describe("PrecompileWrapper - Direct Call Tests", () => { - const hotkey = getRandomSubstrateKeypair(); - const coldkey = getRandomSubstrateKeypair(); - const wallet1 = generateRandomEthersWallet(); - const wallet2 = generateRandomEthersWallet(); - - let api: TypedApi; - let publicClient: PublicClient; - let wrapperContract: ethers.Contract; - let wrapperAddress: string; - let netuid: number; - - before(async () => { - api = await getDevnetApi(); - publicClient = await getPublicClient(ETH_LOCAL_URL); - await disableWhiteListCheck(api, true); - await forceSetBalanceToSs58Address(api, convertPublicKeyToSs58(hotkey.publicKey)); - await forceSetBalanceToSs58Address(api, convertPublicKeyToSs58(coldkey.publicKey)); - await forceSetBalanceToEthAddress(api, wallet1.address); - await forceSetBalanceToEthAddress(api, wallet2.address); - await addNewSubnetwork(api, hotkey, coldkey); - netuid = (await api.query.SubtensorModule.TotalNetworks.getValue()) - 1; - await startCall(api, netuid, coldkey); - - const factory = new ethers.ContractFactory( - PRECOMPILE_WRAPPER_ABI, - PRECOMPILE_WRAPPER_BYTECODE, - wallet1 - ); - const deployContract = await factory.deploy(); - await deployContract.waitForDeployment(); - wrapperAddress = await deployContract.getAddress(); - await forceSetBalanceToEthAddress(api, wrapperAddress); - - console.log("Wrapper contract deployed at:", wrapperAddress); - console.log("Testing in subnet:", netuid); - - wrapperContract = new ethers.Contract(wrapperAddress, PRECOMPILE_WRAPPER_ABI, wallet1); - }); - - describe("Balance Transfer Precompile Direct Calls", () => { - it("Should transfer balance via wrapper", async () => { - const keypair = getRandomSubstrateKeypair(); - const transferAmount = raoToEth(tao(1)); - - // Transfer via wrapper - const transferTx = await wrapperContract.transfer(keypair.publicKey, { value: transferAmount.toString() }); - await transferTx.wait(); - - const balance = await getBalance(api, convertPublicKeyToSs58(keypair.publicKey)); - assert.ok(balance >= tao(1), "Balance should be transferred"); - }); - }); - - describe("Metagraph Precompile Direct Calls", () => { - it("Should get UID count via wrapper", async () => { - const uidCountViaWrapper = await wrapperContract.getUidCount(netuid); - assert.ok(uidCountViaWrapper !== undefined, "UID count should be not undefined"); - }); - }); - - describe("Subnet Precompile Direct Calls", () => { - it("Should get serving rate limit via wrapper", async () => { - const rateLimitViaWrapper = await wrapperContract.getServingRateLimit(netuid); - - assert.ok(rateLimitViaWrapper !== undefined, "Rate limit should be not undefined"); - }); - - it("Should get network registered block via wrapper", async () => { - const onchainValue = await api.query.SubtensorModule.NetworkRegisteredAt.getValue(netuid); - - const valueViaWrapper = Number(await wrapperContract.getNetworkRegistrationBlock(netuid)); - - assert.ok(valueViaWrapper > 0, "Network registered block should be greater than 0"); - assert.equal(valueViaWrapper, onchainValue, "Network registered block should match on-chain value"); - }); - - it("Should register network with details via wrapper", async () => { - const newHotkey = getRandomSubstrateKeypair(); - await forceSetBalanceToSs58Address(api, convertPublicKeyToSs58(newHotkey.publicKey)); - - const totalNetworksBefore = await api.query.SubtensorModule.TotalNetworks.getValue(); - - const registerTx = await wrapperContract.registerNetworkWithDetails( - newHotkey.publicKey, - "Test Subnet", - "https://github.com/test/repo", - "test@example.com", - "https://test.example.com", - "test#1234", - "Test description", - "Additional info", - { value: raoToEth(tao(100)).toString() } - ); - await registerTx.wait(); - - const totalNetworksAfter = await api.query.SubtensorModule.TotalNetworks.getValue(); - const beforeValue = typeof totalNetworksBefore === 'bigint' ? totalNetworksBefore : BigInt(totalNetworksBefore); - assert.equal(totalNetworksAfter, beforeValue + BigInt(1), "Network should be registered"); - }); - }); - - describe("Neuron Precompile Direct Calls", () => { - it("Should register neuron via wrapper", async () => { - const newHotkey = getRandomSubstrateKeypair(); - const newColdkey = getRandomSubstrateKeypair(); - await forceSetBalanceToSs58Address(api, convertPublicKeyToSs58(newHotkey.publicKey)); - await forceSetBalanceToSs58Address(api, convertPublicKeyToSs58(newColdkey.publicKey)); - - // Use a reasonable burn amount (100 TAO) - const burnAmount = tao(100); - - const registerTx = await wrapperContract.burnedRegister( - netuid, - newHotkey.publicKey, - { value: raoToEth(burnAmount).toString() } - ); - await registerTx.wait(); - - const uid = await api.query.SubtensorModule.Uids.getValue(netuid, convertPublicKeyToSs58(newHotkey.publicKey)); - assert.ok(uid !== undefined, "Neuron should be registered"); - }); - }); - - describe("Staking Precompile Direct Calls", () => { - it("Should get total coldkey stake via wrapper", async () => { - const stakeViaWrapper = await wrapperContract.getTotalColdkeyStake(coldkey.publicKey); - assert.ok(stakeViaWrapper !== undefined, "Total coldkey stake should be not undefined"); - }); - - it("Should get total hotkey stake via wrapper", async () => { - const stakeViaWrapper = await wrapperContract.getTotalHotkeyStake(hotkey.publicKey); - assert.ok(stakeViaWrapper !== undefined, "Total hotkey stake should be not undefined"); - }); - - it("Should add stake via wrapper", async () => { - const stakeAmount = tao(2); - const stakeBefore = await getStake( - api, - convertPublicKeyToSs58(hotkey.publicKey), - convertH160ToSS58(wrapperAddress), - netuid - ); - - const addStakeTx = await wrapperContract.addStake( - hotkey.publicKey, - stakeAmount.toString(), - netuid, - { value: raoToEth(stakeAmount).toString() } - ); - await addStakeTx.wait(); - - const stakeAfter = await getStake( - api, - convertPublicKeyToSs58(hotkey.publicKey), - convertH160ToSS58(wrapperAddress), - netuid - ); - assert.ok(stakeAfter > stakeBefore, "Stake should be increased"); - }); - - it("Should remove stake via wrapper", async () => { - const removeAmount = tao(1); - const stakeBefore = await getStake( - api, - convertPublicKeyToSs58(hotkey.publicKey), - convertH160ToSS58(wrapperAddress), - netuid - ); - - const removeStakeTx = await wrapperContract.removeStake( - hotkey.publicKey, - removeAmount.toString(), - netuid - ); - await removeStakeTx.wait(); - - const stakeAfter = await getStake( - api, - convertPublicKeyToSs58(hotkey.publicKey), - convertH160ToSS58(wrapperAddress), - netuid - ); - assert.ok(stakeAfter < stakeBefore, "Stake should be decreased"); - }); - }); - - describe("UID Lookup Precompile Direct Calls", () => { - it("Should lookup UID via wrapper", async () => { - const evmAddress = wallet1.address; - const limit = 10; - const lookupViaWrapper = await wrapperContract.uidLookup(netuid, evmAddress, limit); - - assert.ok(Array.isArray(lookupViaWrapper), "Lookup should return an array"); - }); - }); - - describe("Alpha Precompile Direct Calls", () => { - it("Should get alpha price via wrapper", async () => { - const priceViaWrapper = await wrapperContract.getAlphaPrice(netuid); - assert.ok(priceViaWrapper !== undefined, "Alpha price should be not undefined"); - }); - }); - - describe("Crowdloan Precompile Direct Calls", () => { - it("Should get crowdloan via wrapper", async () => { - // First create a crowdloan via substrate - const nextId = await api.query.Crowdloan.NextCrowdloanId.getValue(); - const end = await api.query.System.Number.getValue() + 100; - const deposit = BigInt(15_000_000_000); // 15 TAO - const minContribution = BigInt(1_000_000_000); // 1 TAO - const cap = BigInt(100_000_000_000); // 100 TAO - - const signer = getSignerFromKeypair(coldkey); - await api.tx.Crowdloan.create({ - deposit, - min_contribution: minContribution, - cap, - end, - target_address: undefined, - call: api.tx.System.remark({ remark: Binary.fromText("test") }).decodedCall - }).signAndSubmit(signer); - - // Wait a bit for the transaction to be included - await new Promise(resolve => setTimeout(resolve, 2000)); - - const crowdloanViaWrapper = await wrapperContract.getCrowdloan(nextId); - - assert.ok(crowdloanViaWrapper !== undefined, "Crowdloan should be not undefined"); - }); - - it("Should get contribution via wrapper", async () => { - const nextId = await api.query.Crowdloan.NextCrowdloanId.getValue(); - const contributionViaWrapper = await wrapperContract.getContribution(nextId - 1, coldkey.publicKey); - - assert.ok(contributionViaWrapper !== undefined, "Contribution should be not undefined"); - }); - - it("Should create crowdloan via wrapper", async () => { - const deposit = BigInt(20_000_000_000); // 20 TAO - const minContribution = BigInt(2_000_000_000); // 2 TAO - const cap = BigInt(200_000_000_000); // 200 TAO - const end = Number(await api.query.System.Number.getValue()) + 100; - const targetAddress = wallet2.address; - - const nextIdBefore = await api.query.Crowdloan.NextCrowdloanId.getValue(); - - const createTx = await wrapperContract.createCrowdloan( - deposit.toString(), - minContribution.toString(), - cap.toString(), - end, - targetAddress, - { value: raoToEth(deposit).toString() } - ); - await createTx.wait(); - - const nextIdAfter = await api.query.Crowdloan.NextCrowdloanId.getValue(); - const beforeId = typeof nextIdBefore === 'bigint' ? nextIdBefore : BigInt(nextIdBefore); - assert.equal(nextIdAfter, beforeId + BigInt(1), "Crowdloan should be created"); - }); - }); - - - describe("Leasing Precompile Direct Calls", () => { - it("Should get contributor share via wrapper", async () => { - // First create a lease crowdloan - const nextCrowdloanId = await api.query.Crowdloan.NextCrowdloanId.getValue(); - const crowdloanDeposit = BigInt(100_000_000_000); // 100 TAO - const networkLastLockCost = await api.query.SubtensorModule.NetworkLastLockCost.getValue(); - const lockCostValue = typeof networkLastLockCost === 'bigint' ? networkLastLockCost : BigInt(networkLastLockCost); - const crowdloanCap = lockCostValue * BigInt(2); - const currentBlock = await api.query.System.Number.getValue(); - const crowdloanEnd = currentBlock + 100; - const leasingEmissionsShare = 15; - const leasingEndBlock = currentBlock + 300; - - const signer = getSignerFromKeypair(coldkey); - await api.tx.Crowdloan.create({ - deposit: crowdloanDeposit, - min_contribution: BigInt(1_000_000_000), - cap: crowdloanCap, - end: crowdloanEnd, - target_address: undefined, - call: api.tx.SubtensorModule.register_leased_network({ - emissions_share: leasingEmissionsShare, - end_block: leasingEndBlock, - }).decodedCall - }).signAndSubmit(signer); - - await new Promise(resolve => setTimeout(resolve, 2000)); - - const nextLeaseId = await api.query.SubtensorModule.NextSubnetLeaseId.getValue(); - - // Get contributor share - const shareViaWrapper = await wrapperContract.getContributorShare(nextLeaseId, coldkey.publicKey); - - assert.ok(shareViaWrapper !== undefined, "Share should be not undefined"); - - }); - - it("Should create lease crowdloan via wrapper", async () => { - const crowdloanDeposit = BigInt(100_000_000_000); // 100 TAO - const crowdloanMinContribution = BigInt(1_000_000_000); // 1 TAO - const networkLastLockCost = await api.query.SubtensorModule.NetworkLastLockCost.getValue(); - const lockCostValue = typeof networkLastLockCost === 'bigint' ? networkLastLockCost : BigInt(networkLastLockCost); - const crowdloanCap = lockCostValue * BigInt(2); - const currentBlock = await api.query.System.Number.getValue(); - const currentBlockValue = typeof currentBlock === 'bigint' ? Number(currentBlock) : currentBlock; - const crowdloanEnd = currentBlockValue + 100; - const leasingEmissionsShare = 15; - const hasLeasingEndBlock = true; - const leasingEndBlock = currentBlockValue + 300; - - const nextCrowdloanIdBefore = await api.query.Crowdloan.NextCrowdloanId.getValue(); - - const createTx = await wrapperContract.createLeaseCrowdloan( - crowdloanDeposit.toString(), - crowdloanMinContribution.toString(), - crowdloanCap.toString(), - crowdloanEnd, - leasingEmissionsShare, - hasLeasingEndBlock, - leasingEndBlock, - { value: raoToEth(crowdloanDeposit).toString() } - ); - await createTx.wait(); - - const nextCrowdloanIdAfter = await api.query.Crowdloan.NextCrowdloanId.getValue(); - const beforeId = typeof nextCrowdloanIdBefore === 'bigint' ? nextCrowdloanIdBefore : BigInt(nextCrowdloanIdBefore); - assert.equal(nextCrowdloanIdAfter, beforeId + BigInt(1), "Lease crowdloan should be created"); - }); - }); - - - describe("Proxy Precompile Direct Calls", () => { - it("Should get proxies via wrapper", async () => { - const accountKey = convertH160ToPublicKey(wallet1.address); - const proxiesViaWrapper = await wrapperContract.getProxies(accountKey); - - assert.ok(proxiesViaWrapper !== undefined, "Proxies should be not undefined"); - assert.ok(Array.isArray(proxiesViaWrapper), "Proxies should be an array"); - }); - it("Should add proxy via wrapper", async () => { - const delegate = getRandomSubstrateKeypair(); - await forceSetBalanceToSs58Address(api, convertPublicKeyToSs58(delegate.publicKey)); - const delegateKey = delegate.publicKey; - const proxyType = 0; - const delay = 0; - - const proxiesBefore = await api.query.Proxy.Proxies.getValue(convertH160ToSS58(wrapperAddress)); - - const addProxyTx = await wrapperContract.addProxy(delegateKey, proxyType, delay); - await addProxyTx.wait(); - - const proxiesAfter = await api.query.Proxy.Proxies.getValue(convertH160ToSS58(wrapperAddress)); - assert.ok(proxiesAfter[0].length > proxiesBefore[0].length, "Proxy should be added"); - }); - - it("Should proxy call via wrapper", async () => { - const proxyType = 0; - const delay = 0; - - const proxyContract = new ethers.Contract(IPROXY_ADDRESS, IProxyABI, wallet1); - const addProxyTx = await proxyContract.addProxy(convertH160ToPublicKey(wrapperAddress), proxyType, delay); - await addProxyTx.wait(); - - // Create a simple call (remark) - const remarkCall = api.tx.System.remark({ remark: Binary.fromText("") }); - - const callData = await remarkCall.getEncodedData(); - const data = callData.asBytes(); - - const proxyCallTx = await wrapperContract.proxyCall( - convertH160ToPublicKey(wallet1.address), - [proxyType], - [...data] - ); - await proxyCallTx.wait(); - - // Verify the call was executed (no error means success) - assert.ok(proxyCallTx, "Proxy call should succeed"); - }); - }); - - describe("Address Mapping Precompile Direct Calls", () => { - it("Should map address via wrapper", async () => { - const testAddress = wallet1.address; - const mappedViaWrapper = await wrapperContract.addressMapping(testAddress); - - assert.ok(mappedViaWrapper !== undefined, "Mapped address should be not undefined"); - assert.ok(mappedViaWrapper !== "0x0000000000000000000000000000000000000000000000000000000000000000", "Mapped address should not be zero"); - }); - }); -}); diff --git a/contract-tests/test/pure-proxy.precompile.test.ts b/contract-tests/test/pure-proxy.precompile.test.ts deleted file mode 100644 index f893b6d77a..0000000000 --- a/contract-tests/test/pure-proxy.precompile.test.ts +++ /dev/null @@ -1,210 +0,0 @@ -import * as assert from "assert"; - -import { getAliceSigner, getDevnetApi, getRandomSubstrateKeypair } from "../src/substrate" -import { generateRandomEthersWallet } from "../src/utils"; -import { devnet, MultiAddress } from "@polkadot-api/descriptors" -import { PolkadotSigner, TypedApi } from "polkadot-api"; -import { convertH160ToPublicKey, convertH160ToSS58, convertPublicKeyToSs58 } from "../src/address-utils" -import { IProxyABI, IPROXY_ADDRESS } from "../src/contracts/proxy" -import { ethers } from 'ethers'; -import { forceSetBalanceToEthAddress, forceSetBalanceToSs58Address } from "../src/subtensor"; -import { KeyPair } from "@polkadot-labs/hdkd-helpers"; - -import { decodeAddress } from "@polkadot/util-crypto"; - -async function getTransferCallCode(api: TypedApi, receiver: KeyPair, transferAmount: number) { - - const unsignedTx = api.tx.Balances.transfer_keep_alive({ - dest: MultiAddress.Id(convertPublicKeyToSs58(receiver.publicKey)), - value: BigInt(1000000000), - }); - const encodedCallDataBytes = await unsignedTx.getEncodedData(); - - // encoded call should be 0x050300d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d02286bee - // const transferCall = encodedCallDataBytes - - const data = encodedCallDataBytes.asBytes() - - return [...data] -} - -async function getProxies(api: TypedApi, address: string) { - const entries = await api.query.Proxy.Proxies.getEntries() - const result = [] - for (const entry of entries) { - const proxyAddress = entry.keyArgs[0] - const values = entry.value - const proxies = values[0] - for (const proxy of proxies) { - if (proxy.delegate === address) { - result.push(proxyAddress) - } - } - } - return result -} - -describe("Test pure proxy precompile", () => { - const evmWallet = generateRandomEthersWallet(); - // only used for edge case and normal proxy - const evmWallet2 = generateRandomEthersWallet(); - const evmWallet3 = generateRandomEthersWallet(); - const evmWallet4 = generateRandomEthersWallet(); - const receiver = getRandomSubstrateKeypair(); - - let api: TypedApi - - let alice: PolkadotSigner; - - before(async () => { - api = await getDevnetApi() - alice = await getAliceSigner(); - - await forceSetBalanceToEthAddress(api, evmWallet.address) - await forceSetBalanceToEthAddress(api, evmWallet2.address) - await forceSetBalanceToEthAddress(api, evmWallet3.address) - await forceSetBalanceToEthAddress(api, evmWallet4.address) - }) - - it("Call createPureProxy, then use proxy to call transfer", async () => { - const proxies = await getProxies(api, convertH160ToSS58(evmWallet.address)) - const contract = new ethers.Contract(IPROXY_ADDRESS, IProxyABI, evmWallet) - console.log("evmWallet", evmWallet.address) - - const type = 0; - const delay = 0; - const index = 0; - const tx = await contract.createPureProxy(type, delay, index) - const response = await tx.wait() - console.log("response", response.blockNumber) - - const proxiesAfterAdd = await getProxies(api, convertH160ToSS58(evmWallet.address)) - - const length = proxiesAfterAdd.length - assert.equal(length, proxies.length + 1, "proxy should be set") - const proxy = proxiesAfterAdd[proxiesAfterAdd.length - 1] - - await forceSetBalanceToSs58Address(api, proxy) - const balance = (await api.query.System.Account.getValue(convertPublicKeyToSs58(receiver.publicKey))).data.free - - const amount = 1000000000; - - const callCode = await getTransferCallCode(api, receiver, amount) - const tx2 = await contract.proxyCall(decodeAddress(proxy), [type], callCode) - await tx2.wait() - - const balanceAfter = (await api.query.System.Account.getValue(convertPublicKeyToSs58(receiver.publicKey))).data.free - assert.equal(balanceAfter, balance + BigInt(amount), "balance should be increased") - }) - - it("Call createPureProxy, add multiple proxies", async () => { - const contract = new ethers.Contract(IPROXY_ADDRESS, IProxyABI, evmWallet) - const type = 0; - const delay = 0; - const index = 0; - const proxies = await getProxies(api, convertH160ToSS58(evmWallet.address)) - const length = proxies.length - for (let i = 0; i < 5; i++) { - const tx = await contract.createPureProxy(type, delay, index) - await tx.wait() - - await new Promise(resolve => setTimeout(resolve, 500)); - const currentProxies = await getProxies(api, convertH160ToSS58(evmWallet.address)) - assert.equal(currentProxies.length, length + i + 1, "proxy should be set") - } - }) - - it("Call createPureProxy, edge cases, call via wrong proxy", async () => { - const contract = new ethers.Contract(IPROXY_ADDRESS, IProxyABI, evmWallet2) - const amount = 1000000000; - const callCode = await getTransferCallCode(api, receiver, amount) - const type = 0; - - // call with wrong proxy - try { - const tx = await contract.proxyCall(receiver, [type], callCode) - await tx.wait() - } catch (error) { - assert.notEqual(error, undefined, "should fail if proxy not set") - } - }) - - it("Call createProxy, then use proxy to call transfer", async () => { - const proxies = await api.query.Proxy.Proxies.getValue(convertH160ToSS58(evmWallet2.address)) - const contract = new ethers.Contract(IPROXY_ADDRESS, IProxyABI, evmWallet2) - - const proxiesFromContract = await contract.getProxies(convertH160ToPublicKey(evmWallet2.address)) - assert.equal(proxiesFromContract.length, proxies[0].length, "proxies length should be equal") - - const type = 0; - const delay = 0; - - const tx = await contract.addProxy(convertH160ToPublicKey(evmWallet3.address), type, delay) - await tx.wait() - - const proxiesAfterAdd = await api.query.Proxy.Proxies.getValue(convertH160ToSS58(evmWallet2.address)) - const proxiesList = proxiesAfterAdd[0].map(proxy => proxy.delegate) - - const proxiesFromContractAfterAdd = await contract.getProxies(convertH160ToPublicKey(evmWallet2.address)) - - assert.equal(proxiesFromContractAfterAdd.length, proxiesList.length, "proxy length should be equal") - - for (let index = 0; index < proxiesFromContractAfterAdd.length; index++) { - const proxyInfo = proxiesFromContractAfterAdd[index] - let proxySs58 = convertPublicKeyToSs58(proxyInfo[0]) - assert.ok(proxiesList.includes(proxySs58), "proxy should be set") - if (index === proxiesFromContractAfterAdd.length - 1) { - assert.equal(Number(proxyInfo[1]), type, "proxy_type should match") - assert.equal(Number(proxyInfo[2]), delay, "delay should match") - } - } - - assert.equal(proxiesList.length, proxies[0].length + 1, "proxy should be set") - const proxy = proxiesList[proxiesList.length - 1] - - assert.equal(proxy, convertH160ToSS58(evmWallet3.address), "proxy should be set") - const balance = (await api.query.System.Account.getValue(convertPublicKeyToSs58(receiver.publicKey))).data.free - const amount = 1000000000; - - const contract2 = new ethers.Contract(IPROXY_ADDRESS, IProxyABI, evmWallet3) - const callCode = await getTransferCallCode(api, receiver, amount) - const tx2 = await contract2.proxyCall(convertH160ToPublicKey(evmWallet2.address), [type], callCode) - await tx2.wait() - - const balanceAfter = (await api.query.System.Account.getValue(convertPublicKeyToSs58(receiver.publicKey))).data.free - assert.equal(balanceAfter, balance + BigInt(amount), "balance should be increased") - }) - - it("Call addProxy many times, then check getProxies is correct", async () => { - const proxies = await api.query.Proxy.Proxies.getValue(convertH160ToSS58(evmWallet4.address)) - const contract = new ethers.Contract(IPROXY_ADDRESS, IProxyABI, evmWallet4) - assert.equal(proxies[0].length, 0, "proxies length should be 0") - - const proxiesFromContract = await contract.getProxies(convertH160ToPublicKey(evmWallet4.address)) - assert.equal(proxiesFromContract.length, proxies[0].length, "proxies length should be equal") - - const type = 1; - const delay = 2; - - for (let i = 0; i < 5; i++) { - const evmWallet = generateRandomEthersWallet() - const tx = await contract.addProxy(convertH160ToPublicKey(evmWallet.address), type, delay) - await tx.wait() - } - - const proxiesAfterAdd = await await api.query.Proxy.Proxies.getValue(convertH160ToSS58(evmWallet4.address)) - const proxiesList = proxiesAfterAdd[0].map(proxy => proxy.delegate) - - const proxiesFromContractAfterAdd = await contract.getProxies(convertH160ToPublicKey(evmWallet4.address)) - - assert.equal(proxiesFromContractAfterAdd.length, proxiesList.length, "proxy length should be equal") - - for (let index = 0; index < proxiesFromContractAfterAdd.length; index++) { - const proxyInfo = proxiesFromContractAfterAdd[index] - let proxySs58 = convertPublicKeyToSs58(proxyInfo[0]) - assert.ok(proxiesList.includes(proxySs58), "proxy should be set") - assert.equal(Number(proxyInfo[1]), type, "proxy_type should match") - assert.equal(Number(proxyInfo[2]), delay, "delay should match") - } - }) -}); diff --git a/contract-tests/test/runtime.call.precompile.test.ts b/contract-tests/test/runtime.call.precompile.test.ts deleted file mode 100644 index 40a05827f8..0000000000 --- a/contract-tests/test/runtime.call.precompile.test.ts +++ /dev/null @@ -1,175 +0,0 @@ -import * as assert from "assert"; -import { getAliceSigner, getDevnetApi, getRandomSubstrateKeypair } from "../src/substrate" -import { generateRandomEthersWallet, getPublicClient } from "../src/utils"; -import { IDISPATCH_ADDRESS, ISTORAGE_QUERY_ADDRESS, ETH_LOCAL_URL } from "../src/config"; -import { devnet, MultiAddress } from "@polkadot-api/descriptors" -import { PublicClient } from "viem"; -import { PolkadotSigner, TypedApi, getTypedCodecs } from "polkadot-api"; -import { convertPublicKeyToSs58 } from "../src/address-utils" -import { forceSetBalanceToEthAddress, setMaxChildkeyTake, burnedRegister, forceSetBalanceToSs58Address, addStake, setTxRateLimit, addNewSubnetwork, startCall, setTempo, disableAdminFreezeWindowAndOwnerHyperparamRateLimit } from "../src/subtensor"; -import { xxhashAsHex } from "@polkadot/util-crypto"; - -describe("Test the dispatch precompile", () => { - let publicClient: PublicClient; - const wallet1 = generateRandomEthersWallet(); - let api: TypedApi - let alice: PolkadotSigner; - const hotkey = getRandomSubstrateKeypair(); - const coldkey = getRandomSubstrateKeypair(); - let netuid: number; - - before(async () => { - publicClient = await getPublicClient(ETH_LOCAL_URL) - api = await getDevnetApi() - alice = await getAliceSigner() - await forceSetBalanceToEthAddress(api, wallet1.address) - - await forceSetBalanceToSs58Address(api, convertPublicKeyToSs58(hotkey.publicKey)) - await forceSetBalanceToSs58Address(api, convertPublicKeyToSs58(coldkey.publicKey)) - - await disableAdminFreezeWindowAndOwnerHyperparamRateLimit(api) - - netuid = await addNewSubnetwork(api, hotkey, coldkey) - // set tempo big enough to avoid stake value updated with fast block feature - await setTempo(api, netuid, 10000) - await startCall(api, netuid, coldkey) - await setTxRateLimit(api, BigInt(0)) - - await burnedRegister(api, netuid, convertPublicKeyToSs58(hotkey.publicKey), coldkey) - await addStake(api, netuid, convertPublicKeyToSs58(hotkey.publicKey), BigInt(1_000_000_000), coldkey) - }) - - it("Dispatch transfer call via precompile contract works correctly", async () => { - // call for transfer 1 token to alice - const transferAmount = BigInt(1000000000); - - const unsignedTx = api.tx.Balances.transfer_keep_alive({ - dest: MultiAddress.Id(convertPublicKeyToSs58(alice.publicKey)), - value: transferAmount, - }); - const encodedCallDataBytes = await unsignedTx.getEncodedData(); - - // encoded call should be 0x050300d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d02286bee - const transferCall = encodedCallDataBytes.asHex() - - const aliceBalance = (await api.query.System.Account.getValue(convertPublicKeyToSs58(alice.publicKey))).data.free - const txResponse = await wallet1.sendTransaction({ - to: IDISPATCH_ADDRESS, - data: transferCall, - }) - await txResponse.wait() - - const aliceBalanceAfterTransfer = (await api.query.System.Account.getValue(convertPublicKeyToSs58(alice.publicKey))).data.free - - assert.equal(aliceBalance + transferAmount, aliceBalanceAfterTransfer) - }) - - it("Storage query only allow some pallets prefixed storage", async () => { - const authorizedKeys = [ - await api.query.SubtensorModule.TotalNetworks.getKey(), - await api.query.Swap.FeeRate.getKey(), - await api.query.Balances.TotalIssuance.getKey(), - await api.query.Proxy.Announcements.getKey(), - await api.query.Scheduler.Agenda.getKey(), - await api.query.Drand.Pulses.getKey(), - await api.query.Crowdloan.Crowdloans.getKey(), - await api.query.Sudo.Key.getKey(), - await api.query.Multisig.Multisigs.getKey(), - await api.query.Timestamp.Now.getKey(), - ]; - - for (const key of authorizedKeys) { - await assert.doesNotReject( - publicClient.call({ - to: ISTORAGE_QUERY_ADDRESS, - data: key.toString() as `0x${string}`, - }) - ); - } - - const unauthorizedKeys = [ - await api.query.System.Events.getKey(), - await api.query.Grandpa.CurrentSetId.getKey(), - xxhashAsHex(":code", 128), - ]; - - for (const key of unauthorizedKeys) { - await assert.rejects( - publicClient.call({ - to: ISTORAGE_QUERY_ADDRESS, - data: key.toString() as `0x${string}`, - }) - ); - } - }) - - - it("Value type storage query call via precompile contract works correctly", async () => { - const key = await api.query.SubtensorModule.MaxChildkeyTake.getKey(); - - let maxChildkeyTake = 257; - await setMaxChildkeyTake(api, maxChildkeyTake) - - api.query.SubtensorModule.MaxChildkeyTake.getValue(); - const rawCallResponse = await publicClient.call({ - to: ISTORAGE_QUERY_ADDRESS, - data: key.toString() as `0x${string}`, - }) - const rawResultData = rawCallResponse.data ?? ""; - - const codec = await getTypedCodecs(devnet); - const maxChildkeyTakeCodec = codec.query.SubtensorModule.MaxChildkeyTake.value; - const maxChildkeyTakeFromContract = maxChildkeyTakeCodec.dec(rawResultData); - assert.equal(maxChildkeyTakeFromContract, maxChildkeyTake, "value should be 257") - }) - - it("Map type storage query call via precompile contract works correctly", async () => { - - const key = await api.query.SubtensorModule.Tempo.getKey(netuid); - - const tempoOnChain = await api.query.SubtensorModule.Tempo.getValue(netuid); - const rawCallResponse = await publicClient.call({ - to: ISTORAGE_QUERY_ADDRESS, - data: key.toString() as `0x${string}`, - }) - const rawResultData = rawCallResponse.data ?? ""; - - const codec = await getTypedCodecs(devnet); - const maxChildkeyTakeValueCodec = codec.query.SubtensorModule.Tempo.value; - const decodedValue = maxChildkeyTakeValueCodec.dec(rawResultData); - assert.equal(tempoOnChain, decodedValue, "value should be the same as on chain") - }) - - it("Double map type storage query call via precompile contract works correctly", async () => { - const key = await api.query.SubtensorModule.TotalHotkeyAlpha.getKey(convertPublicKeyToSs58(hotkey.publicKey), netuid); - const totalHotkeyAlphaOnChain = await api.query.SubtensorModule.TotalHotkeyAlpha.getValue(convertPublicKeyToSs58(hotkey.publicKey), netuid); - - const rawCallResponse = await publicClient.call({ - to: ISTORAGE_QUERY_ADDRESS, - data: key.toString() as `0x${string}`, - }) - const rawResultData = rawCallResponse.data ?? ""; - const codec = await getTypedCodecs(devnet); - const totalHotkeyAlphaValueCodec = codec.query.SubtensorModule.TotalHotkeyAlpha.value; - const decodedValue = totalHotkeyAlphaValueCodec.dec(rawResultData); - assert.equal(totalHotkeyAlphaOnChain, decodedValue, "value should be the same as on chain") - }) - - // Polkadot api can't decode the boolean type for now. - // it("Double map type storage query call via precompile contract works correctly", async () => { - // const key = await api.query.SubtensorModule.IsNetworkMember.getKey(convertPublicKeyToSs58(alice.publicKey), netuid); - - // const isNetworkMemberOnChain = await api.query.SubtensorModule.IsNetworkMember.getValue(convertPublicKeyToSs58(alice.publicKey), netuid); - // const rawCallResponse = await publicClient.call({ - // to: ISTORAGE_QUERY_ADDRESS, - // data: key.toString() as `0x${string}`, - // }) - - // const rawResultData = rawCallResponse.data ?? ""; - // const codec = await getTypedCodecs(devnet); - // const isNetworkMemberValueCodec = codec.query.SubtensorModule.IsNetworkMember.value; - // const decodedValue = isNetworkMemberValueCodec.dec(rawResultData); - // assert.equal(isNetworkMemberOnChain, decodedValue, "value should be the same as on chain") - // }) - -}); diff --git a/contract-tests/test/staking.precompile.reward.test.ts b/contract-tests/test/staking.precompile.reward.test.ts deleted file mode 100644 index 31e15c6225..0000000000 --- a/contract-tests/test/staking.precompile.reward.test.ts +++ /dev/null @@ -1,109 +0,0 @@ -import * as assert from "assert"; -import { getDevnetApi, getRandomSubstrateKeypair } from "../src/substrate" -import { devnet } from "@polkadot-api/descriptors" -import { TypedApi } from "polkadot-api"; -import { convertPublicKeyToSs58 } from "../src/address-utils" -import { tao } from "../src/balance-math" -import { - forceSetBalanceToSs58Address, addNewSubnetwork, burnedRegister, - setTxRateLimit, setTempo, setWeightsSetRateLimit, setSubnetOwnerCut, - setMinDelegateTake, setActivityCutoff, addStake, setWeight, rootRegister, - startCall, - disableAdminFreezeWindowAndOwnerHyperparamRateLimit, - getStake -} from "../src/subtensor" - -describe("Test neuron precompile reward", () => { - const hotkey = getRandomSubstrateKeypair(); - const coldkey = getRandomSubstrateKeypair(); - - const validator = getRandomSubstrateKeypair(); - const miner = getRandomSubstrateKeypair(); - const nominator = getRandomSubstrateKeypair(); - - let api: TypedApi - - before(async () => { - const root_netuid = 0; - const root_tempo = 1; // neet root epoch to happen before subnet tempo - const subnet_tempo = 1; - api = await getDevnetApi() - - // await forceSetBalanceToSs58Address(api, convertPublicKeyToSs58(alice.publicKey)) - await forceSetBalanceToSs58Address(api, convertPublicKeyToSs58(hotkey.publicKey)) - await forceSetBalanceToSs58Address(api, convertPublicKeyToSs58(coldkey.publicKey)) - await forceSetBalanceToSs58Address(api, convertPublicKeyToSs58(validator.publicKey)) - await forceSetBalanceToSs58Address(api, convertPublicKeyToSs58(miner.publicKey)) - await forceSetBalanceToSs58Address(api, convertPublicKeyToSs58(nominator.publicKey)) - // await forceSetBalanceToEthAddress(api, wallet1.address) - // await forceSetBalanceToEthAddress(api, wallet2.address) - let netuid = await addNewSubnetwork(api, hotkey, coldkey) - await startCall(api, netuid, coldkey) - - console.log("test the case on subnet ", netuid) - await disableAdminFreezeWindowAndOwnerHyperparamRateLimit(api) - - await setTxRateLimit(api, BigInt(0)) - await setTempo(api, root_netuid, root_tempo) - await setTempo(api, netuid, subnet_tempo) - await setWeightsSetRateLimit(api, netuid, BigInt(0)) - - await burnedRegister(api, netuid, convertPublicKeyToSs58(validator.publicKey), coldkey) - await burnedRegister(api, netuid, convertPublicKeyToSs58(miner.publicKey), coldkey) - await burnedRegister(api, netuid, convertPublicKeyToSs58(nominator.publicKey), coldkey) - await setSubnetOwnerCut(api, 0) - await setActivityCutoff(api, netuid, 65535) - await setMinDelegateTake(api, 0) - }) - - it("Staker receives rewards", async () => { - let netuid = (await api.query.SubtensorModule.TotalNetworks.getValue()) - 1 - - await addStake(api, netuid, convertPublicKeyToSs58(miner.publicKey), tao(1), coldkey) - await addStake(api, netuid, convertPublicKeyToSs58(nominator.publicKey), tao(1), coldkey) - - await addStake(api, netuid, convertPublicKeyToSs58(validator.publicKey), tao(100), coldkey) - - const miner_alpha_before_emission = await getStake( - api, - convertPublicKeyToSs58(miner.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid - ) - - await setWeight(api, netuid, [0, 1], [0xffff, 0xffff], BigInt(0), validator) - await rootRegister(api, convertPublicKeyToSs58(validator.publicKey), coldkey) - - let index = 0; - while (index < 60) { - const pending = await api.query.SubtensorModule.PendingValidatorEmission.getValue(netuid); - if (pending > 0) { - console.log("pending amount is ", pending); - break; - } - - await new Promise((resolve) => setTimeout(resolve, 1000)); - console.log("wait for the ValidatorEmission update"); - index += 1; - } - - index = 0; - while (index < 60) { - let miner_current_alpha = await getStake( - api, - convertPublicKeyToSs58(miner.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid - ) - - if (miner_current_alpha > miner_alpha_before_emission) { - console.log("miner got reward"); - break; - } - - await new Promise((resolve) => setTimeout(resolve, 1000)); - console.log(" waiting for emission"); - index += 1; - } - }) -}) diff --git a/contract-tests/test/staking.precompile.wrap.test.ts b/contract-tests/test/staking.precompile.wrap.test.ts deleted file mode 100644 index e4d666adf1..0000000000 --- a/contract-tests/test/staking.precompile.wrap.test.ts +++ /dev/null @@ -1,124 +0,0 @@ -import * as assert from "assert"; -import { getDevnetApi, getRandomSubstrateKeypair } from "../src/substrate"; -import { devnet } from "@polkadot-api/descriptors"; -import { TypedApi } from "polkadot-api"; -import { - convertH160ToSS58, - convertPublicKeyToSs58, - ethAddressToH160, -} from "../src/address-utils"; -import { tao, raoToEth } from "../src/balance-math"; -import { - addNewSubnetwork, - addStake, - disableWhiteListCheck, - forceSetBalanceToEthAddress, - forceSetBalanceToSs58Address, - startCall, -} from "../src/subtensor"; -import { ethers } from "ethers"; -import { generateRandomEthersWallet } from "../src/utils"; - -import { abi, bytecode } from "../src/contracts/stakeWrap"; - -describe("Test staking precompile add from deployed contract", () => { - const hotkey = getRandomSubstrateKeypair(); - const coldkey = getRandomSubstrateKeypair(); - const wallet1 = generateRandomEthersWallet(); - - let api: TypedApi; - - before(async () => { - api = await getDevnetApi(); - await forceSetBalanceToSs58Address( - api, - convertPublicKeyToSs58(hotkey.publicKey), - ); - await forceSetBalanceToSs58Address( - api, - convertPublicKeyToSs58(coldkey.publicKey), - ); - await forceSetBalanceToEthAddress(api, wallet1.address); - await addNewSubnetwork(api, hotkey, coldkey); - let netuid = (await api.query.SubtensorModule.TotalNetworks.getValue()) - 1; - await startCall(api, netuid, coldkey); - await disableWhiteListCheck(api, true) - console.log("will test in subnet: ", netuid); - }); - - it("Staker add and remove stake", async () => { - let netuid = (await api.query.SubtensorModule.TotalNetworks.getValue()) - 1; - - const contractFactory = new ethers.ContractFactory(abi, bytecode, wallet1) - const contract = await contractFactory.deploy() - await contract.waitForDeployment() - - // stake will remove the balance from contract, need transfer token to deployed contract - const ethTransfer = { - to: contract.target.toString(), - value: raoToEth(tao(10000)).toString() - } - - const txResponse = await wallet1.sendTransaction(ethTransfer) - await txResponse.wait(); - - const deployedContract = new ethers.Contract( - contract.target.toString(), - abi, - wallet1, - ); - - const tx = await deployedContract.stake( - hotkey.publicKey, - netuid, - tao(2), - ); - await tx.wait(); - - const tx2 = await deployedContract.removeStake( - hotkey.publicKey, - netuid, - tao(1), - ); - await tx2.wait(); - - }); - - it("Staker add stake limit", async () => { - let netuid = (await api.query.SubtensorModule.TotalNetworks.getValue()) - 1; - let ss58Address = convertH160ToSS58(wallet1.address); - - const contractFactory = new ethers.ContractFactory(abi, bytecode, wallet1) - const contract = await contractFactory.deploy() - await contract.waitForDeployment() - - - // stake will remove the balance from contract, need transfer token to deployed contract - const ethTransfer = { - to: contract.target.toString(), - value: raoToEth(tao(10000)).toString() - } - - const txResponse = await wallet1.sendTransaction(ethTransfer) - await txResponse.wait(); - - const balance = await api.query.System.Account.getValue(convertH160ToSS58(contract.target.toString())) - console.log(" == balance is ", balance.data.free) - - const deployedContract = new ethers.Contract( - contract.target.toString(), - abi, - wallet1, - ); - - const tx = await deployedContract.stakeLimit( - hotkey.publicKey, - netuid, - tao(2000), - tao(1000), - true, - ); - await tx.wait(); - - }); -}); diff --git a/contract-tests/test/transaction.replace.test.ts b/contract-tests/test/transaction.replace.test.ts deleted file mode 100644 index afb95ed9d5..0000000000 --- a/contract-tests/test/transaction.replace.test.ts +++ /dev/null @@ -1,83 +0,0 @@ -import * as assert from "assert"; - -import { getDevnetApi, getRandomSubstrateSigner, } from "../src/substrate" -import { getPublicClient } from "../src/utils"; -import { ETH_LOCAL_URL, IBALANCETRANSFER_ADDRESS, IBalanceTransferABI } from "../src/config"; -import { devnet } from "@polkadot-api/descriptors" -import { PublicClient } from "viem"; -import { TypedApi } from "polkadot-api"; -import { generateRandomEthersWallet } from "../src/utils"; -import { tao, raoToEth } from "../src/balance-math"; -import { toViemAddress, } from "../src/address-utils" -import { getContract } from "../src/eth" -import { forceSetBalanceToEthAddress, } from "../src/subtensor"; - -describe("Transaction replace tests", () => { - // init eth part - const wallet = generateRandomEthersWallet(); - const wallet2 = generateRandomEthersWallet(); - const signer = getRandomSubstrateSigner(); - let publicClient: PublicClient; - let api: TypedApi - - before(async () => { - - publicClient = await getPublicClient(ETH_LOCAL_URL) - api = await getDevnetApi() - await forceSetBalanceToEthAddress(api, wallet.address) - }); - - it("Can replace simple transfer transaction", async () => { - const transferBalance = raoToEth(tao(1)) - - const gasPrice = BigInt(10e9) - const gasLimit = BigInt(1000000) - const nonce = await publicClient.getTransactionCount({ address: toViemAddress(wallet.address) }) - - for (let i = 1; i < 10; i++) { - const transfer = { - to: wallet2.address, - value: transferBalance.toString(), - nonce: nonce, - gasPrice: gasPrice * BigInt(i), - gasLimit: gasLimit * BigInt(i) - } - - try { - await wallet.sendTransaction(transfer) - } catch (error) { - // ignore error, previous transaction could be mined. the nonce is wrong. - } - await new Promise(resolve => setTimeout(resolve, 10)) - } - - // check the node not crashed - await forceSetBalanceToEthAddress(api, wallet.address) - }) - - it("Can replace precompile call transaction", async () => { - const contract = getContract(IBALANCETRANSFER_ADDRESS, IBalanceTransferABI, wallet) - const transferBalance = raoToEth(tao(1)) - - const gasPrice = BigInt(10e9) - const gasLimit = BigInt(1000000) - const nonce = await publicClient.getTransactionCount({ address: toViemAddress(wallet.address) }) - - for (let i = 1; i < 10; i++) { - try { - await contract.transfer(signer.publicKey, { - value: transferBalance.toString(), - nonce: nonce, - gasPrice: gasPrice * BigInt(i), - gasLimit: gasLimit * BigInt(i) - }) - } catch (error) { - // ignore error, previous transaction could be mined. the nonce is wrong. - } - - await new Promise(resolve => setTimeout(resolve, 10)) - } - // check the node not crashed - await forceSetBalanceToEthAddress(api, wallet.address) - }) -}) \ No newline at end of file diff --git a/contract-tests/test/wasm.contract.test.ts b/contract-tests/test/wasm.contract.test.ts deleted file mode 100644 index 6ae8d82c08..0000000000 --- a/contract-tests/test/wasm.contract.test.ts +++ /dev/null @@ -1,976 +0,0 @@ -import { devnet, MultiAddress } from "@polkadot-api/descriptors"; -import { getInkClient, InkClient, } from "@polkadot-api/ink-contracts"; -import { KeyPair } from "@polkadot-labs/hdkd-helpers"; -import * as assert from "assert"; -import fs from "fs"; -import { Binary, TypedApi } from "polkadot-api"; -import { contracts } from "../.papi/descriptors"; -import { convertPublicKeyToSs58 } from "../src/address-utils"; -import { tao } from "../src/balance-math"; -import { getBalance, getDevnetApi, getRandomSubstrateKeypair, getSignerFromKeypair, waitForTransactionWithRetry } from "../src/substrate"; -import { addNewSubnetwork, burnedRegister, forceSetBalanceToSs58Address, sendWasmContractExtrinsic, setAdminFreezeWindow, setTargetRegistrationsPerInterval, startCall } from "../src/subtensor"; - -const bittensorWasmPath = "./bittensor/target/ink/bittensor.wasm" -const bittensorBytecode = fs.readFileSync(bittensorWasmPath) - -describe("Test wasm contract", () => { - - let api: TypedApi - let hotkey: KeyPair; - let coldkey: KeyPair; - - let hotkey2: KeyPair; - let coldkey2: KeyPair; - - // set initial netuid to 0 to avoid warning - let netuid: number = 0; - let contractAddress = ""; - let inkClient: InkClient; - - async function addStakeViaContract(addStakeToContract: boolean) { - if (contractAddress === "") { - return; - } - - const amount = tao(100) - let message - let dest - if (addStakeToContract) { - message = inkClient.message("add_stake") - dest = contractAddress; - } else { - message = inkClient.message("caller_add_stake") - dest = convertPublicKeyToSs58(coldkey.publicKey); - } - - const data = message.encode({ - hotkey: Binary.fromBytes(hotkey.publicKey), - netuid: netuid, - amount: amount, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - - const stake = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - dest, - netuid, - ))?.stake - - assert.ok(stake !== undefined) - assert.ok(stake > BigInt(0)) - } - - async function getContractStake(): Promise { - const stake = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - contractAddress, - netuid, - ))?.stake - - assert.ok(stake !== undefined) - return stake as bigint - } - - async function getContractStakeOnRoot(): Promise { - const stake = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - contractAddress, - 0, - ))?.stake - - assert.ok(stake !== undefined) - return stake as bigint - } - - async function initSecondColdAndHotkey() { - hotkey2 = getRandomSubstrateKeypair(); - coldkey2 = getRandomSubstrateKeypair(); - await forceSetBalanceToSs58Address(api, convertPublicKeyToSs58(coldkey2.publicKey)) - await forceSetBalanceToSs58Address(api, convertPublicKeyToSs58(hotkey2.publicKey)) - await burnedRegister(api, netuid, convertPublicKeyToSs58(hotkey2.publicKey), coldkey2) - } - - before(async () => { - // init variables got from await and async - api = await getDevnetApi() - await setAdminFreezeWindow(api); - - inkClient = getInkClient(contracts.bittensor) - hotkey = getRandomSubstrateKeypair(); - coldkey = getRandomSubstrateKeypair(); - await forceSetBalanceToSs58Address(api, convertPublicKeyToSs58(coldkey.publicKey)) - await forceSetBalanceToSs58Address(api, convertPublicKeyToSs58(hotkey.publicKey)) - - netuid = await addNewSubnetwork(api, hotkey, coldkey) - await startCall(api, netuid, coldkey) - console.log("test the case on subnet ", netuid) - await addNewSubnetwork(api, hotkey, coldkey) - await startCall(api, netuid + 1, coldkey) - await setTargetRegistrationsPerInterval(api, netuid) - }) - - beforeEach(async () => { - hotkey = getRandomSubstrateKeypair(); - coldkey = getRandomSubstrateKeypair(); - await forceSetBalanceToSs58Address(api, convertPublicKeyToSs58(coldkey.publicKey)) - await forceSetBalanceToSs58Address(api, convertPublicKeyToSs58(hotkey.publicKey)) - await burnedRegister(api, netuid, convertPublicKeyToSs58(hotkey.publicKey), coldkey) - - }); - - it("Can instantiate contract", async () => { - const signer = getSignerFromKeypair(coldkey); - const constructor = inkClient.constructor('new') - const data = constructor.encode() - const instantiate_with_code = await api.tx.Contracts.instantiate_with_code({ - code: Binary.fromBytes(bittensorBytecode), - storage_deposit_limit: BigInt(10000000), - value: BigInt(0), - gas_limit: { - ref_time: BigInt(1000000000), - proof_size: BigInt(1000000), - }, - data: Binary.fromBytes(data.asBytes()), - salt: Binary.fromHex("0x"), - }).signAndSubmit(signer) - - let codeStoredEvents = await api.event.Contracts.Instantiated.filter(instantiate_with_code.events) - if (codeStoredEvents.length === 0) { - throw new Error("No events found after instantiating contract call") - } - contractAddress = codeStoredEvents[0].contract - - // transfer 10 Tao to contract then we can stake - const transfer = await api.tx.Balances.transfer_keep_alive({ - dest: MultiAddress.Id(contractAddress), - value: tao(2000), - }) - await waitForTransactionWithRetry(api, transfer, signer) - }) - - - it("Can query stake info from contract", async () => { - - const queryMessage = inkClient.message("get_stake_info_for_hotkey_coldkey_netuid") - - const data = queryMessage.encode({ - hotkey: Binary.fromBytes(hotkey.publicKey), - coldkey: Binary.fromBytes(coldkey.publicKey), - netuid: netuid, - }) - - const response = await api.apis.ContractsApi.call( - convertPublicKeyToSs58(hotkey.publicKey), - contractAddress, - BigInt(0), - undefined, - undefined, - Binary.fromBytes(data.asBytes()), - ) - - assert.ok(response.result.success) - const result = queryMessage.decode(response.result.value).value.value - - if (typeof result === "object" && "hotkey" in result && "coldkey" in result && "netuid" in result && "stake" in result && "locked" in result && "emission" in result && "tao_emission" in result && "drain" in result && "is_registered" in result) { - assert.equal(result.hotkey, convertPublicKeyToSs58(hotkey.publicKey)) - assert.equal(result.coldkey, convertPublicKeyToSs58(coldkey.publicKey)) - assert.equal(result.netuid, netuid) - assert.equal(result.is_registered, true) - } else { - throw new Error("result is not an object") - } - - }) - - it("Can add stake to contract", async () => { - await addStakeViaContract(true) - }) - - it("Can remove stake to contract", async () => { - await addStakeViaContract(true) - const stake = await getContractStake() - - let amount = stake / BigInt(2) - const message = inkClient.message("remove_stake") - const data = message.encode({ - hotkey: Binary.fromBytes(hotkey.publicKey), - netuid: netuid, - amount: amount, - }) - - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - - const stakeAfterAddStake = await getContractStake() - - assert.ok(stakeAfterAddStake < stake) - }) - - it("Can unstake all from contract", async () => { - await addStakeViaContract(true) - // Get stake before unstake_all - const stakeBefore = await getContractStake() - - assert.ok(stakeBefore > BigInt(0)) - - // Call unstake_all - const unstakeMessage = inkClient.message("unstake_all") - const unstakeData = unstakeMessage.encode({ - hotkey: Binary.fromBytes(hotkey.publicKey), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, unstakeData) - - // Verify stake is now zero - const stakeAfter = await getContractStake() - - assert.equal(stakeAfter, BigInt(0)) - }) - - it("Can unstake all alpha from contract", async () => { - await addStakeViaContract(true) - // Get stake before unstake_all_alpha - const stakeBefore = await getContractStake() - - assert.ok(stakeBefore > BigInt(0)) - - // Call unstake_all_alpha - const message = inkClient.message("unstake_all_alpha") - const data = message.encode({ - hotkey: Binary.fromBytes(hotkey.publicKey), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - - // Verify stake is now zero - const stakeAfter = await getContractStake() - - assert.equal(stakeAfter, BigInt(0)) - }) - - it("Can move stake between hotkeys", async () => { - await addStakeViaContract(true) - await initSecondColdAndHotkey() - // Get initial stakes - const originStakeBefore = await getContractStake() - - const destStakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey2.publicKey), - contractAddress, - netuid, - ))?.stake || BigInt(0) - - assert.ok(originStakeBefore > BigInt(0)) - - // Move stake - const moveAmount = originStakeBefore / BigInt(2) - const message = inkClient.message("move_stake") - const data = message.encode({ - origin_hotkey: Binary.fromBytes(hotkey.publicKey), - destination_hotkey: Binary.fromBytes(hotkey2.publicKey), - origin_netuid: netuid, - destination_netuid: netuid, - amount: moveAmount, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - - // Verify stakes changed - const originStakeAfter = await getContractStake() - - const destStakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey2.publicKey), - contractAddress, - netuid, - ))?.stake - - assert.ok(destStakeAfter !== undefined) - assert.ok(originStakeAfter < originStakeBefore) - assert.ok(destStakeAfter > destStakeBefore) - }) - - it("Can transfer stake between coldkeys", async () => { - await addStakeViaContract(true) - await initSecondColdAndHotkey() - // Get initial stake - const stakeBeforeOrigin = await getContractStake() - - const stakeBeforeDest = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey2.publicKey), - netuid, - ))?.stake - - assert.ok(stakeBeforeOrigin > BigInt(0)) - assert.ok(stakeBeforeDest !== undefined) - - // Transfer stake - const transferAmount = stakeBeforeOrigin / BigInt(2) - const message = inkClient.message("transfer_stake") - const data = message.encode({ - destination_coldkey: Binary.fromBytes(coldkey2.publicKey), - hotkey: Binary.fromBytes(hotkey.publicKey), - origin_netuid: netuid, - destination_netuid: netuid, - amount: transferAmount, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - - // Verify stake transferred - const stakeAfterOrigin = await getContractStake() - - const stakeAfterDest = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey2.publicKey), - netuid, - ))?.stake - - assert.ok(stakeAfterDest !== undefined) - assert.ok(stakeAfterOrigin < stakeBeforeOrigin) - assert.ok(stakeAfterDest > stakeBeforeDest!) - }) - - it("Can swap stake between networks", async () => { - await addStakeViaContract(true) - // Get initial stakes - const stakeBefore = await getContractStake() - - const stakeBefore2 = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - contractAddress, - netuid + 1, - ))?.stake || BigInt(0) - - assert.ok(stakeBefore > BigInt(0)) - - // Swap stake - const swapAmount = stakeBefore / BigInt(2) - const message = inkClient.message("swap_stake") - const data = message.encode({ - hotkey: Binary.fromBytes(hotkey.publicKey), - origin_netuid: netuid, - destination_netuid: netuid + 1, - amount: swapAmount, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - - // Verify stakes swapped - const stakeAfter = await getContractStake() - - const stakeAfter2 = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - contractAddress, - netuid + 1, - ))?.stake - - assert.ok(stakeAfter2 !== undefined) - assert.ok(stakeAfter < stakeBefore) - assert.ok(stakeAfter2 > stakeBefore2) - }) - - it("Can add stake with limit", async () => { - const stakeBefore = await getContractStake() - - const message = inkClient.message("add_stake_limit") - const data = message.encode({ - hotkey: Binary.fromBytes(hotkey.publicKey), - netuid: netuid, - amount: tao(200), - limit_price: tao(100), - allow_partial: false, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - - // Verify stake was added - const stakeAfter = await getContractStake() - - assert.ok(stakeAfter > stakeBefore) - }) - - it("Can remove stake with limit", async () => { - await addStakeViaContract(true) - const stakeBefore = await getContractStake() - - assert.ok(stakeBefore > BigInt(0)) - - const message = inkClient.message("remove_stake_limit") - const data = message.encode({ - hotkey: Binary.fromBytes(hotkey.publicKey), - netuid: netuid, - amount: stakeBefore / BigInt(2), - limit_price: tao(1), - allow_partial: false, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - - const stakeAfter = await getContractStake() - - assert.ok(stakeAfter < stakeBefore) - }) - - it("Can swap stake with limit", async () => { - await addStakeViaContract(true) - - const stakeBefore = await getContractStake() - - const stakeBefore2 = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - contractAddress, - netuid + 1, - ))?.stake - - assert.ok(stakeBefore > BigInt(0)) - assert.ok(stakeBefore2 !== undefined) - - const message = inkClient.message("swap_stake_limit") - const data = message.encode({ - hotkey: Binary.fromBytes(hotkey.publicKey), - origin_netuid: netuid, - destination_netuid: netuid + 1, - amount: stakeBefore / BigInt(2), - limit_price: tao(1), - allow_partial: false, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - - const stakeAfter = await getContractStake() - - const stakeAfter2 = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - contractAddress, - netuid + 1, - ))?.stake - - assert.ok(stakeAfter2 !== undefined) - assert.ok(stakeAfter < stakeBefore) - assert.ok(stakeAfter2 > stakeBefore2) - }) - - it("Can remove stake full limit", async () => { - await addStakeViaContract(true) - const stakeBefore = await getContractStake() - - assert.ok(stakeBefore > BigInt(0)) - - const message = inkClient.message("remove_stake_full_limit") - const data = message.encode({ - hotkey: Binary.fromBytes(hotkey.publicKey), - netuid: netuid, - limit_price: undefined, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - - const stakeAfter = await getContractStake() - - assert.ok(stakeAfter < stakeBefore) - }) - - it("Can set coldkey auto stake hotkey", async () => { - const message = inkClient.message("set_coldkey_auto_stake_hotkey") - const data = message.encode({ - netuid: netuid, - hotkey: Binary.fromBytes(hotkey.publicKey), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - - let autoStakeHotkey = await api.query.SubtensorModule.AutoStakeDestination.getValue( - contractAddress, - netuid, - ) - - assert.ok(autoStakeHotkey !== undefined) - assert.ok(autoStakeHotkey === convertPublicKeyToSs58(hotkey.publicKey)) - }) - - it("Can add and remove proxy", async () => { - const message = inkClient.message("add_proxy") - const data = message.encode({ - delegate: Binary.fromBytes(hotkey.publicKey), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - let proxies = await api.query.Proxy.Proxies.getValue( - contractAddress, - ) - assert.ok(proxies !== undefined) - assert.ok(proxies.length > 0 && proxies[0].length > 0) - assert.ok(proxies[0][0].delegate === convertPublicKeyToSs58(hotkey.publicKey)) - - - const removeMessage = inkClient.message("remove_proxy") - const removeData = removeMessage.encode({ - delegate: Binary.fromBytes(hotkey.publicKey), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, removeData) - - let proxiesAfterRemove = await api.query.Proxy.Proxies.getValue( - contractAddress, - ) - assert.ok(proxiesAfterRemove !== undefined) - assert.ok(proxiesAfterRemove[0].length === 0) - }) - - it("Can get alpha price", async () => { - const message = inkClient.message("get_alpha_price") - const data = message.encode({ - netuid: netuid, - }) - - const response = await api.apis.ContractsApi.call( - convertPublicKeyToSs58(hotkey.publicKey), - contractAddress, - BigInt(0), - undefined, - undefined, - Binary.fromBytes(data.asBytes()), - ) - - assert.ok(response.result.success) - const result = message.decode(response.result.value).value.value - - assert.ok(result !== undefined) - }) - - it("Can recycle alpha from contract stake", async () => { - await addStakeViaContract(true) - const stakeBefore = await getContractStake() - const alphaOutBefore = await api.query.SubtensorModule.SubnetAlphaOut.getValue(netuid) - - const message = inkClient.message("recycle_alpha") - const data = message.encode({ - hotkey: Binary.fromBytes(hotkey.publicKey), - netuid, - amount: stakeBefore / BigInt(2), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - - const stakeAfter = await getContractStake() - const alphaOutAfter = await api.query.SubtensorModule.SubnetAlphaOut.getValue(netuid) - - assert.ok(stakeAfter < stakeBefore) - assert.ok(alphaOutAfter < alphaOutBefore) - }) - - it("Can burn alpha from contract stake", async () => { - await addStakeViaContract(true) - const stakeBefore = await getContractStake() - const alphaBurnedBefore = await api.query.AlphaAssets.AlphaBurned.getValue(netuid) - - const message = inkClient.message("burn_alpha") - const data = message.encode({ - hotkey: Binary.fromBytes(hotkey.publicKey), - netuid, - amount: stakeBefore / BigInt(2), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - - const stakeAfter = await getContractStake() - const alphaBurnedAfter = await api.query.AlphaAssets.AlphaBurned.getValue(netuid) - - assert.ok(stakeAfter < stakeBefore) - assert.ok(alphaBurnedBefore < alphaBurnedAfter) - }) - - it("Can add stake and recycle resulting alpha", async () => { - const stakeBefore = await getContractStake() - - const message = inkClient.message("add_stake_recycle") - const data = message.encode({ - hotkey: Binary.fromBytes(hotkey.publicKey), - netuid, - amount: tao(100), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - - const stakeAfter = await getContractStake() - - assert.equal(stakeAfter, stakeBefore) - }) - - it("Can add stake and burn resulting alpha", async () => { - const stakeBefore = await getContractStake() - const alphaOutBefore = await api.query.SubtensorModule.SubnetAlphaOut.getValue(netuid) - - const message = inkClient.message("add_stake_burn") - const data = message.encode({ - hotkey: Binary.fromBytes(hotkey.publicKey), - netuid, - amount: tao(100), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - - const stakeAfter = await getContractStake() - const alphaOutAfter = await api.query.SubtensorModule.SubnetAlphaOut.getValue(netuid) - - assert.equal(stakeAfter, stakeBefore) - assert.ok(alphaOutAfter > alphaOutBefore) - }) - - it("Can caller add stake (fn 20)", async () => { - await addStakeViaContract(false) - }) - - it("Can caller remove stake (fn 21)", async () => { - await addStakeViaContract(false) - const stake = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - assert.ok(stake !== undefined) - const amount = stake / BigInt(2) - const message = inkClient.message("caller_remove_stake") - const data = message.encode({ - hotkey: Binary.fromBytes(hotkey.publicKey), - netuid, - amount, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - const stakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - assert.ok(stakeAfter !== undefined && stakeAfter < stake!) - }) - - it("Can caller unstake_all (fn 22)", async () => { - await addStakeViaContract(false) - const stakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - assert.ok(stakeBefore !== undefined && stakeBefore > BigInt(0)) - const message = inkClient.message("caller_unstake_all") - const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey) }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - const stakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - assert.ok(stakeAfter !== undefined) - assert.ok(stakeAfter < stakeBefore!) - }) - - it("Can caller unstake_all_alpha (fn 23)", async () => { - await addStakeViaContract(false) - const stakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - assert.ok(stakeBefore !== undefined && stakeBefore > BigInt(0)) - const message = inkClient.message("caller_unstake_all_alpha") - const data = message.encode({ hotkey: Binary.fromBytes(hotkey.publicKey) }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - const stakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - assert.ok(stakeAfter !== undefined) - assert.ok(stakeAfter < stakeBefore!) - }) - - it("Can caller move_stake (fn 24)", async () => { - await addStakeViaContract(false) - await initSecondColdAndHotkey() - const originStakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - const destStakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey2.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake || BigInt(0) - assert.ok(originStakeBefore !== undefined && originStakeBefore > BigInt(0)) - const moveAmount = originStakeBefore / BigInt(2) - const message = inkClient.message("caller_move_stake") - const data = message.encode({ - origin_hotkey: Binary.fromBytes(hotkey.publicKey), - destination_hotkey: Binary.fromBytes(hotkey2.publicKey), - origin_netuid: netuid, - destination_netuid: netuid, - amount: moveAmount, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - const originStakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - const destStakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey2.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - assert.ok(originStakeAfter !== undefined && destStakeAfter !== undefined) - assert.ok(originStakeAfter < originStakeBefore!) - assert.ok(destStakeAfter > destStakeBefore) - }) - - it("Can caller transfer_stake (fn 25)", async () => { - await addStakeViaContract(false) - await initSecondColdAndHotkey() - const stakeBeforeOrigin = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - const stakeBeforeDest = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey2.publicKey), - netuid, - ))?.stake - assert.ok(stakeBeforeOrigin !== undefined && stakeBeforeOrigin > BigInt(0)) - assert.ok(stakeBeforeDest !== undefined) - const transferAmount = stakeBeforeOrigin / BigInt(2) - const message = inkClient.message("caller_transfer_stake") - const data = message.encode({ - destination_coldkey: Binary.fromBytes(coldkey2.publicKey), - hotkey: Binary.fromBytes(hotkey.publicKey), - origin_netuid: netuid, - destination_netuid: netuid, - amount: transferAmount, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - const stakeAfterOrigin = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - const stakeAfterDest = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey2.publicKey), - netuid, - ))?.stake - assert.ok(stakeAfterOrigin !== undefined && stakeAfterDest !== undefined) - assert.ok(stakeAfterOrigin < stakeBeforeOrigin!) - assert.ok(stakeAfterDest > stakeBeforeDest!) - }) - - it("Can caller swap_stake (fn 26)", async () => { - await addStakeViaContract(false) - await initSecondColdAndHotkey() - const stakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - const stakeBefore2 = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid + 1, - ))?.stake || BigInt(0) - assert.ok(stakeBefore !== undefined && stakeBefore > BigInt(0)) - const swapAmount = stakeBefore / BigInt(2) - const message = inkClient.message("caller_swap_stake") - const data = message.encode({ - hotkey: Binary.fromBytes(hotkey.publicKey), - origin_netuid: netuid, - destination_netuid: netuid + 1, - amount: swapAmount, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - const stakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - const stakeAfter2 = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid + 1, - ))?.stake - assert.ok(stakeAfter !== undefined && stakeAfter2 !== undefined) - assert.ok(stakeAfter < stakeBefore) - assert.ok(stakeAfter2 > stakeBefore2) - }) - - it("Can caller add_stake_limit (fn 27)", async () => { - const stakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - assert.ok(stakeBefore !== undefined) - const message = inkClient.message("caller_add_stake_limit") - const data = message.encode({ - hotkey: Binary.fromBytes(hotkey.publicKey), - netuid, - amount: tao(200), - limit_price: tao(100), - allow_partial: false, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - const stakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - assert.ok(stakeAfter !== undefined && stakeAfter > stakeBefore!) - }) - - it("Can caller remove_stake_limit (fn 28)", async () => { - await addStakeViaContract(false) - const stakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - assert.ok(stakeBefore !== undefined && stakeBefore > BigInt(0)) - const message = inkClient.message("caller_remove_stake_limit") - const data = message.encode({ - hotkey: Binary.fromBytes(hotkey.publicKey), - netuid, - amount: stakeBefore / BigInt(2), - limit_price: tao(1), - allow_partial: false, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - const stakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - assert.ok(stakeAfter !== undefined && stakeAfter < stakeBefore!) - }) - - it("Can caller swap_stake_limit (fn 29)", async () => { - await addStakeViaContract(false) - const stakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - const stakeBefore2 = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid + 1, - ))?.stake - assert.ok(stakeBefore !== undefined && stakeBefore > BigInt(0)) - assert.ok(stakeBefore2 !== undefined) - const message = inkClient.message("caller_swap_stake_limit") - const data = message.encode({ - hotkey: Binary.fromBytes(hotkey.publicKey), - origin_netuid: netuid, - destination_netuid: netuid + 1, - amount: stakeBefore / BigInt(2), - limit_price: tao(1), - allow_partial: false, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - const stakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - const stakeAfter2 = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid + 1, - ))?.stake - assert.ok(stakeAfter !== undefined && stakeAfter2 !== undefined) - assert.ok(stakeAfter < stakeBefore) - assert.ok(stakeAfter2 > stakeBefore2!) - }) - - it("Can caller remove_stake_full_limit (fn 30)", async () => { - await addStakeViaContract(false) - const stakeBefore = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - assert.ok(stakeBefore !== undefined && stakeBefore > BigInt(0)) - const message = inkClient.message("caller_remove_stake_full_limit") - const data = message.encode({ - hotkey: Binary.fromBytes(hotkey.publicKey), - netuid, - limit_price: undefined, - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - const stakeAfter = (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid( - convertPublicKeyToSs58(hotkey.publicKey), - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ))?.stake - assert.ok(stakeAfter !== undefined && stakeAfter < stakeBefore!) - }) - - it("Can caller set_coldkey_auto_stake_hotkey (fn 31)", async () => { - await addStakeViaContract(false) - await initSecondColdAndHotkey() - const message = inkClient.message("caller_set_coldkey_auto_stake_hotkey") - const data = message.encode({ - netuid, - hotkey: Binary.fromBytes(hotkey2.publicKey), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - const autoStakeHotkey = await api.query.SubtensorModule.AutoStakeDestination.getValue( - convertPublicKeyToSs58(coldkey.publicKey), - netuid, - ) - assert.ok(autoStakeHotkey === convertPublicKeyToSs58(hotkey2.publicKey)) - }) - - it("Can caller add_proxy and remove_proxy (fn 32-33)", async () => { - const addMessage = inkClient.message("caller_add_proxy") - const addData = addMessage.encode({ - delegate: Binary.fromBytes(hotkey2.publicKey), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, addData) - let proxies = await api.query.Proxy.Proxies.getValue(convertPublicKeyToSs58(coldkey.publicKey)) - assert.ok(proxies !== undefined && proxies[0].length > 0) - assert.ok(proxies[0][0].delegate === convertPublicKeyToSs58(hotkey2.publicKey)) - - const removeMessage = inkClient.message("caller_remove_proxy") - const removeData = removeMessage.encode({ - delegate: Binary.fromBytes(hotkey2.publicKey), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, removeData) - proxies = await api.query.Proxy.Proxies.getValue(convertPublicKeyToSs58(coldkey.publicKey)) - assert.ok(proxies !== undefined && proxies[0].length === 0) - }) - - it("Check add_stake_recycle is atomic operation", async () => { - const stakeBefore = await getContractStakeOnRoot() - const balanceBefore = await getBalance(api, convertPublicKeyToSs58(coldkey.publicKey)) - - // recycle alpha on root subnet is not allowed, the extrinsic should be failed. - const message = inkClient.message("add_stake_recycle") - const data = message.encode({ - hotkey: Binary.fromBytes(hotkey.publicKey), - netuid: 0, - amount: tao(100), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - - const stakeAfter = await getContractStakeOnRoot() - const balanceAfter = await getBalance(api, convertPublicKeyToSs58(coldkey.publicKey)) - - assert.ok(balanceBefore - balanceAfter < 10_000_000) - assert.equal(stakeAfter, stakeBefore) - }) - - it("Check add_stake_burn is atomic operation", async () => { - const stakeBefore = await getContractStakeOnRoot() - const balanceBefore = await getBalance(api, convertPublicKeyToSs58(coldkey.publicKey)) - const alphaOutBefore = await api.query.SubtensorModule.SubnetAlphaOut.getValue(netuid) - - const message = inkClient.message("add_stake_burn") - const data = message.encode({ - hotkey: Binary.fromBytes(hotkey.publicKey), - netuid: 0, - amount: tao(100), - }) - await sendWasmContractExtrinsic(api, coldkey, contractAddress, data) - - const stakeAfter = await getContractStakeOnRoot() - const alphaOutAfter = await api.query.SubtensorModule.SubnetAlphaOut.getValue(netuid) - const balanceAfter = await getBalance(api, convertPublicKeyToSs58(coldkey.publicKey)) - - assert.ok(balanceBefore - balanceAfter < 10_000_000) - assert.equal(stakeAfter, stakeBefore) - assert.ok(alphaOutAfter > alphaOutBefore) - }) -}); \ No newline at end of file diff --git a/contract-tests/tsconfig.json b/contract-tests/tsconfig.json deleted file mode 100644 index c9c555d96f..0000000000 --- a/contract-tests/tsconfig.json +++ /dev/null @@ -1,111 +0,0 @@ -{ - "compilerOptions": { - /* Visit https://aka.ms/tsconfig to read more about this file */ - - /* Projects */ - // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - - /* Language and Environment */ - "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ - // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - - /* Modules */ - "module": "commonjs", /* Specify what module code is generated. */ - // "rootDir": "./", /* Specify the root folder within your source files. */ - // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - // "types": [], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ - // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ - // "rewriteRelativeImportExtensions": true, /* Rewrite '.ts', '.tsx', '.mts', and '.cts' file extensions in relative import paths to their JavaScript equivalent in output files. */ - // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ - // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ - // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ - // "noUncheckedSideEffectImports": true, /* Check side effect imports. */ - // "resolveJsonModule": true, /* Enable importing .json files. */ - // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ - // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ - - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - - /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - // "outDir": "./", /* Specify an output folder for all emitted files. */ - // "removeComments": true, /* Disable emitting comments. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ - // "isolatedDeclarations": true, /* Require sufficient annotation on exports so other tools can trivially generate declaration files. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ - - /* Type Checking */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "strictBuiltinIteratorReturn": true, /* Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'. */ - // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ - // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ - } -} diff --git a/contract-tests/yarn.lock b/contract-tests/yarn.lock deleted file mode 100644 index 037e0a53ce..0000000000 --- a/contract-tests/yarn.lock +++ /dev/null @@ -1,3027 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@adraffy/ens-normalize@^1.10.1", "@adraffy/ens-normalize@^1.11.0": - version "1.11.1" - resolved "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.1.tgz" - integrity sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ== - -"@adraffy/ens-normalize@1.10.1": - version "1.10.1" - resolved "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz" - integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw== - -"@babel/code-frame@^7.26.2": - version "7.27.1" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz" - integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== - dependencies: - "@babel/helper-validator-identifier" "^7.27.1" - js-tokens "^4.0.0" - picocolors "^1.1.1" - -"@babel/helper-validator-identifier@^7.27.1": - version "7.28.5" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz" - integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== - -"@commander-js/extra-typings@^14.0.0": - version "14.0.0" - resolved "https://registry.npmjs.org/@commander-js/extra-typings/-/extra-typings-14.0.0.tgz" - integrity sha512-hIn0ncNaJRLkZrxBIp5AsW/eXEHNKYQBh0aPdoUqNgD+Io3NIykQqpKFyKcuasZhicGaEZJX/JBSIkZ4e5x8Dg== - -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - -"@esbuild/linux-x64@0.25.12": - version "0.25.12" - resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz" - integrity sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw== - -"@ethereumjs/rlp@^10.0.0": - version "10.1.0" - resolved "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-10.1.0.tgz" - integrity sha512-r67BJbwilammAqYI4B5okA66cNdTlFzeWxPNJOolKV52ZS/flo0tUBf4x4gxWXBgh48OgsdFV1Qp5pRoSe8IhQ== - -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" - -"@jridgewell/gen-mapping@^0.3.2": - version "0.3.13" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz" - integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== - dependencies: - "@jridgewell/sourcemap-codec" "^1.5.0" - "@jridgewell/trace-mapping" "^0.3.24" - -"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": - version "3.1.2" - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" - integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0", "@jridgewell/sourcemap-codec@^1.5.5": - version "1.5.5" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz" - integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== - -"@jridgewell/trace-mapping@^0.3.24": - version "0.3.31" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz" - integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@noble/ciphers@^1.3.0": - version "1.3.0" - resolved "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz" - integrity sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw== - -"@noble/curves@^1.3.0", "@noble/curves@^1.6.0", "@noble/curves@~1.9.0", "@noble/curves@~1.9.2": - version "1.9.7" - resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz" - integrity sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw== - dependencies: - "@noble/hashes" "1.8.0" - -"@noble/curves@^2.0.0": - version "2.0.1" - resolved "https://registry.npmjs.org/@noble/curves/-/curves-2.0.1.tgz" - integrity sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw== - dependencies: - "@noble/hashes" "2.0.1" - -"@noble/curves@^2.0.1": - version "2.0.1" - resolved "https://registry.npmjs.org/@noble/curves/-/curves-2.0.1.tgz" - integrity sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw== - dependencies: - "@noble/hashes" "2.0.1" - -"@noble/curves@~1.8.1": - version "1.8.2" - resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.8.2.tgz" - integrity sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g== - dependencies: - "@noble/hashes" "1.7.2" - -"@noble/curves@~2.0.0": - version "2.0.1" - resolved "https://registry.npmjs.org/@noble/curves/-/curves-2.0.1.tgz" - integrity sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw== - dependencies: - "@noble/hashes" "2.0.1" - -"@noble/curves@1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz" - integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw== - dependencies: - "@noble/hashes" "1.3.2" - -"@noble/curves@1.8.1": - version "1.8.1" - resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz" - integrity sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ== - dependencies: - "@noble/hashes" "1.7.1" - -"@noble/curves@1.9.1": - version "1.9.1" - resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz" - integrity sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA== - dependencies: - "@noble/hashes" "1.8.0" - -"@noble/hashes@^1.3.1": - version "1.8.0" - resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz" - integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== - -"@noble/hashes@^1.3.3", "@noble/hashes@~1.8.0": - version "1.8.0" - resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz" - integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== - -"@noble/hashes@^1.5.0": - version "1.8.0" - resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz" - integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== - -"@noble/hashes@^1.8.0", "@noble/hashes@1.8.0": - version "1.8.0" - resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz" - integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== - -"@noble/hashes@^2.0.0", "@noble/hashes@^2.0.1", "@noble/hashes@~2.0.0", "@noble/hashes@2.0.1": - version "2.0.1" - resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz" - integrity sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw== - -"@noble/hashes@~1.7.1", "@noble/hashes@1.7.1": - version "1.7.1" - resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz" - integrity sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ== - -"@noble/hashes@~1.8.0": - version "1.8.0" - resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz" - integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== - -"@noble/hashes@1.3.2": - version "1.3.2" - resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz" - integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== - -"@noble/hashes@1.7.2": - version "1.7.2" - resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz" - integrity sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ== - -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - -"@polkadot-api/cli@0.16.3": - version "0.16.3" - resolved "https://registry.npmjs.org/@polkadot-api/cli/-/cli-0.16.3.tgz" - integrity sha512-s+p3dFw1vOeyMMqhUbt1RFyqPZdR7vg6joS0v9wBvK3qX5xU+QfOOaMxXJ8fl0mJEbwoJnJsvVl4MzjsABaKCg== - dependencies: - "@commander-js/extra-typings" "^14.0.0" - "@polkadot-api/codegen" "0.20.0" - "@polkadot-api/ink-contracts" "0.4.3" - "@polkadot-api/json-rpc-provider" "0.0.4" - "@polkadot-api/known-chains" "0.9.15" - "@polkadot-api/legacy-provider" "0.3.6" - "@polkadot-api/metadata-compatibility" "0.4.1" - "@polkadot-api/observable-client" "0.17.0" - "@polkadot-api/polkadot-sdk-compat" "2.3.3" - "@polkadot-api/sm-provider" "0.1.14" - "@polkadot-api/smoldot" "0.3.14" - "@polkadot-api/substrate-bindings" "0.16.5" - "@polkadot-api/substrate-client" "0.4.7" - "@polkadot-api/utils" "0.2.0" - "@polkadot-api/wasm-executor" "^0.2.2" - "@polkadot-api/ws-provider" "0.7.4" - "@types/node" "^24.10.1" - commander "^14.0.2" - execa "^9.6.0" - fs.promises.exists "^1.1.4" - ora "^9.0.0" - read-pkg "^10.0.0" - rxjs "^7.8.2" - tsc-prog "^2.3.0" - tsup "8.5.0" - typescript "^5.9.3" - write-package "^7.2.0" - -"@polkadot-api/codegen@0.20.0": - version "0.20.0" - resolved "https://registry.npmjs.org/@polkadot-api/codegen/-/codegen-0.20.0.tgz" - integrity sha512-akwPArm35UZcebUFtTKcEkdBLCjYyKweGw3/tT04p/EtM4OsQ1FxhRdXZ51ScBC3JVGCFQTUO2hNsd1E6YXvlw== - dependencies: - "@polkadot-api/ink-contracts" "0.4.3" - "@polkadot-api/metadata-builders" "0.13.7" - "@polkadot-api/metadata-compatibility" "0.4.1" - "@polkadot-api/substrate-bindings" "0.16.5" - "@polkadot-api/utils" "0.2.0" - -"@polkadot-api/common-sdk-utils@0.1.0": - version "0.1.0" - resolved "https://registry.npmjs.org/@polkadot-api/common-sdk-utils/-/common-sdk-utils-0.1.0.tgz" - integrity sha512-cgA9fh8dfBai9b46XaaQmj9vwzyHStQjc/xrAvQksgF6SqvZ0yAfxVqLvGrsz/Xi3dsAdKLg09PybC7MUAMv9w== - -"@polkadot-api/descriptors@file:.papi/descriptors": - version "0.1.0-autogenerated.9947536328969970535" - resolved "file:.papi/descriptors" - -"@polkadot-api/ink-contracts@^0.4.1", "@polkadot-api/ink-contracts@>=0.4.0", "@polkadot-api/ink-contracts@0.4.3": - version "0.4.3" - resolved "https://registry.npmjs.org/@polkadot-api/ink-contracts/-/ink-contracts-0.4.3.tgz" - integrity sha512-Wl+4Dxjt0GAl+rADZEgrrqEesqX/xygTpX18TmzmspcKhb9QIZf9FJI8A5Sgtq0TKAOwsd1d/hbHVX3LgbXFXg== - dependencies: - "@polkadot-api/metadata-builders" "0.13.7" - "@polkadot-api/substrate-bindings" "0.16.5" - "@polkadot-api/utils" "0.2.0" - -"@polkadot-api/json-rpc-provider-proxy@^0.1.0": - version "0.1.0" - resolved "https://registry.npmjs.org/@polkadot-api/json-rpc-provider-proxy/-/json-rpc-provider-proxy-0.1.0.tgz" - integrity sha512-8GSFE5+EF73MCuLQm8tjrbCqlgclcHBSRaswvXziJ0ZW7iw3UEMsKkkKvELayWyBuOPa2T5i1nj6gFOeIsqvrg== - -"@polkadot-api/json-rpc-provider-proxy@0.2.7": - version "0.2.7" - resolved "https://registry.npmjs.org/@polkadot-api/json-rpc-provider-proxy/-/json-rpc-provider-proxy-0.2.7.tgz" - integrity sha512-+HM4JQXzO2GPUD2++4GOLsmFL6LO8RoLvig0HgCLuypDgfdZMlwd8KnyGHjRnVEHA5X+kvXbk84TDcAXVxTazQ== - -"@polkadot-api/json-rpc-provider@^0.0.1", "@polkadot-api/json-rpc-provider@0.0.1": - version "0.0.1" - resolved "https://registry.npmjs.org/@polkadot-api/json-rpc-provider/-/json-rpc-provider-0.0.1.tgz" - integrity sha512-/SMC/l7foRjpykLTUTacIH05H3mr9ip8b5xxfwXlVezXrNVLp3Cv0GX6uItkKd+ZjzVPf3PFrDF2B2/HLSNESA== - -"@polkadot-api/json-rpc-provider@0.0.4": - version "0.0.4" - resolved "https://registry.npmjs.org/@polkadot-api/json-rpc-provider/-/json-rpc-provider-0.0.4.tgz" - integrity sha512-9cDijLIxzHOBuq6yHqpqjJ9jBmXrctjc1OFqU+tQrS96adQze3mTIH6DTgfb/0LMrqxzxffz1HQGrIlEH00WrA== - -"@polkadot-api/known-chains@0.9.15": - version "0.9.15" - resolved "https://registry.npmjs.org/@polkadot-api/known-chains/-/known-chains-0.9.15.tgz" - integrity sha512-VQGu2Anvnx0y0Ltd6sQB3aYzQFGsaQwf2znh+w4Oflaxln5lsjO/+trpXz/rdrdgyi0iafkhpeho/p/EGBwJ+A== - -"@polkadot-api/legacy-provider@0.3.6": - version "0.3.6" - resolved "https://registry.npmjs.org/@polkadot-api/legacy-provider/-/legacy-provider-0.3.6.tgz" - integrity sha512-JZQg0HVtBowFKxNrZdnMBKXmeSBD4yFlz6egEpvE97RXRvjaBzTaVuFFhBchngq9YmgFQewuWSoX5XSUW6hcEg== - dependencies: - "@polkadot-api/json-rpc-provider" "0.0.4" - "@polkadot-api/raw-client" "0.1.1" - "@polkadot-api/substrate-bindings" "0.16.5" - "@polkadot-api/utils" "0.2.0" - -"@polkadot-api/logs-provider@0.0.6": - version "0.0.6" - resolved "https://registry.npmjs.org/@polkadot-api/logs-provider/-/logs-provider-0.0.6.tgz" - integrity sha512-4WgHlvy+xee1ADaaVf6+MlK/+jGMtsMgAzvbQOJZnP4PfQuagoTqaeayk8HYKxXGphogLlPbD06tANxcb+nvAg== - dependencies: - "@polkadot-api/json-rpc-provider" "0.0.4" - -"@polkadot-api/merkleize-metadata@1.1.27": - version "1.1.27" - resolved "https://registry.npmjs.org/@polkadot-api/merkleize-metadata/-/merkleize-metadata-1.1.27.tgz" - integrity sha512-OdKwOzzrLL0Ju3pQA9LjeQEquMcD+KtLybUAO3fVxwjxD5cyI0RwillGoAIBJvfMaZpNxnxJnD+WzNjRcr7FiQ== - dependencies: - "@polkadot-api/metadata-builders" "0.13.7" - "@polkadot-api/substrate-bindings" "0.16.5" - "@polkadot-api/utils" "0.2.0" - -"@polkadot-api/metadata-builders@0.13.7": - version "0.13.7" - resolved "https://registry.npmjs.org/@polkadot-api/metadata-builders/-/metadata-builders-0.13.7.tgz" - integrity sha512-xwggY8F/gtX7qGzz+jzP3DZvWgBWIIFQhk+r2MJ431CR+tNKeTtzGdwNocVrb9NYTK2naC9ckJS14nrNM6LWLw== - dependencies: - "@polkadot-api/substrate-bindings" "0.16.5" - "@polkadot-api/utils" "0.2.0" - -"@polkadot-api/metadata-builders@0.3.2": - version "0.3.2" - resolved "https://registry.npmjs.org/@polkadot-api/metadata-builders/-/metadata-builders-0.3.2.tgz" - integrity sha512-TKpfoT6vTb+513KDzMBTfCb/ORdgRnsS3TDFpOhAhZ08ikvK+hjHMt5plPiAX/OWkm1Wc9I3+K6W0hX5Ab7MVg== - dependencies: - "@polkadot-api/substrate-bindings" "0.6.0" - "@polkadot-api/utils" "0.1.0" - -"@polkadot-api/metadata-compatibility@0.4.1": - version "0.4.1" - resolved "https://registry.npmjs.org/@polkadot-api/metadata-compatibility/-/metadata-compatibility-0.4.1.tgz" - integrity sha512-mZt4Af6oPXEHAprrckJiSZkWRVf0mqwF+Bm+703rPsezLptQid9AjSzh1hkgIkOrPbg6IhWbmMhbuJVjx9VeQA== - dependencies: - "@polkadot-api/metadata-builders" "0.13.7" - "@polkadot-api/substrate-bindings" "0.16.5" - -"@polkadot-api/observable-client@^0.3.0": - version "0.3.2" - resolved "https://registry.npmjs.org/@polkadot-api/observable-client/-/observable-client-0.3.2.tgz" - integrity sha512-HGgqWgEutVyOBXoGOPp4+IAq6CNdK/3MfQJmhCJb8YaJiaK4W6aRGrdQuQSTPHfERHCARt9BrOmEvTXAT257Ug== - dependencies: - "@polkadot-api/metadata-builders" "0.3.2" - "@polkadot-api/substrate-bindings" "0.6.0" - "@polkadot-api/utils" "0.1.0" - -"@polkadot-api/observable-client@0.17.0": - version "0.17.0" - resolved "https://registry.npmjs.org/@polkadot-api/observable-client/-/observable-client-0.17.0.tgz" - integrity sha512-hilb12Fg1JrlM/0nucMT85//EQltB53fmoh7YNBsZMiNpavn/3qGTO4s0JMlC/LBbddYg0nxA+DMkSVlapo7cQ== - dependencies: - "@polkadot-api/metadata-builders" "0.13.7" - "@polkadot-api/substrate-bindings" "0.16.5" - "@polkadot-api/substrate-client" "0.4.7" - "@polkadot-api/utils" "0.2.0" - -"@polkadot-api/pjs-signer@0.6.17": - version "0.6.17" - resolved "https://registry.npmjs.org/@polkadot-api/pjs-signer/-/pjs-signer-0.6.17.tgz" - integrity sha512-bxFtyiNOchV0osh6m+1CaN4tkWF7Mo4IT9XPLZBwSybpHZgwmu2wbhgqBkVL98QMyGzud7NHfrJsTCgFU6jHGg== - dependencies: - "@polkadot-api/metadata-builders" "0.13.7" - "@polkadot-api/polkadot-signer" "0.1.6" - "@polkadot-api/signers-common" "0.1.18" - "@polkadot-api/substrate-bindings" "0.16.5" - "@polkadot-api/utils" "0.2.0" - -"@polkadot-api/polkadot-sdk-compat@2.3.3": - version "2.3.3" - resolved "https://registry.npmjs.org/@polkadot-api/polkadot-sdk-compat/-/polkadot-sdk-compat-2.3.3.tgz" - integrity sha512-p30po+iv4trniSJ7UZiIt/rFInvtA9Tzg65EzuRkCaQAnh54a3MPp9w/q+x+SNLEcfzVLvf8LyPnMPOIpKuj5w== - dependencies: - "@polkadot-api/json-rpc-provider" "0.0.4" - -"@polkadot-api/polkadot-signer@0.1.6": - version "0.1.6" - resolved "https://registry.npmjs.org/@polkadot-api/polkadot-signer/-/polkadot-signer-0.1.6.tgz" - integrity sha512-X7ghAa4r7doETtjAPTb50IpfGtrBmy3BJM5WCfNKa1saK04VFY9w+vDn+hwEcM4p0PcDHt66Ts74hzvHq54d9A== - -"@polkadot-api/raw-client@0.1.1": - version "0.1.1" - resolved "https://registry.npmjs.org/@polkadot-api/raw-client/-/raw-client-0.1.1.tgz" - integrity sha512-HxalpNEo8JCYXfxKM5p3TrK8sEasTGMkGjBNLzD4TLye9IK2smdb5oTvp2yfkU1iuVBdmjr69uif4NaukOYo2g== - dependencies: - "@polkadot-api/json-rpc-provider" "0.0.4" - -"@polkadot-api/sdk-ink@^0.5.1": - version "0.5.1" - resolved "https://registry.npmjs.org/@polkadot-api/sdk-ink/-/sdk-ink-0.5.1.tgz" - integrity sha512-9pRnghjigivvgq7375hzkoazstvPDbc0YB01Jzw1/MYKcX+YJn1p/H8SAQTWbKlz2ohFgi1nwU52a0bsmKqb/Q== - dependencies: - "@ethereumjs/rlp" "^10.0.0" - "@polkadot-api/common-sdk-utils" "0.1.0" - "@polkadot-api/substrate-bindings" "^0.16.3" - abitype "^1.1.1" - viem "^2.37.9" - -"@polkadot-api/signer@0.2.11": - version "0.2.11" - resolved "https://registry.npmjs.org/@polkadot-api/signer/-/signer-0.2.11.tgz" - integrity sha512-32tqbJo6JDfc/lHg+nTveeunFRULonWoTQX9xbs70arr/tAyyZfljupdECRK8CVRx1777es/CQO3QVj8EpWtYg== - dependencies: - "@noble/hashes" "^2.0.1" - "@polkadot-api/merkleize-metadata" "1.1.27" - "@polkadot-api/polkadot-signer" "0.1.6" - "@polkadot-api/signers-common" "0.1.18" - "@polkadot-api/substrate-bindings" "0.16.5" - "@polkadot-api/utils" "0.2.0" - -"@polkadot-api/signers-common@0.1.18": - version "0.1.18" - resolved "https://registry.npmjs.org/@polkadot-api/signers-common/-/signers-common-0.1.18.tgz" - integrity sha512-UQXuRZoQ+jMolEpIPF0mVXcoqQ/382fHrSOgfK5sIvjeH0HPf4P+s3IwcnwyAdpHY2gdHXYlHd/SAw7Q1gJ4EA== - dependencies: - "@polkadot-api/metadata-builders" "0.13.7" - "@polkadot-api/polkadot-signer" "0.1.6" - "@polkadot-api/substrate-bindings" "0.16.5" - "@polkadot-api/utils" "0.2.0" - -"@polkadot-api/sm-provider@0.1.14": - version "0.1.14" - resolved "https://registry.npmjs.org/@polkadot-api/sm-provider/-/sm-provider-0.1.14.tgz" - integrity sha512-QQvoeBSIwnEm8IUhGA6sBU6LNh2v7SOuVOnF77ZD7P5ELTrdmQH2Tcn0W15qGTmTG45b3Z52XsKpuQbIJ7c7XA== - dependencies: - "@polkadot-api/json-rpc-provider" "0.0.4" - "@polkadot-api/json-rpc-provider-proxy" "0.2.7" - -"@polkadot-api/smoldot@>=0.3", "@polkadot-api/smoldot@0.3.14": - version "0.3.14" - resolved "https://registry.npmjs.org/@polkadot-api/smoldot/-/smoldot-0.3.14.tgz" - integrity sha512-eWqO0xFQaKzqY5mRYxYuZcj1IiaLcQP+J38UQyuJgEorm+9yHVEQ/XBWoM83P+Y8TwE5IWTICp1LCVeiFQTGPQ== - dependencies: - "@types/node" "^24.5.2" - smoldot "2.0.39" - -"@polkadot-api/substrate-bindings@^0.16.3", "@polkadot-api/substrate-bindings@0.16.5": - version "0.16.5" - resolved "https://registry.npmjs.org/@polkadot-api/substrate-bindings/-/substrate-bindings-0.16.5.tgz" - integrity sha512-QFgNlBmtLtiUGTCTurxcE6UZrbI2DaQ5/gyIiC2FYfEhStL8tl20b09FRYHcSjY+lxN42Rcf9HVX+MCFWLYlpQ== - dependencies: - "@noble/hashes" "^2.0.1" - "@polkadot-api/utils" "0.2.0" - "@scure/base" "^2.0.0" - scale-ts "^1.6.1" - -"@polkadot-api/substrate-bindings@0.6.0": - version "0.6.0" - resolved "https://registry.npmjs.org/@polkadot-api/substrate-bindings/-/substrate-bindings-0.6.0.tgz" - integrity sha512-lGuhE74NA1/PqdN7fKFdE5C1gNYX357j1tWzdlPXI0kQ7h3kN0zfxNOpPUN7dIrPcOFZ6C0tRRVrBylXkI6xPw== - dependencies: - "@noble/hashes" "^1.3.1" - "@polkadot-api/utils" "0.1.0" - "@scure/base" "^1.1.1" - scale-ts "^1.6.0" - -"@polkadot-api/substrate-client@^0.1.2", "@polkadot-api/substrate-client@0.1.4": - version "0.1.4" - resolved "https://registry.npmjs.org/@polkadot-api/substrate-client/-/substrate-client-0.1.4.tgz" - integrity sha512-MljrPobN0ZWTpn++da9vOvt+Ex+NlqTlr/XT7zi9sqPtDJiQcYl+d29hFAgpaeTqbeQKZwz3WDE9xcEfLE8c5A== - dependencies: - "@polkadot-api/json-rpc-provider" "0.0.1" - "@polkadot-api/utils" "0.1.0" - -"@polkadot-api/substrate-client@0.4.7": - version "0.4.7" - resolved "https://registry.npmjs.org/@polkadot-api/substrate-client/-/substrate-client-0.4.7.tgz" - integrity sha512-Mmx9VKincVqfVQmq89gzDk4DN3uKwf8CxoqYvq+EiPUZ1QmMUc7X4QMwG1MXIlYdnm5LSXzn+2Jn8ik8xMgL+w== - dependencies: - "@polkadot-api/json-rpc-provider" "0.0.4" - "@polkadot-api/raw-client" "0.1.1" - "@polkadot-api/utils" "0.2.0" - -"@polkadot-api/utils@0.1.0": - version "0.1.0" - resolved "https://registry.npmjs.org/@polkadot-api/utils/-/utils-0.1.0.tgz" - integrity sha512-MXzWZeuGxKizPx2Xf/47wx9sr/uxKw39bVJUptTJdsaQn/TGq+z310mHzf1RCGvC1diHM8f593KrnDgc9oNbJA== - -"@polkadot-api/utils@0.2.0": - version "0.2.0" - resolved "https://registry.npmjs.org/@polkadot-api/utils/-/utils-0.2.0.tgz" - integrity sha512-nY3i5fQJoAxU4n3bD7Fs208/KR2J95SGfVc58kDjbRYN5a84kWaGEqzjBNtP9oqht49POM8Bm9mbIrkvC1Bzuw== - -"@polkadot-api/wasm-executor@^0.2.2": - version "0.2.3" - resolved "https://registry.npmjs.org/@polkadot-api/wasm-executor/-/wasm-executor-0.2.3.tgz" - integrity sha512-B2h1o+Qlo9idpASaHvMSoViB2I5ko5OAfwfhYF8LQDkTADK0B+SeStzNj1Qn+FG34wqTuv7HzBCdjaUgzYINJQ== - -"@polkadot-api/ws-provider@0.7.4": - version "0.7.4" - resolved "https://registry.npmjs.org/@polkadot-api/ws-provider/-/ws-provider-0.7.4.tgz" - integrity sha512-mkk2p8wPht+ljU1xULCPMsLpNF7NHuGaufuDCIZZgopALaZpfVFJxc3qa9s6Xv8X3hM+TRoC5WknuD1ykRY99A== - dependencies: - "@polkadot-api/json-rpc-provider" "0.0.4" - "@polkadot-api/json-rpc-provider-proxy" "0.2.7" - "@types/ws" "^8.18.1" - ws "^8.18.3" - -"@polkadot-labs/hdkd-helpers@^0.0.25": - version "0.0.25" - resolved "https://registry.npmjs.org/@polkadot-labs/hdkd-helpers/-/hdkd-helpers-0.0.25.tgz" - integrity sha512-GwHayBuyHKfzvGD0vG47NbjFeiK6rRQHQAn1syut9nt0mhXMg4yb3tJ//IyM317qWuDU3HbD2OIp5jKDEQz2/A== - dependencies: - "@noble/curves" "^2.0.0" - "@noble/hashes" "^2.0.0" - "@scure/base" "^2.0.0" - "@scure/sr25519" "^0.3.0" - scale-ts "^1.6.1" - -"@polkadot-labs/hdkd-helpers@~0.0.26": - version "0.0.26" - resolved "https://registry.npmjs.org/@polkadot-labs/hdkd-helpers/-/hdkd-helpers-0.0.26.tgz" - integrity sha512-mp3GCSiOQeh4aPt+DYBQq6UnX/tKgYUH5F75knjW3ATSA90ifEEWWjRan0Bddt4QKYKamaDGadK9GbVREgzQFw== - dependencies: - "@noble/curves" "^2.0.1" - "@noble/hashes" "^2.0.1" - "@scure/base" "^2.0.0" - "@scure/sr25519" "^0.3.0" - scale-ts "^1.6.1" - -"@polkadot-labs/hdkd@^0.0.25": - version "0.0.25" - resolved "https://registry.npmjs.org/@polkadot-labs/hdkd/-/hdkd-0.0.25.tgz" - integrity sha512-+yZJC1TE4ZKdfoILw8nGxu3H/klrYXm9GdVB0kcyQDecq320ThUmM1M4l8d1F/3QD0Nez9NwHi9t5B++OgJU5A== - dependencies: - "@polkadot-labs/hdkd-helpers" "~0.0.26" - -"@polkadot/api-augment@16.5.3": - version "16.5.3" - resolved "https://registry.npmjs.org/@polkadot/api-augment/-/api-augment-16.5.3.tgz" - integrity sha512-9+8YKSS66x9qpWS+ZQ/FSm9P4mgE+icD53oAmeIykriPW2gcSTAiNufLwAjmAJAkOLcqbTD7LPjFW6xFlmtYsA== - dependencies: - "@polkadot/api-base" "16.5.3" - "@polkadot/rpc-augment" "16.5.3" - "@polkadot/types" "16.5.3" - "@polkadot/types-augment" "16.5.3" - "@polkadot/types-codec" "16.5.3" - "@polkadot/util" "^13.5.9" - tslib "^2.8.1" - -"@polkadot/api-base@16.5.3": - version "16.5.3" - resolved "https://registry.npmjs.org/@polkadot/api-base/-/api-base-16.5.3.tgz" - integrity sha512-M1+pY6OFQ1uOB73VQMt2JAGq/UVISVQJISqyfjiUllUc0qIzaDMkcZxRqE34Lwaib3fD3RuIpG6dXqCL9rdzJQ== - dependencies: - "@polkadot/rpc-core" "16.5.3" - "@polkadot/types" "16.5.3" - "@polkadot/util" "^13.5.9" - rxjs "^7.8.1" - tslib "^2.8.1" - -"@polkadot/api-derive@16.5.3": - version "16.5.3" - resolved "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-16.5.3.tgz" - integrity sha512-nMsnSC/N1SK1kNhgh2FhrrR1S8bTVH+3WsuBHFRzl+txKHq232IeIn9LpebSvgZdd77PaKaYBxbhYcNaA8Ypew== - dependencies: - "@polkadot/api" "16.5.3" - "@polkadot/api-augment" "16.5.3" - "@polkadot/api-base" "16.5.3" - "@polkadot/rpc-core" "16.5.3" - "@polkadot/types" "16.5.3" - "@polkadot/types-codec" "16.5.3" - "@polkadot/util" "^13.5.9" - "@polkadot/util-crypto" "^13.5.9" - rxjs "^7.8.1" - tslib "^2.8.1" - -"@polkadot/api@^16.4.6", "@polkadot/api@16.5.3": - version "16.5.3" - resolved "https://registry.npmjs.org/@polkadot/api/-/api-16.5.3.tgz" - integrity sha512-Ptwo0f5Qonmus7KIklsbFcGTdHtNjbTAwl5GGI8Mp0dmBc7Y/ISJpIJX49UrG6FhW6COMa0ItsU87XIWMRwI/Q== - dependencies: - "@polkadot/api-augment" "16.5.3" - "@polkadot/api-base" "16.5.3" - "@polkadot/api-derive" "16.5.3" - "@polkadot/keyring" "^13.5.9" - "@polkadot/rpc-augment" "16.5.3" - "@polkadot/rpc-core" "16.5.3" - "@polkadot/rpc-provider" "16.5.3" - "@polkadot/types" "16.5.3" - "@polkadot/types-augment" "16.5.3" - "@polkadot/types-codec" "16.5.3" - "@polkadot/types-create" "16.5.3" - "@polkadot/types-known" "16.5.3" - "@polkadot/util" "^13.5.9" - "@polkadot/util-crypto" "^13.5.9" - eventemitter3 "^5.0.1" - rxjs "^7.8.1" - tslib "^2.8.1" - -"@polkadot/keyring@^13.5.9": - version "13.5.9" - resolved "https://registry.npmjs.org/@polkadot/keyring/-/keyring-13.5.9.tgz" - integrity sha512-bMCpHDN7U8ytxawjBZ89/he5s3AmEZuOdkM/ABcorh/flXNPfyghjFK27Gy4OKoFxX52yJ2sTHR4NxM87GuFXQ== - dependencies: - "@polkadot/util" "13.5.9" - "@polkadot/util-crypto" "13.5.9" - tslib "^2.8.0" - -"@polkadot/networks@^13.5.9", "@polkadot/networks@13.5.9": - version "13.5.9" - resolved "https://registry.npmjs.org/@polkadot/networks/-/networks-13.5.9.tgz" - integrity sha512-nmKUKJjiLgcih0MkdlJNMnhEYdwEml2rv/h59ll2+rAvpsVWMTLCb6Cq6q7UC44+8kiWK2UUJMkFU+3PFFxndA== - dependencies: - "@polkadot/util" "13.5.9" - "@substrate/ss58-registry" "^1.51.0" - tslib "^2.8.0" - -"@polkadot/networks@14.0.1": - version "14.0.1" - resolved "https://registry.npmjs.org/@polkadot/networks/-/networks-14.0.1.tgz" - integrity sha512-wGlBtXDkusRAj4P7uxfPz80gLO1+j99MLBaQi3bEym2xrFrFhgIWVHOZlBit/1PfaBjhX2Z8XjRxaM2w1p7w2w== - dependencies: - "@polkadot/util" "14.0.1" - "@substrate/ss58-registry" "^1.51.0" - tslib "^2.8.0" - -"@polkadot/rpc-augment@16.5.3": - version "16.5.3" - resolved "https://registry.npmjs.org/@polkadot/rpc-augment/-/rpc-augment-16.5.3.tgz" - integrity sha512-q3Y+b0FSwbYe8Qopd4In+9KCL3eH5QmGVvimX7Z8+cvQ9+h+JUA6TP1bfpWBmYJRKlolaljsBQPBWoubchmxSw== - dependencies: - "@polkadot/rpc-core" "16.5.3" - "@polkadot/types" "16.5.3" - "@polkadot/types-codec" "16.5.3" - "@polkadot/util" "^13.5.9" - tslib "^2.8.1" - -"@polkadot/rpc-core@16.5.3": - version "16.5.3" - resolved "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-16.5.3.tgz" - integrity sha512-UYEIRhO/1uTz/rpWLwUN9Re3c4fuTs0I9RR8dHKpKsH3jZTs1M3CtqME3NNzpGqApY1xb9tZemU/0GfHjCpeBQ== - dependencies: - "@polkadot/rpc-augment" "16.5.3" - "@polkadot/rpc-provider" "16.5.3" - "@polkadot/types" "16.5.3" - "@polkadot/util" "^13.5.9" - rxjs "^7.8.1" - tslib "^2.8.1" - -"@polkadot/rpc-provider@16.5.3": - version "16.5.3" - resolved "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-16.5.3.tgz" - integrity sha512-O7hD82HwjT4XJ4i/G58B52RSDM7arHXSpzahZKz4/wtb4x6d6b4JVdfZoskInadARFi5RwIWCrftwPtpRH81Fw== - dependencies: - "@polkadot/keyring" "^13.5.9" - "@polkadot/types" "16.5.3" - "@polkadot/types-support" "16.5.3" - "@polkadot/util" "^13.5.9" - "@polkadot/util-crypto" "^13.5.9" - "@polkadot/x-fetch" "^13.5.9" - "@polkadot/x-global" "^13.5.9" - "@polkadot/x-ws" "^13.5.9" - eventemitter3 "^5.0.1" - mock-socket "^9.3.1" - nock "^13.5.5" - tslib "^2.8.1" - optionalDependencies: - "@substrate/connect" "0.8.11" - -"@polkadot/types-augment@16.5.3": - version "16.5.3" - resolved "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-16.5.3.tgz" - integrity sha512-SfS4arJUxW6BeCEhLMVPrZwWOLte69k5+/lvEKOKHQA8Mz0MEkD4uqGZGibDjgBgdnu8N+3b+rs+Fn3YfZu4yA== - dependencies: - "@polkadot/types" "16.5.3" - "@polkadot/types-codec" "16.5.3" - "@polkadot/util" "^13.5.9" - tslib "^2.8.1" - -"@polkadot/types-codec@16.5.3": - version "16.5.3" - resolved "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-16.5.3.tgz" - integrity sha512-b+oKMrIZrsFH4pPwvGQ6lMS8oFrYAGMy9QSbytA+KDmXAgTCtShz5XGvdQabvsGCjJ45EKgkKpKynVcYh3gk8g== - dependencies: - "@polkadot/util" "^13.5.9" - "@polkadot/x-bigint" "^13.5.9" - tslib "^2.8.1" - -"@polkadot/types-create@16.5.3": - version "16.5.3" - resolved "https://registry.npmjs.org/@polkadot/types-create/-/types-create-16.5.3.tgz" - integrity sha512-XGnBLNamPh7eQGcHNGFghA/prH7z2BsQ+9EVSbHCvw9ENr/Ow24mmmkZyMG5WM/5I6/4HRdfwFJucYt1GL/p9g== - dependencies: - "@polkadot/types-codec" "16.5.3" - "@polkadot/util" "^13.5.9" - tslib "^2.8.1" - -"@polkadot/types-known@16.5.3": - version "16.5.3" - resolved "https://registry.npmjs.org/@polkadot/types-known/-/types-known-16.5.3.tgz" - integrity sha512-ZLAZI24bQD0C9CJWYHxrLG8QSmzRzfWa51rlSNwZ9Atsc3R+GeX1YZGc9IljpQxYJCHrCqd6X8TXpAmEJdnbKw== - dependencies: - "@polkadot/networks" "^13.5.9" - "@polkadot/types" "16.5.3" - "@polkadot/types-codec" "16.5.3" - "@polkadot/types-create" "16.5.3" - "@polkadot/util" "^13.5.9" - tslib "^2.8.1" - -"@polkadot/types-support@16.5.3": - version "16.5.3" - resolved "https://registry.npmjs.org/@polkadot/types-support/-/types-support-16.5.3.tgz" - integrity sha512-ggyIRV+4Kn+aG1PiVT0PE00pAqMveyS3CuFsW9gJnKxeev4VrGfr08R4vw/61D7uIfpilkQdkXNgXAbeN09Mxg== - dependencies: - "@polkadot/util" "^13.5.9" - tslib "^2.8.1" - -"@polkadot/types@16.5.3": - version "16.5.3" - resolved "https://registry.npmjs.org/@polkadot/types/-/types-16.5.3.tgz" - integrity sha512-xy9uv/X4iT7uJ7TNCoqbcMkR8ePHwNW6DgpOU+1y1zc/KSu9ZC5i+haFOL68BpmR/QXk99YfuHoKwXvteDmykw== - dependencies: - "@polkadot/keyring" "^13.5.9" - "@polkadot/types-augment" "16.5.3" - "@polkadot/types-codec" "16.5.3" - "@polkadot/types-create" "16.5.3" - "@polkadot/util" "^13.5.9" - "@polkadot/util-crypto" "^13.5.9" - rxjs "^7.8.1" - tslib "^2.8.1" - -"@polkadot/util-crypto@^13.5.9": - version "13.5.9" - resolved "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-13.5.9.tgz" - integrity sha512-foUesMhxkTk8CZ0/XEcfvHk6I0O+aICqqVJllhOpyp/ZVnrTBKBf59T6RpsXx2pCtBlMsLRvg/6Mw7RND1HqDg== - dependencies: - "@noble/curves" "^1.3.0" - "@noble/hashes" "^1.3.3" - "@polkadot/networks" "13.5.9" - "@polkadot/util" "13.5.9" - "@polkadot/wasm-crypto" "^7.5.3" - "@polkadot/wasm-util" "^7.5.3" - "@polkadot/x-bigint" "13.5.9" - "@polkadot/x-randomvalues" "13.5.9" - "@scure/base" "^1.1.7" - tslib "^2.8.0" - -"@polkadot/util-crypto@^14.0.1": - version "14.0.1" - resolved "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-14.0.1.tgz" - integrity sha512-Cu7AKUzBTsUkbOtyuNzXcTpDjR9QW0fVR56o3gBmzfUCmvO1vlsuGzmmPzqpHymQQ3rrfqV78CPs62EGhw0R+A== - dependencies: - "@noble/curves" "^1.3.0" - "@noble/hashes" "^1.3.3" - "@polkadot/networks" "14.0.1" - "@polkadot/util" "14.0.1" - "@polkadot/wasm-crypto" "^7.5.3" - "@polkadot/wasm-util" "^7.5.3" - "@polkadot/x-bigint" "14.0.1" - "@polkadot/x-randomvalues" "14.0.1" - "@scure/base" "^1.1.7" - "@scure/sr25519" "^0.2.0" - tslib "^2.8.0" - -"@polkadot/util-crypto@13.5.9": - version "13.5.9" - resolved "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-13.5.9.tgz" - integrity sha512-foUesMhxkTk8CZ0/XEcfvHk6I0O+aICqqVJllhOpyp/ZVnrTBKBf59T6RpsXx2pCtBlMsLRvg/6Mw7RND1HqDg== - dependencies: - "@noble/curves" "^1.3.0" - "@noble/hashes" "^1.3.3" - "@polkadot/networks" "13.5.9" - "@polkadot/util" "13.5.9" - "@polkadot/wasm-crypto" "^7.5.3" - "@polkadot/wasm-util" "^7.5.3" - "@polkadot/x-bigint" "13.5.9" - "@polkadot/x-randomvalues" "13.5.9" - "@scure/base" "^1.1.7" - tslib "^2.8.0" - -"@polkadot/util@*", "@polkadot/util@^13.5.9", "@polkadot/util@13.5.9": - version "13.5.9" - resolved "https://registry.npmjs.org/@polkadot/util/-/util-13.5.9.tgz" - integrity sha512-pIK3XYXo7DKeFRkEBNYhf3GbCHg6dKQisSvdzZwuyzA6m7YxQq4DFw4IE464ve4Z7WsJFt3a6C9uII36hl9EWw== - dependencies: - "@polkadot/x-bigint" "13.5.9" - "@polkadot/x-global" "13.5.9" - "@polkadot/x-textdecoder" "13.5.9" - "@polkadot/x-textencoder" "13.5.9" - "@types/bn.js" "^5.1.6" - bn.js "^5.2.1" - tslib "^2.8.0" - -"@polkadot/util@14.0.1": - version "14.0.1" - resolved "https://registry.npmjs.org/@polkadot/util/-/util-14.0.1.tgz" - integrity sha512-764HhxkPV3x5rM0/p6QdynC2dw26n+SaE+jisjx556ViCd4E28Ke4xSPef6C0Spy4aoXf2gt0PuLEcBvd6fVZg== - dependencies: - "@polkadot/x-bigint" "14.0.1" - "@polkadot/x-global" "14.0.1" - "@polkadot/x-textdecoder" "14.0.1" - "@polkadot/x-textencoder" "14.0.1" - "@types/bn.js" "^5.1.6" - bn.js "^5.2.1" - tslib "^2.8.0" - -"@polkadot/wasm-bridge@7.5.3": - version "7.5.3" - resolved "https://registry.npmjs.org/@polkadot/wasm-bridge/-/wasm-bridge-7.5.3.tgz" - integrity sha512-mUvwwNH+uP1wqpMuHjmEwHxRIaVc5csmb+ukycWQGhzwhpXe/0fvBEU2TQ8kwgqO2MU0FS3hN/QcIWKfPRJgxQ== - dependencies: - "@polkadot/wasm-util" "7.5.3" - tslib "^2.7.0" - -"@polkadot/wasm-crypto-asmjs@7.5.3": - version "7.5.3" - resolved "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-7.5.3.tgz" - integrity sha512-fSbbjI+4p0U3PQ8nOz/3p7euHriSdh+2CSywNuXHa8fMaYlMqCKt9K7+HI8CQ4RZNvZWDq+Py1nEDEkM4rZrvw== - dependencies: - tslib "^2.7.0" - -"@polkadot/wasm-crypto-init@7.5.3": - version "7.5.3" - resolved "https://registry.npmjs.org/@polkadot/wasm-crypto-init/-/wasm-crypto-init-7.5.3.tgz" - integrity sha512-KvUpxqvW70XhuDiw/N6rM8fQ7zRjIFblw+vdJ0/wwyagwg9jrYNA9TMei5ksQd9sxGCGXN/xJmwHJXuUjkocmg== - dependencies: - "@polkadot/wasm-bridge" "7.5.3" - "@polkadot/wasm-crypto-asmjs" "7.5.3" - "@polkadot/wasm-crypto-wasm" "7.5.3" - "@polkadot/wasm-util" "7.5.3" - tslib "^2.7.0" - -"@polkadot/wasm-crypto-wasm@7.5.3": - version "7.5.3" - resolved "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-7.5.3.tgz" - integrity sha512-fc88+HyVxebB/40GVgGUOLBqyO3C571DXWPTFmtt5EX9H8gw7Jg0Bkitz7hgSVP2x4FjXpqS9UNTJ8trVH0x1A== - dependencies: - "@polkadot/wasm-util" "7.5.3" - tslib "^2.7.0" - -"@polkadot/wasm-crypto@^7.5.3": - version "7.5.3" - resolved "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-7.5.3.tgz" - integrity sha512-dmKUM9vw1wrnCHGuIeOtQo1pwuSF7fkyF4TYimTn3tAa0+3cDctYBErtGxgUeqP0Bo4Q0Of4/vnHlSk5Rbt9Uw== - dependencies: - "@polkadot/wasm-bridge" "7.5.3" - "@polkadot/wasm-crypto-asmjs" "7.5.3" - "@polkadot/wasm-crypto-init" "7.5.3" - "@polkadot/wasm-crypto-wasm" "7.5.3" - "@polkadot/wasm-util" "7.5.3" - tslib "^2.7.0" - -"@polkadot/wasm-util@*", "@polkadot/wasm-util@^7.5.3", "@polkadot/wasm-util@7.5.3": - version "7.5.3" - resolved "https://registry.npmjs.org/@polkadot/wasm-util/-/wasm-util-7.5.3.tgz" - integrity sha512-hBr9bbjS+Yr7DrDUSkIIuvlTSoAlI8WXuo9YEB4C76j130u/cl+zyq6Iy/WnaTE6QH+8i9DhM8QTety6TqYnUQ== - dependencies: - tslib "^2.7.0" - -"@polkadot/x-bigint@^13.5.9", "@polkadot/x-bigint@13.5.9": - version "13.5.9" - resolved "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-13.5.9.tgz" - integrity sha512-JVW6vw3e8fkcRyN9eoc6JIl63MRxNQCP/tuLdHWZts1tcAYao0hpWUzteqJY93AgvmQ91KPsC1Kf3iuuZCi74g== - dependencies: - "@polkadot/x-global" "13.5.9" - tslib "^2.8.0" - -"@polkadot/x-bigint@14.0.1": - version "14.0.1" - resolved "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-14.0.1.tgz" - integrity sha512-gfozjGnebr2rqURs31KtaWumbW4rRZpbiluhlmai6luCNrf5u8pB+oLA35kPEntrsLk9PnIG9OsC/n4hEtx4OQ== - dependencies: - "@polkadot/x-global" "14.0.1" - tslib "^2.8.0" - -"@polkadot/x-fetch@^13.5.9": - version "13.5.9" - resolved "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-13.5.9.tgz" - integrity sha512-urwXQZtT4yYROiRdJS6zHu18J/jCoAGpbgPIAjwdqjT11t9XIq4SjuPMxD19xBRhbYe9ocWV8i1KHuoMbZgKbA== - dependencies: - "@polkadot/x-global" "13.5.9" - node-fetch "^3.3.2" - tslib "^2.8.0" - -"@polkadot/x-global@^13.5.9", "@polkadot/x-global@13.5.9": - version "13.5.9" - resolved "https://registry.npmjs.org/@polkadot/x-global/-/x-global-13.5.9.tgz" - integrity sha512-zSRWvELHd3Q+bFkkI1h2cWIqLo1ETm+MxkNXLec3lB56iyq/MjWBxfXnAFFYFayvlEVneo7CLHcp+YTFd9aVSA== - dependencies: - tslib "^2.8.0" - -"@polkadot/x-global@14.0.1": - version "14.0.1" - resolved "https://registry.npmjs.org/@polkadot/x-global/-/x-global-14.0.1.tgz" - integrity sha512-aCI44DJU4fU0XXqrrSGIpi7JrZXK2kpe0jaQ2p6oDVXOOYEnZYXnMhTTmBE1lF/xtxzX50MnZrrU87jziU0qbA== - dependencies: - tslib "^2.8.0" - -"@polkadot/x-randomvalues@*", "@polkadot/x-randomvalues@13.5.9": - version "13.5.9" - resolved "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-13.5.9.tgz" - integrity sha512-Uuuz3oubf1JCCK97fsnVUnHvk4BGp/W91mQWJlgl5TIOUSSTIRr+lb5GurCfl4kgnQq53Zi5fJV+qR9YumbnZw== - dependencies: - "@polkadot/x-global" "13.5.9" - tslib "^2.8.0" - -"@polkadot/x-randomvalues@14.0.1": - version "14.0.1" - resolved "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-14.0.1.tgz" - integrity sha512-/XkQcvshzJLHITuPrN3zmQKuFIPdKWoaiHhhVLD6rQWV60lTXA3ajw3ocju8ZN7xRxnweMS9Ce0kMPYa0NhRMg== - dependencies: - "@polkadot/x-global" "14.0.1" - tslib "^2.8.0" - -"@polkadot/x-textdecoder@13.5.9": - version "13.5.9" - resolved "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-13.5.9.tgz" - integrity sha512-W2HhVNUbC/tuFdzNMbnXAWsIHSg9SC9QWDNmFD3nXdSzlXNgL8NmuiwN2fkYvCQBtp/XSoy0gDLx0C+Fo19cfw== - dependencies: - "@polkadot/x-global" "13.5.9" - tslib "^2.8.0" - -"@polkadot/x-textdecoder@14.0.1": - version "14.0.1" - resolved "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-14.0.1.tgz" - integrity sha512-CcWiPCuPVJsNk4Vq43lgFHqLRBQHb4r9RD7ZIYgmwoebES8TNm4g2ew9ToCzakFKSpzKu6I07Ne9wv/dt5zLuw== - dependencies: - "@polkadot/x-global" "14.0.1" - tslib "^2.8.0" - -"@polkadot/x-textencoder@13.5.9": - version "13.5.9" - resolved "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-13.5.9.tgz" - integrity sha512-SG0MHnLUgn1ZxFdm0KzMdTHJ47SfqFhdIPMcGA0Mg/jt2rwrfrP3jtEIJMsHfQpHvfsNPfv55XOMmoPWuQnP/Q== - dependencies: - "@polkadot/x-global" "13.5.9" - tslib "^2.8.0" - -"@polkadot/x-textencoder@14.0.1": - version "14.0.1" - resolved "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-14.0.1.tgz" - integrity sha512-VY51SpQmF1ccmAGLfxhYnAe95Spfz049WZ/+kK4NfsGF9WejxVdU53Im5C80l45r8qHuYQsCWU3+t0FNunh2Kg== - dependencies: - "@polkadot/x-global" "14.0.1" - tslib "^2.8.0" - -"@polkadot/x-ws@^13.5.9": - version "13.5.9" - resolved "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-13.5.9.tgz" - integrity sha512-NKVgvACTIvKT8CjaQu9d0dERkZsWIZngX/4NVSjc01WHmln4F4y/zyBdYn/Z2V0Zw28cISx+lB4qxRmqTe7gbg== - dependencies: - "@polkadot/x-global" "13.5.9" - tslib "^2.8.0" - ws "^8.18.0" - -"@rollup/rollup-linux-x64-gnu@4.53.3": - version "4.53.3" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.3.tgz" - integrity sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w== - -"@rollup/rollup-linux-x64-musl@4.53.3": - version "4.53.3" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.3.tgz" - integrity sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q== - -"@rx-state/core@^0.1.4": - version "0.1.4" - resolved "https://registry.npmjs.org/@rx-state/core/-/core-0.1.4.tgz" - integrity sha512-Z+3hjU2xh1HisLxt+W5hlYX/eGSDaXXP+ns82gq/PLZpkXLu0uwcNUh9RLY3Clq4zT+hSsA3vcpIGt6+UAb8rQ== - -"@scure/base@^1.1.1", "@scure/base@^1.1.7", "@scure/base@~1.2.2", "@scure/base@~1.2.4", "@scure/base@~1.2.5": - version "1.2.6" - resolved "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz" - integrity sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg== - -"@scure/base@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@scure/base/-/base-2.0.0.tgz" - integrity sha512-3E1kpuZginKkek01ovG8krQ0Z44E3DHPjc5S2rjJw9lZn3KSQOs8S7wqikF/AH7iRanHypj85uGyxk0XAyC37w== - -"@scure/bip32@^1.5.0", "@scure/bip32@^1.7.0", "@scure/bip32@1.7.0": - version "1.7.0" - resolved "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz" - integrity sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw== - dependencies: - "@noble/curves" "~1.9.0" - "@noble/hashes" "~1.8.0" - "@scure/base" "~1.2.5" - -"@scure/bip32@1.6.2": - version "1.6.2" - resolved "https://registry.npmjs.org/@scure/bip32/-/bip32-1.6.2.tgz" - integrity sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw== - dependencies: - "@noble/curves" "~1.8.1" - "@noble/hashes" "~1.7.1" - "@scure/base" "~1.2.2" - -"@scure/bip39@^1.4.0", "@scure/bip39@^1.6.0", "@scure/bip39@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz" - integrity sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A== - dependencies: - "@noble/hashes" "~1.8.0" - "@scure/base" "~1.2.5" - -"@scure/bip39@1.5.4": - version "1.5.4" - resolved "https://registry.npmjs.org/@scure/bip39/-/bip39-1.5.4.tgz" - integrity sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA== - dependencies: - "@noble/hashes" "~1.7.1" - "@scure/base" "~1.2.4" - -"@scure/sr25519@^0.2.0": - version "0.2.0" - resolved "https://registry.npmjs.org/@scure/sr25519/-/sr25519-0.2.0.tgz" - integrity sha512-uUuLP7Z126XdSizKtrCGqYyR3b3hYtJ6Fg/XFUXmc2//k2aXHDLqZwFeXxL97gg4XydPROPVnuaHGF2+xriSKg== - dependencies: - "@noble/curves" "~1.9.2" - "@noble/hashes" "~1.8.0" - -"@scure/sr25519@^0.3.0": - version "0.3.0" - resolved "https://registry.npmjs.org/@scure/sr25519/-/sr25519-0.3.0.tgz" - integrity sha512-SKsinX2sImunfcsH3seGrwH/OayBwwaJqVN8J1cJBNRCfbBq5q0jyTKGa9PcW1HWv9vXT6Yuq41JsxFLvF59ew== - dependencies: - "@noble/curves" "~2.0.0" - "@noble/hashes" "~2.0.0" - -"@sec-ant/readable-stream@^0.4.1": - version "0.4.1" - resolved "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz" - integrity sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg== - -"@sindresorhus/merge-streams@^4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz" - integrity sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ== - -"@substrate/connect-extension-protocol@^2.0.0": - version "2.2.2" - resolved "https://registry.npmjs.org/@substrate/connect-extension-protocol/-/connect-extension-protocol-2.2.2.tgz" - integrity sha512-t66jwrXA0s5Goq82ZtjagLNd7DPGCNjHeehRlE/gcJmJ+G56C0W+2plqOMRicJ8XGR1/YFnUSEqUFiSNbjGrAA== - -"@substrate/connect-known-chains@^1.1.5": - version "1.10.3" - resolved "https://registry.npmjs.org/@substrate/connect-known-chains/-/connect-known-chains-1.10.3.tgz" - integrity sha512-OJEZO1Pagtb6bNE3wCikc2wrmvEU5x7GxFFLqqbz1AJYYxSlrPCGu4N2og5YTExo4IcloNMQYFRkBGue0BKZ4w== - -"@substrate/connect@0.8.11": - version "0.8.11" - resolved "https://registry.npmjs.org/@substrate/connect/-/connect-0.8.11.tgz" - integrity sha512-ofLs1PAO9AtDdPbdyTYj217Pe+lBfTLltdHDs3ds8no0BseoLeAGxpz1mHfi7zB4IxI3YyAiLjH6U8cw4pj4Nw== - dependencies: - "@substrate/connect-extension-protocol" "^2.0.0" - "@substrate/connect-known-chains" "^1.1.5" - "@substrate/light-client-extension-helpers" "^1.0.0" - smoldot "2.0.26" - -"@substrate/light-client-extension-helpers@^1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@substrate/light-client-extension-helpers/-/light-client-extension-helpers-1.0.0.tgz" - integrity sha512-TdKlni1mBBZptOaeVrKnusMg/UBpWUORNDv5fdCaJklP4RJiFOzBCrzC+CyVI5kQzsXBisZ+2pXm+rIjS38kHg== - dependencies: - "@polkadot-api/json-rpc-provider" "^0.0.1" - "@polkadot-api/json-rpc-provider-proxy" "^0.1.0" - "@polkadot-api/observable-client" "^0.3.0" - "@polkadot-api/substrate-client" "^0.1.2" - "@substrate/connect-extension-protocol" "^2.0.0" - "@substrate/connect-known-chains" "^1.1.5" - rxjs "^7.8.1" - -"@substrate/ss58-registry@^1.51.0": - version "1.51.0" - resolved "https://registry.npmjs.org/@substrate/ss58-registry/-/ss58-registry-1.51.0.tgz" - integrity sha512-TWDurLiPxndFgKjVavCniytBIw+t4ViOi7TYp9h/D0NMmkEc9klFTo+827eyEJ0lELpqO207Ey7uGxUa+BS1jQ== - -"@tsconfig/node10@^1.0.7": - version "1.0.12" - resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz" - integrity sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.4" - resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz" - integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== - -"@types/bn.js@^5.1.6": - version "5.2.0" - resolved "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.2.0.tgz" - integrity sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q== - dependencies: - "@types/node" "*" - -"@types/chai@^5.0.1": - version "5.2.3" - resolved "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz" - integrity sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA== - dependencies: - "@types/deep-eql" "*" - assertion-error "^2.0.1" - -"@types/deep-eql@*": - version "4.0.2" - resolved "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz" - integrity sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw== - -"@types/estree@1.0.8": - version "1.0.8" - resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz" - integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== - -"@types/mocha@^10.0.10": - version "10.0.10" - resolved "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz" - integrity sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q== - -"@types/node@*", "@types/node@^22.18.0": - version "22.19.1" - resolved "https://registry.npmjs.org/@types/node/-/node-22.19.1.tgz" - integrity sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ== - dependencies: - undici-types "~6.21.0" - -"@types/node@^24.10.1": - version "24.10.1" - resolved "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz" - integrity sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ== - dependencies: - undici-types "~7.16.0" - -"@types/node@^24.5.2": - version "24.10.1" - resolved "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz" - integrity sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ== - dependencies: - undici-types "~7.16.0" - -"@types/node@22.7.5": - version "22.7.5" - resolved "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz" - integrity sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ== - dependencies: - undici-types "~6.19.2" - -"@types/normalize-package-data@^2.4.3", "@types/normalize-package-data@^2.4.4": - version "2.4.4" - resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz" - integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== - -"@types/ws@^8.18.1": - version "8.18.1" - resolved "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz" - integrity sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg== - dependencies: - "@types/node" "*" - -abitype@^1.0.6, abitype@^1.0.9, abitype@^1.1.1: - version "1.2.0" - resolved "https://registry.npmjs.org/abitype/-/abitype-1.2.0.tgz" - integrity sha512-fD3ROjckUrWsybaSor2AdWxzA0e/DSyV2dA4aYd7bd8orHsoJjl09fOgKfUkTDfk0BsDGBf4NBgu/c7JoS2Npw== - -abitype@1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/abitype/-/abitype-1.0.8.tgz" - integrity sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg== - -abitype@1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/abitype/-/abitype-1.1.0.tgz" - integrity sha512-6Vh4HcRxNMLA0puzPjM5GBgT4aAcFGKZzSgAXvuZ27shJP6NEpielTuqbBmZILR5/xd0PizkBGy5hReKz9jl5A== - -acorn-walk@^8.1.1: - version "8.3.4" - resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz" - integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== - dependencies: - acorn "^8.11.0" - -acorn@^8.11.0, acorn@^8.15.0, acorn@^8.4.1: - version "8.15.0" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz" - integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== - -aes-js@4.0.0-beta.5: - version "4.0.0-beta.5" - resolved "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz" - integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.2.2" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz" - integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg== - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^6.1.0: - version "6.2.3" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz" - integrity sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg== - -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" - integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -assert@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz" - integrity sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw== - dependencies: - call-bind "^1.0.2" - is-nan "^1.3.2" - object-is "^1.1.5" - object.assign "^4.1.4" - util "^0.12.5" - -assertion-error@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz" - integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== - -available-typed-arrays@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz" - integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== - dependencies: - possible-typed-array-names "^1.0.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -bn.js@^5.2.1: - version "5.2.2" - resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz" - integrity sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw== - -brace-expansion@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz" - integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== - dependencies: - balanced-match "^1.0.0" - -browser-stdout@^1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== - -bundle-require@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/bundle-require/-/bundle-require-5.1.0.tgz" - integrity sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA== - dependencies: - load-tsconfig "^0.2.3" - -cac@^6.7.14: - version "6.7.14" - resolved "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz" - integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== - -call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz" - integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.7, call-bind@^1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz" - integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== - dependencies: - call-bind-apply-helpers "^1.0.0" - es-define-property "^1.0.0" - get-intrinsic "^1.2.4" - set-function-length "^1.2.2" - -call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz" - integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== - dependencies: - call-bind-apply-helpers "^1.0.2" - get-intrinsic "^1.3.0" - -camelcase@^6.0.0: - version "6.3.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -chai@^6.0.1: - version "6.2.1" - resolved "https://registry.npmjs.org/chai/-/chai-6.2.1.tgz" - integrity sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg== - -chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^5.6.2: - version "5.6.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz" - integrity sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA== - -chokidar@^4.0.1, chokidar@^4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz" - integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA== - dependencies: - readdirp "^4.0.1" - -cli-cursor@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz" - integrity sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw== - dependencies: - restore-cursor "^5.0.0" - -cli-spinners@^3.2.0: - version "3.3.0" - resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-3.3.0.tgz" - integrity sha512-/+40ljC3ONVnYIttjMWrlL51nItDAbBrq2upN8BPyvGU/2n5Oxw3tbNwORCaNuNqLJnxGqOfjUuhsv7l5Q4IsQ== - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -commander@^14.0.2, commander@~14.0.0: - version "14.0.2" - resolved "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz" - integrity sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ== - -commander@^4.0.0: - version "4.1.1" - resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -confbox@^0.1.8: - version "0.1.8" - resolved "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz" - integrity sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w== - -consola@^3.4.0: - version "3.4.2" - resolved "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz" - integrity sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA== - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -cross-spawn@^7.0.6: - version "7.0.6" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz" - integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -data-uri-to-buffer@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz" - integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== - -debug@^4.1.0, debug@^4.3.5, debug@^4.4.0: - version "4.4.3" - resolved "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz" - integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== - dependencies: - ms "^2.1.3" - -decamelize@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz" - integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== - -deepmerge-ts@^7.1.0: - version "7.1.5" - resolved "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.5.tgz" - integrity sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw== - -define-data-property@^1.0.1, define-data-property@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz" - integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - gopd "^1.0.1" - -define-properties@^1.1.3, define-properties@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz" - integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== - dependencies: - define-data-property "^1.0.1" - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -detect-indent@^7.0.1: - version "7.0.2" - resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-7.0.2.tgz" - integrity sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -diff@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz" - integrity sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw== - -dotenv@17.2.1: - version "17.2.1" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-17.2.1.tgz" - integrity sha512-kQhDYKZecqnM0fCnzI5eIv5L4cAe/iRI+HqMbO/hbRdTAeXDG+M9FjipUxNfbARuEg4iHIbhnhs78BCHNbSxEQ== - -dunder-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz" - integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== - dependencies: - call-bind-apply-helpers "^1.0.1" - es-errors "^1.3.0" - gopd "^1.2.0" - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -es-define-property@^1.0.0, es-define-property@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz" - integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== - -es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz" - integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== - dependencies: - es-errors "^1.3.0" - -esbuild@^0.25.0, esbuild@>=0.18: - version "0.25.12" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz" - integrity sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg== - optionalDependencies: - "@esbuild/aix-ppc64" "0.25.12" - "@esbuild/android-arm" "0.25.12" - "@esbuild/android-arm64" "0.25.12" - "@esbuild/android-x64" "0.25.12" - "@esbuild/darwin-arm64" "0.25.12" - "@esbuild/darwin-x64" "0.25.12" - "@esbuild/freebsd-arm64" "0.25.12" - "@esbuild/freebsd-x64" "0.25.12" - "@esbuild/linux-arm" "0.25.12" - "@esbuild/linux-arm64" "0.25.12" - "@esbuild/linux-ia32" "0.25.12" - "@esbuild/linux-loong64" "0.25.12" - "@esbuild/linux-mips64el" "0.25.12" - "@esbuild/linux-ppc64" "0.25.12" - "@esbuild/linux-riscv64" "0.25.12" - "@esbuild/linux-s390x" "0.25.12" - "@esbuild/linux-x64" "0.25.12" - "@esbuild/netbsd-arm64" "0.25.12" - "@esbuild/netbsd-x64" "0.25.12" - "@esbuild/openbsd-arm64" "0.25.12" - "@esbuild/openbsd-x64" "0.25.12" - "@esbuild/openharmony-arm64" "0.25.12" - "@esbuild/sunos-x64" "0.25.12" - "@esbuild/win32-arm64" "0.25.12" - "@esbuild/win32-ia32" "0.25.12" - "@esbuild/win32-x64" "0.25.12" - -escalade@^3.1.1: - version "3.2.0" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" - integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -ethers@^6.13.5: - version "6.16.0" - resolved "https://registry.npmjs.org/ethers/-/ethers-6.16.0.tgz" - integrity sha512-U1wulmetNymijEhpSEQ7Ct/P/Jw9/e7R1j5XIbPRydgV2DjLVMsULDlNksq3RQnFgKoLlZf88ijYtWEXcPa07A== - dependencies: - "@adraffy/ens-normalize" "1.10.1" - "@noble/curves" "1.2.0" - "@noble/hashes" "1.3.2" - "@types/node" "22.7.5" - aes-js "4.0.0-beta.5" - tslib "2.7.0" - ws "8.17.1" - -eventemitter3@^5.0.1, eventemitter3@5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz" - integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== - -execa@^9.6.0: - version "9.6.1" - resolved "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz" - integrity sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA== - dependencies: - "@sindresorhus/merge-streams" "^4.0.0" - cross-spawn "^7.0.6" - figures "^6.1.0" - get-stream "^9.0.0" - human-signals "^8.0.1" - is-plain-obj "^4.1.0" - is-stream "^4.0.1" - npm-run-path "^6.0.0" - pretty-ms "^9.2.0" - signal-exit "^4.1.0" - strip-final-newline "^4.0.0" - yoctocolors "^2.1.1" - -fdir@^6.5.0: - version "6.5.0" - resolved "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz" - integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== - -fetch-blob@^3.1.2, fetch-blob@^3.1.4: - version "3.2.0" - resolved "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz" - integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== - dependencies: - node-domexception "^1.0.0" - web-streams-polyfill "^3.0.3" - -figures@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz" - integrity sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg== - dependencies: - is-unicode-supported "^2.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -fix-dts-default-cjs-exports@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/fix-dts-default-cjs-exports/-/fix-dts-default-cjs-exports-1.0.1.tgz" - integrity sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg== - dependencies: - magic-string "^0.30.17" - mlly "^1.7.4" - rollup "^4.34.8" - -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - -for-each@^0.3.5: - version "0.3.5" - resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz" - integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== - dependencies: - is-callable "^1.2.7" - -foreground-child@^3.1.0: - version "3.3.1" - resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz" - integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== - dependencies: - cross-spawn "^7.0.6" - signal-exit "^4.0.1" - -formdata-polyfill@^4.0.10: - version "4.0.10" - resolved "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz" - integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== - dependencies: - fetch-blob "^3.1.2" - -fs.promises.exists@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/fs.promises.exists/-/fs.promises.exists-1.1.4.tgz" - integrity sha512-lJzUGWbZn8vhGWBedA+RYjB/BeJ+3458ljUfmplqhIeb6ewzTFWNPCR1HCiYCkXV9zxcHz9zXkJzMsEgDLzh3Q== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -generator-function@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz" - integrity sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-east-asian-width@^1.3.0: - version "1.4.0" - resolved "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz" - integrity sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q== - -get-intrinsic@^1.2.4, get-intrinsic@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz" - integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== - dependencies: - call-bind-apply-helpers "^1.0.2" - es-define-property "^1.0.1" - es-errors "^1.3.0" - es-object-atoms "^1.1.1" - function-bind "^1.1.2" - get-proto "^1.0.1" - gopd "^1.2.0" - has-symbols "^1.1.0" - hasown "^2.0.2" - math-intrinsics "^1.1.0" - -get-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz" - integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== - dependencies: - dunder-proto "^1.0.1" - es-object-atoms "^1.0.0" - -get-stream@^9.0.0: - version "9.0.1" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz" - integrity sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA== - dependencies: - "@sec-ant/readable-stream" "^0.4.1" - is-stream "^4.0.1" - -glob@^10.4.5: - version "10.5.0" - resolved "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz" - integrity sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg== - dependencies: - foreground-child "^3.1.0" - jackspeak "^3.1.2" - minimatch "^9.0.4" - minipass "^7.1.2" - package-json-from-dist "^1.0.0" - path-scurry "^1.11.1" - -gopd@^1.0.1, gopd@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz" - integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz" - integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== - dependencies: - es-define-property "^1.0.0" - -has-symbols@^1.0.3, has-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz" - integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== - -has-tostringtag@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz" - integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== - dependencies: - has-symbols "^1.0.3" - -hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -he@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -hosted-git-info@^7.0.0: - version "7.0.2" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz" - integrity sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w== - dependencies: - lru-cache "^10.0.1" - -hosted-git-info@^9.0.0: - version "9.0.2" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.2.tgz" - integrity sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg== - dependencies: - lru-cache "^11.1.0" - -human-signals@^8.0.1: - version "8.0.1" - resolved "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz" - integrity sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ== - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -index-to-position@^1.1.0: - version "1.2.0" - resolved "https://registry.npmjs.org/index-to-position/-/index-to-position-1.2.0.tgz" - integrity sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw== - -inherits@^2.0.3: - version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -is-arguments@^1.0.4: - version "1.2.0" - resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz" - integrity sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA== - dependencies: - call-bound "^1.0.2" - has-tostringtag "^1.0.2" - -is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-function@^1.0.7: - version "1.1.2" - resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz" - integrity sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA== - dependencies: - call-bound "^1.0.4" - generator-function "^2.0.0" - get-proto "^1.0.1" - has-tostringtag "^1.0.2" - safe-regex-test "^1.1.0" - -is-interactive@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz" - integrity sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ== - -is-nan@^1.3.2: - version "1.3.2" - resolved "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz" - integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-obj@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== - -is-plain-obj@^4.0.0, is-plain-obj@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz" - integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== - -is-regex@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz" - integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== - dependencies: - call-bound "^1.0.2" - gopd "^1.2.0" - has-tostringtag "^1.0.2" - hasown "^2.0.2" - -is-stream@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz" - integrity sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A== - -is-typed-array@^1.1.3: - version "1.1.15" - resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz" - integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== - dependencies: - which-typed-array "^1.1.16" - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -is-unicode-supported@^2.0.0, is-unicode-supported@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz" - integrity sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isows@1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/isows/-/isows-1.0.6.tgz" - integrity sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw== - -isows@1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/isows/-/isows-1.0.7.tgz" - integrity sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg== - -jackspeak@^3.1.2: - version "3.4.3" - resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz" - integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - -joycon@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz" - integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^4.1.0: - version "4.1.1" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz" - integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== - dependencies: - argparse "^2.0.1" - -json-stringify-safe@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - -lilconfig@^3.1.1: - version "3.1.3" - resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz" - integrity sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw== - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -load-tsconfig@^0.2.3: - version "0.2.5" - resolved "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz" - integrity sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg== - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz" - integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== - -log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -log-symbols@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.1.tgz" - integrity sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg== - dependencies: - is-unicode-supported "^2.0.0" - yoctocolors "^2.1.1" - -lru-cache@^10.0.1, lru-cache@^10.2.0: - version "10.4.3" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz" - integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== - -lru-cache@^11.1.0: - version "11.2.4" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz" - integrity sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg== - -magic-string@^0.30.17: - version "0.30.21" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz" - integrity sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ== - dependencies: - "@jridgewell/sourcemap-codec" "^1.5.5" - -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -math-intrinsics@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz" - integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== - -mimic-function@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz" - integrity sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA== - -minimatch@^9.0.4, minimatch@^9.0.5: - version "9.0.5" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" - integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== - dependencies: - brace-expansion "^2.0.1" - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: - version "7.1.2" - resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" - integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== - -mlly@^1.7.4: - version "1.8.0" - resolved "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz" - integrity sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g== - dependencies: - acorn "^8.15.0" - pathe "^2.0.3" - pkg-types "^1.3.1" - ufo "^1.6.1" - -mocha@^11.1.0: - version "11.7.5" - resolved "https://registry.npmjs.org/mocha/-/mocha-11.7.5.tgz" - integrity sha512-mTT6RgopEYABzXWFx+GcJ+ZQ32kp4fMf0xvpZIIfSq9Z8lC/++MtcCnQ9t5FP2veYEP95FIYSvW+U9fV4xrlig== - dependencies: - browser-stdout "^1.3.1" - chokidar "^4.0.1" - debug "^4.3.5" - diff "^7.0.0" - escape-string-regexp "^4.0.0" - find-up "^5.0.0" - glob "^10.4.5" - he "^1.2.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - log-symbols "^4.1.0" - minimatch "^9.0.5" - ms "^2.1.3" - picocolors "^1.1.1" - serialize-javascript "^6.0.2" - strip-json-comments "^3.1.1" - supports-color "^8.1.1" - workerpool "^9.2.0" - yargs "^17.7.2" - yargs-parser "^21.1.1" - yargs-unparser "^2.0.0" - -mock-socket@^9.3.1: - version "9.3.1" - resolved "https://registry.npmjs.org/mock-socket/-/mock-socket-9.3.1.tgz" - integrity sha512-qxBgB7Qa2sEQgHFjj0dSigq7fX4k6Saisd5Nelwp2q8mlbAFh5dHV9JTTlF8viYJLSSWgMCZFUom8PJcMNBoJw== - -ms@^2.1.3: - version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -mz@^2.7.0: - version "2.7.0" - resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - -nock@^13.5.5: - version "13.5.6" - resolved "https://registry.npmjs.org/nock/-/nock-13.5.6.tgz" - integrity sha512-o2zOYiCpzRqSzPj0Zt/dQ/DqZeYoaQ7TUonc/xUPjCGl9WeHpNbxgVvOquXYAaJzI0M9BXV3HTzG0p8IUAbBTQ== - dependencies: - debug "^4.1.0" - json-stringify-safe "^5.0.1" - propagate "^2.0.0" - -node-domexception@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz" - integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== - -node-fetch@^3.3.2: - version "3.3.2" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz" - integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA== - dependencies: - data-uri-to-buffer "^4.0.0" - fetch-blob "^3.1.4" - formdata-polyfill "^4.0.10" - -normalize-package-data@^6.0.0: - version "6.0.2" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz" - integrity sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g== - dependencies: - hosted-git-info "^7.0.0" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" - -normalize-package-data@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-8.0.0.tgz" - integrity sha512-RWk+PI433eESQ7ounYxIp67CYuVsS1uYSonX3kA6ps/3LWfjVQa/ptEg6Y3T6uAMq1mWpX9PQ+qx+QaHpsc7gQ== - dependencies: - hosted-git-info "^9.0.0" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" - -npm-run-path@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz" - integrity sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA== - dependencies: - path-key "^4.0.0" - unicorn-magic "^0.3.0" - -object-assign@^4.0.1: - version "4.1.1" - resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-is@^1.1.5: - version "1.1.6" - resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz" - integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.4: - version "4.1.7" - resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz" - integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== - dependencies: - call-bind "^1.0.8" - call-bound "^1.0.3" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - has-symbols "^1.1.0" - object-keys "^1.1.1" - -onetime@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz" - integrity sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ== - dependencies: - mimic-function "^5.0.0" - -ora@^9.0.0: - version "9.0.0" - resolved "https://registry.npmjs.org/ora/-/ora-9.0.0.tgz" - integrity sha512-m0pg2zscbYgWbqRR6ABga5c3sZdEon7bSgjnlXC64kxtxLOyjRcbbUkLj7HFyy/FTD+P2xdBWu8snGhYI0jc4A== - dependencies: - chalk "^5.6.2" - cli-cursor "^5.0.0" - cli-spinners "^3.2.0" - is-interactive "^2.0.0" - is-unicode-supported "^2.1.0" - log-symbols "^7.0.1" - stdin-discarder "^0.2.2" - string-width "^8.1.0" - strip-ansi "^7.1.2" - -ox@0.6.7: - version "0.6.7" - resolved "https://registry.npmjs.org/ox/-/ox-0.6.7.tgz" - integrity sha512-17Gk/eFsFRAZ80p5eKqv89a57uXjd3NgIf1CaXojATPBuujVc/fQSVhBeAU9JCRB+k7J50WQAyWTxK19T9GgbA== - dependencies: - "@adraffy/ens-normalize" "^1.10.1" - "@noble/curves" "^1.6.0" - "@noble/hashes" "^1.5.0" - "@scure/bip32" "^1.5.0" - "@scure/bip39" "^1.4.0" - abitype "^1.0.6" - eventemitter3 "5.0.1" - -ox@0.9.6: - version "0.9.6" - resolved "https://registry.npmjs.org/ox/-/ox-0.9.6.tgz" - integrity sha512-8SuCbHPvv2eZLYXrNmC0EC12rdzXQLdhnOMlHDW2wiCPLxBrOOJwX5L5E61by+UjTPOryqQiRSnjIKCI+GykKg== - dependencies: - "@adraffy/ens-normalize" "^1.11.0" - "@noble/ciphers" "^1.3.0" - "@noble/curves" "1.9.1" - "@noble/hashes" "^1.8.0" - "@scure/bip32" "^1.7.0" - "@scure/bip39" "^1.6.0" - abitype "^1.0.9" - eventemitter3 "5.0.1" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -package-json-from-dist@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz" - integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== - -parse-json@^8.0.0, parse-json@^8.3.0: - version "8.3.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz" - integrity sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ== - dependencies: - "@babel/code-frame" "^7.26.2" - index-to-position "^1.1.0" - type-fest "^4.39.1" - -parse-ms@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz" - integrity sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-key@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz" - integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== - -path-scurry@^1.11.1: - version "1.11.1" - resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz" - integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== - dependencies: - lru-cache "^10.2.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - -pathe@^2.0.1, pathe@^2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz" - integrity sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w== - -picocolors@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" - integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== - -"picomatch@^3 || ^4", picomatch@^4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz" - integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== - -pirates@^4.0.1: - version "4.0.7" - resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz" - integrity sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA== - -pkg-types@^1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz" - integrity sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ== - dependencies: - confbox "^0.1.8" - mlly "^1.7.4" - pathe "^2.0.1" - -polkadot-api@^1.22.0, polkadot-api@^1.8.1, polkadot-api@>=1.19.0, polkadot-api@>=1.21.0: - version "1.22.0" - resolved "https://registry.npmjs.org/polkadot-api/-/polkadot-api-1.22.0.tgz" - integrity sha512-uREBLroPbnJxBBQ+qSkKLF493qukX4PAg32iThlELrZdxfNNgro6nvWRdVmBv73tFHvf+nyWWHKTx1c57nbixg== - dependencies: - "@polkadot-api/cli" "0.16.3" - "@polkadot-api/ink-contracts" "0.4.3" - "@polkadot-api/json-rpc-provider" "0.0.4" - "@polkadot-api/known-chains" "0.9.15" - "@polkadot-api/logs-provider" "0.0.6" - "@polkadot-api/metadata-builders" "0.13.7" - "@polkadot-api/metadata-compatibility" "0.4.1" - "@polkadot-api/observable-client" "0.17.0" - "@polkadot-api/pjs-signer" "0.6.17" - "@polkadot-api/polkadot-sdk-compat" "2.3.3" - "@polkadot-api/polkadot-signer" "0.1.6" - "@polkadot-api/signer" "0.2.11" - "@polkadot-api/sm-provider" "0.1.14" - "@polkadot-api/smoldot" "0.3.14" - "@polkadot-api/substrate-bindings" "0.16.5" - "@polkadot-api/substrate-client" "0.4.7" - "@polkadot-api/utils" "0.2.0" - "@polkadot-api/ws-provider" "0.7.4" - "@rx-state/core" "^0.1.4" - -possible-typed-array-names@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz" - integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg== - -postcss-load-config@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz" - integrity sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g== - dependencies: - lilconfig "^3.1.1" - -prettier@^3.3.3: - version "3.7.4" - resolved "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz" - integrity sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA== - -pretty-ms@^9.2.0: - version "9.3.0" - resolved "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz" - integrity sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ== - dependencies: - parse-ms "^4.0.0" - -propagate@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz" - integrity sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag== - -punycode@^2.1.0: - version "2.3.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -read-pkg@^10.0.0: - version "10.0.0" - resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-10.0.0.tgz" - integrity sha512-A70UlgfNdKI5NSvTTfHzLQj7NJRpJ4mT5tGafkllJ4wh71oYuGm/pzphHcmW4s35iox56KSK721AihodoXSc/A== - dependencies: - "@types/normalize-package-data" "^2.4.4" - normalize-package-data "^8.0.0" - parse-json "^8.3.0" - type-fest "^5.2.0" - unicorn-magic "^0.3.0" - -read-pkg@^9.0.1: - version "9.0.1" - resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz" - integrity sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA== - dependencies: - "@types/normalize-package-data" "^2.4.3" - normalize-package-data "^6.0.0" - parse-json "^8.0.0" - type-fest "^4.6.0" - unicorn-magic "^0.1.0" - -readdirp@^4.0.1: - version "4.1.2" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz" - integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg== - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -restore-cursor@^5.0.0: - version "5.1.0" - resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz" - integrity sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA== - dependencies: - onetime "^7.0.0" - signal-exit "^4.1.0" - -rollup@^4.34.8: - version "4.53.3" - resolved "https://registry.npmjs.org/rollup/-/rollup-4.53.3.tgz" - integrity sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA== - dependencies: - "@types/estree" "1.0.8" - optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.53.3" - "@rollup/rollup-android-arm64" "4.53.3" - "@rollup/rollup-darwin-arm64" "4.53.3" - "@rollup/rollup-darwin-x64" "4.53.3" - "@rollup/rollup-freebsd-arm64" "4.53.3" - "@rollup/rollup-freebsd-x64" "4.53.3" - "@rollup/rollup-linux-arm-gnueabihf" "4.53.3" - "@rollup/rollup-linux-arm-musleabihf" "4.53.3" - "@rollup/rollup-linux-arm64-gnu" "4.53.3" - "@rollup/rollup-linux-arm64-musl" "4.53.3" - "@rollup/rollup-linux-loong64-gnu" "4.53.3" - "@rollup/rollup-linux-ppc64-gnu" "4.53.3" - "@rollup/rollup-linux-riscv64-gnu" "4.53.3" - "@rollup/rollup-linux-riscv64-musl" "4.53.3" - "@rollup/rollup-linux-s390x-gnu" "4.53.3" - "@rollup/rollup-linux-x64-gnu" "4.53.3" - "@rollup/rollup-linux-x64-musl" "4.53.3" - "@rollup/rollup-openharmony-arm64" "4.53.3" - "@rollup/rollup-win32-arm64-msvc" "4.53.3" - "@rollup/rollup-win32-ia32-msvc" "4.53.3" - "@rollup/rollup-win32-x64-gnu" "4.53.3" - "@rollup/rollup-win32-x64-msvc" "4.53.3" - fsevents "~2.3.2" - -rxjs@^7.8.1, rxjs@^7.8.2, rxjs@>=7, rxjs@>=7.8.0, rxjs@>=7.8.1: - version "7.8.2" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz" - integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA== - dependencies: - tslib "^2.1.0" - -safe-buffer@^5.1.0: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex-test@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz" - integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - is-regex "^1.2.1" - -scale-ts@^1.6.0, scale-ts@^1.6.1: - version "1.6.1" - resolved "https://registry.npmjs.org/scale-ts/-/scale-ts-1.6.1.tgz" - integrity sha512-PBMc2AWc6wSEqJYBDPcyCLUj9/tMKnLX70jLOSndMtcUoLQucP/DM0vnQo1wJAYjTrQiq8iG9rD0q6wFzgjH7g== - -semver@^7.3.5: - version "7.7.3" - resolved "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz" - integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== - -serialize-javascript@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz" - integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== - dependencies: - randombytes "^2.1.0" - -set-function-length@^1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz" - integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -signal-exit@^4.0.1, signal-exit@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - -smoldot@2.0.26, smoldot@2.x: - version "2.0.26" - resolved "https://registry.npmjs.org/smoldot/-/smoldot-2.0.26.tgz" - integrity sha512-F+qYmH4z2s2FK+CxGj8moYcd1ekSIKH8ywkdqlOz88Dat35iB1DIYL11aILN46YSGMzQW/lbJNS307zBSDN5Ig== - dependencies: - ws "^8.8.1" - -smoldot@2.0.39: - version "2.0.39" - resolved "https://registry.npmjs.org/smoldot/-/smoldot-2.0.39.tgz" - integrity sha512-yFMSzI6nkqWFTNao99lBA/TguUFU+bR3A5UGTDd/QqqB12jqzvZnmW/No6l2rKmagt8Qx/KybMNowV/E28znhA== - dependencies: - ws "^8.8.1" - -sort-keys@^5.0.0: - version "5.1.0" - resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-5.1.0.tgz" - integrity sha512-aSbHV0DaBcr7u0PVHXzM6NbZNAtrr9sF6+Qfs9UUVG7Ll3jQ6hHi8F/xqIIcn2rvIVbr0v/2zyjSdwSV47AgLQ== - dependencies: - is-plain-obj "^4.0.0" - -source-map@0.8.0-beta.0: - version "0.8.0-beta.0" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz" - integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== - dependencies: - whatwg-url "^7.0.0" - -spdx-correct@^3.0.0: - version "3.2.0" - resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz" - integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.5.0" - resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz" - integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.22" - resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz" - integrity sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ== - -stdin-discarder@^0.2.2: - version "0.2.2" - resolved "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz" - integrity sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ== - -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -string-width@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/string-width/-/string-width-8.1.0.tgz" - integrity sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg== - dependencies: - get-east-asian-width "^1.3.0" - strip-ansi "^7.1.0" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1: - version "7.1.2" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz" - integrity sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA== - dependencies: - ansi-regex "^6.0.1" - -strip-ansi@^7.1.0, strip-ansi@^7.1.2: - version "7.1.2" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz" - integrity sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA== - dependencies: - ansi-regex "^6.0.1" - -strip-final-newline@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz" - integrity sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw== - -strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -sucrase@^3.35.0: - version "3.35.1" - resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz" - integrity sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.2" - commander "^4.0.0" - lines-and-columns "^1.1.6" - mz "^2.7.0" - pirates "^4.0.1" - tinyglobby "^0.2.11" - ts-interface-checker "^0.1.9" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.1.1: - version "8.1.1" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -tagged-tag@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/tagged-tag/-/tagged-tag-1.0.0.tgz" - integrity sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng== - -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz" - integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.1" - resolved "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz" - integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== - dependencies: - any-promise "^1.0.0" - -tinyexec@^0.3.2: - version "0.3.2" - resolved "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz" - integrity sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA== - -tinyglobby@^0.2.11: - version "0.2.15" - resolved "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz" - integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== - dependencies: - fdir "^6.5.0" - picomatch "^4.0.3" - -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz" - integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== - dependencies: - punycode "^2.1.0" - -tree-kill@^1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" - integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== - -ts-interface-checker@^0.1.9: - version "0.1.13" - resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz" - integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== - -ts-node@^10.9.2: - version "10.9.2" - resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz" - integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -tsc-prog@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/tsc-prog/-/tsc-prog-2.3.0.tgz" - integrity sha512-ycET2d75EgcX7y8EmG4KiZkLAwUzbY4xRhA6NU0uVbHkY4ZjrAAuzTMxXI85kOwATqPnBI5C/7y7rlpY0xdqHA== - -tslib@^2.1.0, tslib@^2.7.0, tslib@^2.8.0, tslib@^2.8.1: - version "2.8.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" - integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== - -tslib@2.7.0: - version "2.7.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz" - integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== - -tsup@8.5.0: - version "8.5.0" - resolved "https://registry.npmjs.org/tsup/-/tsup-8.5.0.tgz" - integrity sha512-VmBp77lWNQq6PfuMqCHD3xWl22vEoWsKajkF8t+yMBawlUS8JzEI+vOVMeuNZIuMML8qXRizFKi9oD5glKQVcQ== - dependencies: - bundle-require "^5.1.0" - cac "^6.7.14" - chokidar "^4.0.3" - consola "^3.4.0" - debug "^4.4.0" - esbuild "^0.25.0" - fix-dts-default-cjs-exports "^1.0.0" - joycon "^3.1.1" - picocolors "^1.1.1" - postcss-load-config "^6.0.1" - resolve-from "^5.0.0" - rollup "^4.34.8" - source-map "0.8.0-beta.0" - sucrase "^3.35.0" - tinyexec "^0.3.2" - tinyglobby "^0.2.11" - tree-kill "^1.2.2" - -type-fest@^4.23.0, type-fest@^4.39.1, type-fest@^4.6.0: - version "4.41.0" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz" - integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== - -type-fest@^5.2.0: - version "5.3.0" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-5.3.0.tgz" - integrity sha512-d9CwU93nN0IA1QL+GSNDdwLAu1Ew5ZjTwupvedwg3WdfoH6pIDvYQ2hV0Uc2nKBLPq7NB5apCx57MLS5qlmO5g== - dependencies: - tagged-tag "^1.0.0" - -typescript@^5.7.2, typescript@^5.9.3, typescript@>=2.7, typescript@>=4, typescript@>=4.5.0, typescript@>=5.0.4, typescript@>=5.4.0: - version "5.9.3" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz" - integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== - -ufo@^1.6.1: - version "1.6.1" - resolved "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz" - integrity sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA== - -undici-types@~6.19.2: - version "6.19.8" - resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz" - integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== - -undici-types@~6.21.0: - version "6.21.0" - resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz" - integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== - -undici-types@~7.16.0: - version "7.16.0" - resolved "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz" - integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw== - -unicorn-magic@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz" - integrity sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ== - -unicorn-magic@^0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz" - integrity sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA== - -util@^0.12.5: - version "0.12.5" - resolved "https://registry.npmjs.org/util/-/util-0.12.5.tgz" - integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== - dependencies: - inherits "^2.0.3" - is-arguments "^1.0.4" - is-generator-function "^1.0.7" - is-typed-array "^1.1.3" - which-typed-array "^1.1.2" - -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - -validate-npm-package-license@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -viem@^2.37.9: - version "2.41.2" - resolved "https://registry.npmjs.org/viem/-/viem-2.41.2.tgz" - integrity sha512-LYliajglBe1FU6+EH9mSWozp+gRA/QcHfxeD9Odf83AdH5fwUS7DroH4gHvlv6Sshqi1uXrYFA2B/EOczxd15g== - dependencies: - "@noble/curves" "1.9.1" - "@noble/hashes" "1.8.0" - "@scure/bip32" "1.7.0" - "@scure/bip39" "1.6.0" - abitype "1.1.0" - isows "1.0.7" - ox "0.9.6" - ws "8.18.3" - -viem@2.23.4: - version "2.23.4" - resolved "https://registry.npmjs.org/viem/-/viem-2.23.4.tgz" - integrity sha512-UQquuolKlS1w5H5e0Fd1KKoUlIPJryIEBzY5AUhGyV1ka+9O6+3uYVhUzj6RbvGK0PtsMKn2ddwPZFwjNDVU/A== - dependencies: - "@noble/curves" "1.8.1" - "@noble/hashes" "1.7.1" - "@scure/bip32" "1.6.2" - "@scure/bip39" "1.5.4" - abitype "1.0.8" - isows "1.0.6" - ox "0.6.7" - ws "8.18.0" - -web-streams-polyfill@^3.0.3: - version "3.3.3" - resolved "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz" - integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== - -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -which-typed-array@^1.1.16, which-typed-array@^1.1.2: - version "1.1.19" - resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz" - integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw== - dependencies: - available-typed-arrays "^1.0.7" - call-bind "^1.0.8" - call-bound "^1.0.4" - for-each "^0.3.5" - get-proto "^1.0.1" - gopd "^1.2.0" - has-tostringtag "^1.0.2" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -workerpool@^9.2.0: - version "9.3.4" - resolved "https://registry.npmjs.org/workerpool/-/workerpool-9.3.4.tgz" - integrity sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg== - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -write-file-atomic@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz" - integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^4.0.1" - -write-json-file@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/write-json-file/-/write-json-file-6.0.0.tgz" - integrity sha512-MNHcU3f9WxnNyR6MxsYSj64Jz0+dwIpisWKWq9gqLj/GwmA9INg3BZ3vt70/HB3GEwrnDQWr4RPrywnhNzmUFA== - dependencies: - detect-indent "^7.0.1" - is-plain-obj "^4.1.0" - sort-keys "^5.0.0" - write-file-atomic "^5.0.1" - -write-package@^7.2.0: - version "7.2.0" - resolved "https://registry.npmjs.org/write-package/-/write-package-7.2.0.tgz" - integrity sha512-uMQTubF/vcu+Wd0b5BGtDmiXePd/+44hUWQz2nZPbs92/BnxRo74tqs+hqDo12RLiEd+CXFKUwxvvIZvtt34Jw== - dependencies: - deepmerge-ts "^7.1.0" - read-pkg "^9.0.1" - sort-keys "^5.0.0" - type-fest "^4.23.0" - write-json-file "^6.0.0" - -ws@*, ws@^8.18.0, ws@^8.18.2, ws@^8.18.3, ws@^8.8.1, ws@8.18.3: - version "8.18.3" - resolved "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz" - integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== - -ws@8.17.1: - version "8.17.1" - resolved "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz" - integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== - -ws@8.18.0: - version "8.18.0" - resolved "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz" - integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs-unparser@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz" - integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== - dependencies: - camelcase "^6.0.0" - decamelize "^4.0.0" - flat "^5.0.2" - is-plain-obj "^2.1.0" - -yargs@^17.7.2: - version "17.7.2" - resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -yoctocolors@^2.1.1: - version "2.1.2" - resolved "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz" - integrity sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug== diff --git a/contract-tests/bittensor/.gitignore b/ink-contract/.gitignore similarity index 100% rename from contract-tests/bittensor/.gitignore rename to ink-contract/.gitignore diff --git a/contract-tests/bittensor/Cargo.toml b/ink-contract/Cargo.toml similarity index 100% rename from contract-tests/bittensor/Cargo.toml rename to ink-contract/Cargo.toml diff --git a/contract-tests/bittensor/lib.rs b/ink-contract/lib.rs similarity index 100% rename from contract-tests/bittensor/lib.rs rename to ink-contract/lib.rs From 6f1fa45265c0e8ec6b445019ca182e097e097aac Mon Sep 17 00:00:00 2001 From: "subtensor-ai-review[bot]" Date: Wed, 17 Jun 2026 12:35:36 +0000 Subject: [PATCH 26/36] chore: auditor auto-fix --- ts-tests/suites/zombienet_evm/05-direct-call-precompile.test.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/ts-tests/suites/zombienet_evm/05-direct-call-precompile.test.ts b/ts-tests/suites/zombienet_evm/05-direct-call-precompile.test.ts index 6cc72cf871..ce7b2f5255 100644 --- a/ts-tests/suites/zombienet_evm/05-direct-call-precompile.test.ts +++ b/ts-tests/suites/zombienet_evm/05-direct-call-precompile.test.ts @@ -408,7 +408,6 @@ describeSuite({ const crowdloanDeposit = BigInt(100_000_000_000); const networkLastLockCost = await api.query.SubtensorModule.NetworkLastLockCost.getValue(); const crowdloanCap = networkLastLockCost * BigInt(2); - const currentBlock = await api.query.System.Number.getValue(); const crowdloanEnd = await getCrowdloanEndBlock(); const leasingEmissionsShare = 15; const leasingEndBlock = crowdloanEnd + 200; From 51d31d66a6267ca67555b164985c3c8eddecf3d1 Mon Sep 17 00:00:00 2001 From: open-junius Date: Wed, 17 Jun 2026 22:40:27 +0800 Subject: [PATCH 27/36] fix unstable wasm ink test --- .../suites/zombienet_evm/01-contract-deploy-call.test.ts | 2 -- ts-tests/utils/wasm-contract.ts | 5 +++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/ts-tests/suites/zombienet_evm/01-contract-deploy-call.test.ts b/ts-tests/suites/zombienet_evm/01-contract-deploy-call.test.ts index 080eff0668..d64008d83b 100644 --- a/ts-tests/suites/zombienet_evm/01-contract-deploy-call.test.ts +++ b/ts-tests/suites/zombienet_evm/01-contract-deploy-call.test.ts @@ -265,8 +265,6 @@ describeSuite({ expect(stakeFromContract).toBeGreaterThan(stakeBefore); expect(stakeAfter).toBeGreaterThan(stakeBefore); - // Swap fees/slippage can leave stake slightly below the nominal TAO sent. - expect(stakeFromContract).toBeGreaterThan(tao(19)); }, }); diff --git a/ts-tests/utils/wasm-contract.ts b/ts-tests/utils/wasm-contract.ts index 76e3758e13..b08defdaea 100644 --- a/ts-tests/utils/wasm-contract.ts +++ b/ts-tests/utils/wasm-contract.ts @@ -6,7 +6,7 @@ import { Binary } from "polkadot-api"; import { convertPublicKeyToSs58 } from "./address.ts"; import { getBalance } from "./balance.ts"; import { sudoSetAdminFreezeWindow } from "./staking.ts"; -import { sendTransaction, waitForTransactionWithRetry } from "./transactions.ts"; +import { sendTransaction, waitForFinalizedBlocks, waitForTransactionWithRetry } from "./transactions.ts"; export const BITTENSOR_WASM_PATH = "./ink/bittensor.wasm"; @@ -82,7 +82,8 @@ export async function sendWasmContractExtrinsic( }, storage_deposit_limit: BigInt(1_000_000_000), }); - await waitForTransactionWithRetry(api, tx, coldkey, "contracts_call", 5); + await waitForTransactionWithRetry(api, tx, coldkey, "contracts_call", 1); + await waitForFinalizedBlocks(api, 1); } /** Submit a contract call without failing when the contract reverts (expected for atomic-failure tests). */ From 4484b7650209d2fed234bd6c324312345c6c52e1 Mon Sep 17 00:00:00 2001 From: open-junius Date: Thu, 18 Jun 2026 00:22:18 +0800 Subject: [PATCH 28/36] fix test in shield --- .../zombienet_shield/01-scaling.test.ts | 12 ++++----- ts-tests/utils/shield_helpers.ts | 25 +++++++++++++------ 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/ts-tests/suites/zombienet_shield/01-scaling.test.ts b/ts-tests/suites/zombienet_shield/01-scaling.test.ts index d6072158f7..a83d5a3e2b 100644 --- a/ts-tests/suites/zombienet_shield/01-scaling.test.ts +++ b/ts-tests/suites/zombienet_shield/01-scaling.test.ts @@ -1,7 +1,10 @@ -import { expect, beforeAll } from "vitest"; -import type { PolkadotClient, TypedApi } from "polkadot-api"; -import { hexToU8a } from "@polkadot/util"; import { describeSuite } from "@moonwall/cli"; +import type { KeyringPair } from "@moonwall/util"; +import { MultiAddress, subtensor } from "@polkadot-api/descriptors"; +import { Keyring } from "@polkadot/keyring"; +import { hexToU8a } from "@polkadot/util"; +import type { PolkadotClient, TypedApi } from "polkadot-api"; +import { beforeAll, expect } from "vitest"; import { checkRuntime, getAccountNonce, @@ -11,9 +14,6 @@ import { submitEncrypted, waitForFinalizedBlocks, } from "../../utils"; -import type { KeyringPair } from "@moonwall/util"; -import { Keyring } from "@polkadot/keyring"; -import { subtensor, MultiAddress } from "@polkadot-api/descriptors"; describeSuite({ id: "01_scaling", diff --git a/ts-tests/utils/shield_helpers.ts b/ts-tests/utils/shield_helpers.ts index 24656b1208..a437e6591c 100644 --- a/ts-tests/utils/shield_helpers.ts +++ b/ts-tests/utils/shield_helpers.ts @@ -1,13 +1,26 @@ import type { KeyringPair } from "@moonwall/util"; +import { xchacha20poly1305 } from "@noble/ciphers/chacha.js"; +import type { subtensor } from "@polkadot-api/descriptors"; +import { hexToU8a } from "@polkadot/util"; import { xxhashAsU8a } from "@polkadot/util-crypto"; import { randomBytes } from "ethers"; -import { xchacha20poly1305 } from "@noble/ciphers/chacha.js"; import { MlKem768 } from "mlkem"; import { type TypedApi, Binary } from "polkadot-api"; -import type { subtensor } from "@polkadot-api/descriptors"; import { getSignerFromKeypair } from "./account.ts"; import { waitForFinalizedBlocks } from "./transactions.ts"; -import { hexToU8a } from "@polkadot/util"; + +const keyToBytes = (key: unknown): Uint8Array => { + if (key instanceof Uint8Array) { + return key; + } + if (typeof key === "object" && key !== null && "asBytes" in key) { + return (key as Binary).asBytes(); + } + if (typeof key === "string") { + return hexToU8a(key); + } + throw new Error(`Unexpected MEV shield key type: ${typeof key}`); +}; export const getNextKey = async (api: TypedApi): Promise => { // Query at "best" (not default "finalized") because keys rotate every block @@ -16,8 +29,7 @@ export const getNextKey = async (api: TypedApi): Promise) => { @@ -41,8 +53,7 @@ export const checkRuntime = async (api: TypedApi) => { export const getCurrentKey = async (api: TypedApi): Promise => { const key = await api.query.MevShield.CurrentKey.getValue({ at: "best" }); if (!key) return undefined; - if (key instanceof Binary) return key.asBytes(); - return hexToU8a(key as string); + return keyToBytes(key); }; export const encryptTransaction = async (plaintext: Uint8Array, publicKey: Uint8Array): Promise => { From 45309dc7ad27322e4884c197217ef97d5ecf2679 Mon Sep 17 00:00:00 2001 From: open-junius Date: Thu, 18 Jun 2026 09:34:03 +0800 Subject: [PATCH 29/36] remove it again --- .github/workflows/contract-tests.yml | 61 ---------------------------- 1 file changed, 61 deletions(-) delete mode 100644 .github/workflows/contract-tests.yml diff --git a/.github/workflows/contract-tests.yml b/.github/workflows/contract-tests.yml deleted file mode 100644 index a8182097a7..0000000000 --- a/.github/workflows/contract-tests.yml +++ /dev/null @@ -1,61 +0,0 @@ -name: Contract E2E Tests - -on: - pull_request: - - ## Allow running workflow manually from the Actions tab - workflow_dispatch: - inputs: - verbose: - description: "Output more information when triggered manually" - required: false - default: "" - -concurrency: - group: evm-tests-${{ github.ref }} - cancel-in-progress: true - -env: - CARGO_TERM_COLOR: always - VERBOSE: ${{ github.events.input.verbose }} - -permissions: - contents: read - -jobs: - run: - runs-on: [self-hosted, fireactions-light] - env: - RUST_BACKTRACE: full - steps: - - name: Check-out repository under $GITHUB_WORKSPACE - uses: actions/checkout@v4 - - - name: Install Rust - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - - - name: Utilize Shared Rust Cache - uses: Swatinem/rust-cache@v2 - - - name: Set up Node.js - uses: actions/setup-node@v4 - with: - node-version: "22" - - - name: Install dependencies - run: | - sudo DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a apt-get update - sudo DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a apt-get install -y --no-install-recommends -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" build-essential clang curl libssl-dev llvm libudev-dev protobuf-compiler nodejs pkg-config - - - name: Run tests - uses: nick-fields/retry@v3 - with: - timeout_minutes: 120 - max_attempts: 3 - retry_wait_seconds: 60 - command: | - cd ${{ github.workspace }} - npm install --global yarn - ./contract-tests/run-ci.sh From 1059a0e43e3e828e425aa9430fd931e4a26728c0 Mon Sep 17 00:00:00 2001 From: open-junius Date: Thu, 18 Jun 2026 11:19:28 +0800 Subject: [PATCH 30/36] update timeout value for dev --- ts-tests/moonwall.config.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ts-tests/moonwall.config.json b/ts-tests/moonwall.config.json index fabc4bc43d..2868529dfe 100644 --- a/ts-tests/moonwall.config.json +++ b/ts-tests/moonwall.config.json @@ -1,12 +1,12 @@ { "$schema": "https://raw.githubusercontent.com/Moonsong-Labs/moonwall/main/packages/types/config_schema.json", "label": "💃 MasterConfig", - "defaultTestTimeout": 120000, + "defaultTestTimeout": 600000, "scriptsDir": "scripts/", "environments": [ { "name": "dev", - "timeout": 120000, + "timeout": 600000, "envVars": ["DEBUG_COLORS=1"], "testFileDir": [ "suites/dev" @@ -36,7 +36,7 @@ ], "disableDefaultEthProviders": true, "newRpcBehaviour": true, - "maxStartupTimeout": 120000, + "maxStartupTimeout": 600000, "connectTimeout": 30000 } ] From fd9c65af446ae41f1f2c05fe0da2865705121947 Mon Sep 17 00:00:00 2001 From: open-junius Date: Thu, 18 Jun 2026 11:48:45 +0800 Subject: [PATCH 31/36] revert to multithread --- ts-tests/moonwall.config.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ts-tests/moonwall.config.json b/ts-tests/moonwall.config.json index 2868529dfe..60d80c4120 100644 --- a/ts-tests/moonwall.config.json +++ b/ts-tests/moonwall.config.json @@ -1,7 +1,7 @@ { "$schema": "https://raw.githubusercontent.com/Moonsong-Labs/moonwall/main/packages/types/config_schema.json", "label": "💃 MasterConfig", - "defaultTestTimeout": 600000, + "defaultTestTimeout": 120000, "scriptsDir": "scripts/", "environments": [ { @@ -15,7 +15,7 @@ "generate-types.sh", "build-spec.sh" ], - "multiThreads": false, + "multiThreads": true, "reporters": ["basic"], "foundation": { "type": "dev", From 831db6a3a8f2ed964093e23e31d89834d9a403fc Mon Sep 17 00:00:00 2001 From: open-junius Date: Tue, 23 Jun 2026 21:42:20 +0800 Subject: [PATCH 32/36] refactor code --- .../01-contract-deploy-call.test.ts | 45 ++++-------- .../zombienet_evm/03-wasm-contract.test.ts | 4 +- .../zombienet_evm/04-edge-cases.test.ts | 10 --- ts-tests/utils/admin_utils.ts | 23 ++++++- ts-tests/utils/evm.ts | 10 --- ts-tests/utils/index.ts | 2 + ts-tests/utils/staking.ts | 14 +++- ts-tests/utils/subnet.ts | 6 +- ts-tests/utils/subtensor.ts | 18 +++++ ts-tests/utils/wasm-contract.ts | 68 ------------------- 10 files changed, 72 insertions(+), 128 deletions(-) create mode 100644 ts-tests/utils/subtensor.ts diff --git a/ts-tests/suites/zombienet_evm/01-contract-deploy-call.test.ts b/ts-tests/suites/zombienet_evm/01-contract-deploy-call.test.ts index d64008d83b..f8976bc674 100644 --- a/ts-tests/suites/zombienet_evm/01-contract-deploy-call.test.ts +++ b/ts-tests/suites/zombienet_evm/01-contract-deploy-call.test.ts @@ -1,5 +1,5 @@ import { beforeAll, describeSuite, expect } from "@moonwall/cli"; -import { subtensor } from "@polkadot-api/descriptors"; +import { MultiAddress, subtensor } from "@polkadot-api/descriptors"; import type { KeyringPair } from "@polkadot/keyring/types"; import { u8aToHex } from "@polkadot/util"; import { decodeAddress } from "@polkadot/util-crypto"; @@ -18,19 +18,15 @@ import { createEthersWallet, disableWhiteListCheck, forceSetBalance, - forceSetChainID, generateKeyringPair, getBalance, getProxies, getStake, - getTransferCallCode, IPROXY_ADDRESS, IProxyABI, ISTAKING_V2_ADDRESS, IStakingV2ABI, raoToEth, - reconnectEthersWallet, - refreshEthersProvider, STAKE_WRAP_ABI, STAKE_WRAP_BYTECODE, startCall, @@ -48,6 +44,19 @@ async function expectDeployedContract(provider: ethers.Provider, contractAddress expect(code.includes(DEPLOYED_BYTECODE_PREFIX)).toBe(true); } +export async function getTransferCallCode( + api: TypedApi, + receiver: KeyringPair, + transferAmount: number +): Promise { + const unsignedTx = api.tx.Balances.transfer_keep_alive({ + dest: MultiAddress.Id(convertPublicKeyToSs58(receiver.publicKey)), + value: BigInt(transferAmount), + }); + const encodedCallDataBytes = await unsignedTx.getEncodedData(); + return [...encodedCallDataBytes.asBytes()]; +} + describeSuite({ id: "contract-deploy-call", title: "Contract deploy and precompile call tests", @@ -162,27 +171,6 @@ describeSuite({ return delegates; } - function refreshProviderAndWallets(): void { - provider = refreshEthersProvider(provider); - ethWallet = reconnectEthersWallet(ethWallet, provider); - if (proxyWalletsReady) { - stakeWallet = reconnectEthersWallet(stakeWallet, provider); - proxyWallet1 = reconnectEthersWallet(proxyWallet1, provider); - proxyWallet2 = reconnectEthersWallet(proxyWallet2, provider); - proxyWallet3 = reconnectEthersWallet(proxyWallet3, provider); - proxyWallet4 = reconnectEthersWallet(proxyWallet4, provider); - } - } - - async function ensureChainIdStable(): Promise { - const chainId = await api.query.EVMChainId.ChainId.getValue(); - if (chainId !== BigInt(42)) { - await forceSetChainID(api, BigInt(42)); - await waitForFinalizedBlocks(api, 1); - } - refreshProviderAndWallets(); - } - async function waitForBalanceIncrease( ss58Address: string, balanceBefore: bigint, @@ -366,7 +354,6 @@ describeSuite({ title: "Call createPureProxy, then use proxy to call transfer", test: async () => { await ensureProxyWalletsReady(); - await ensureChainIdStable(); const proxies = await getProxies(api, convertH160ToSS58(proxyWallet1.address)); const contract = new ethers.Contract(IPROXY_ADDRESS, IProxyABI, proxyWallet1); @@ -404,7 +391,6 @@ describeSuite({ title: "Call createPureProxy, add multiple proxies", test: async () => { await ensureProxyWalletsReady(); - await ensureChainIdStable(); const contract = new ethers.Contract(IPROXY_ADDRESS, IProxyABI, proxyWallet1); const type = 0; @@ -427,7 +413,6 @@ describeSuite({ title: "Call createPureProxy, edge cases, call via wrong proxy", test: async () => { await ensureProxyWalletsReady(); - await ensureChainIdStable(); const contract = new ethers.Contract(IPROXY_ADDRESS, IProxyABI, proxyWallet2); const amount = 1_000_000_000; @@ -446,7 +431,6 @@ describeSuite({ title: "Call createProxy, then use proxy to call transfer", test: async () => { await ensureProxyWalletsReady(); - await ensureChainIdStable(); const proxies = await api.query.Proxy.Proxies.getValue(convertH160ToSS58(proxyWallet2.address)); const contract = new ethers.Contract(IPROXY_ADDRESS, IProxyABI, proxyWallet2); @@ -502,7 +486,6 @@ describeSuite({ title: "Call addProxy many times, then check getProxies is correct", test: async () => { await ensureProxyWalletsReady(); - await ensureChainIdStable(); const proxies = await api.query.Proxy.Proxies.getValue(convertH160ToSS58(proxyWallet4.address)); const contract = new ethers.Contract(IPROXY_ADDRESS, IProxyABI, proxyWallet4); diff --git a/ts-tests/suites/zombienet_evm/03-wasm-contract.test.ts b/ts-tests/suites/zombienet_evm/03-wasm-contract.test.ts index 2caef4cb96..e7e567f87d 100644 --- a/ts-tests/suites/zombienet_evm/03-wasm-contract.test.ts +++ b/ts-tests/suites/zombienet_evm/03-wasm-contract.test.ts @@ -15,9 +15,9 @@ import { instantiateWasmContract, sendWasmContractExtrinsic, sendWasmContractExtrinsicAllowFailure, - setAdminFreezeWindow, setTargetRegistrationsPerInterval, startCall, + sudoSetAdminFreezeWindow, sudoSetLockReductionInterval, tao, waitForFinalizedBlocks, @@ -127,7 +127,7 @@ describeSuite({ api = context.papi("Node").getTypedApi(subtensor); await waitForFinalizedBlocks(api, 2); await sudoSetLockReductionInterval(api, 1); - await setAdminFreezeWindow(api); + await sudoSetAdminFreezeWindow(api, 0); inkClient = getInkClient(contracts.bittensor); faucet = generateKeyringPair("sr25519"); diff --git a/ts-tests/suites/zombienet_evm/04-edge-cases.test.ts b/ts-tests/suites/zombienet_evm/04-edge-cases.test.ts index d503987b6d..a3cbcf4c85 100644 --- a/ts-tests/suites/zombienet_evm/04-edge-cases.test.ts +++ b/ts-tests/suites/zombienet_evm/04-edge-cases.test.ts @@ -12,8 +12,6 @@ import { forceSetChainID, generateKeyringPair, getEthChainId, - reconnectEthersWallet, - refreshEthersProvider, IBALANCETRANSFER_ADDRESS, IBalanceTransferABI, raoToEth, @@ -51,12 +49,6 @@ describeSuite({ await waitForFinalizedBlocks(api, 1); }, 300000); - function refreshProviderAndWallets(): void { - provider = refreshEthersProvider(provider); - ethWallet = reconnectEthersWallet(ethWallet, provider); - ethWallet2 = reconnectEthersWallet(ethWallet2, provider); - } - async function getChainId(): Promise { return getEthChainId(provider); } @@ -71,14 +63,12 @@ describeSuite({ const newChainId = BigInt(100); await forceSetChainID(api, newChainId); await waitForFinalizedBlocks(api, 1); - refreshProviderAndWallets(); chainId = await getChainId(); expect(chainId).toEqual(newChainId); await forceSetChainID(api, BigInt(INIT_CHAIN_ID)); await waitForFinalizedBlocks(api, 1); - refreshProviderAndWallets(); chainId = await getChainId(); expect(chainId).toEqual(BigInt(INIT_CHAIN_ID)); diff --git a/ts-tests/utils/admin_utils.ts b/ts-tests/utils/admin_utils.ts index af1b591321..e6ecb6f953 100644 --- a/ts-tests/utils/admin_utils.ts +++ b/ts-tests/utils/admin_utils.ts @@ -1,7 +1,7 @@ +import type { subtensor } from "@polkadot-api/descriptors"; import { Keyring } from "@polkadot/keyring"; -import { waitForTransactionWithRetry } from "./transactions.js"; import type { TypedApi } from "polkadot-api"; -import type { subtensor } from "@polkadot-api/descriptors"; +import { waitForTransactionWithRetry } from "./transactions.js"; export async function sudoSetStakeThreshold(api: TypedApi, threshold: bigint): Promise { const keyring = new Keyring({ type: "sr25519" }); @@ -10,3 +10,22 @@ export async function sudoSetStakeThreshold(api: TypedApi, thr const tx = api.tx.Sudo.sudo({ call: inner.decodedCall }); await waitForTransactionWithRetry(api, tx, alice, "sudo_set_stake_threshold"); } + +export async function setTargetRegistrationsPerInterval( + api: TypedApi, + netuid: number +): Promise { + const keyring = new Keyring({ type: "sr25519" }); + const alice = keyring.addFromUri("//Alice"); + const internalTx = api.tx.AdminUtils.sudo_set_target_registrations_per_interval({ + netuid, + target_registrations_per_interval: 1000, + }); + const tx = api.tx.Sudo.sudo({ call: internalTx.decodedCall }); + await waitForTransactionWithRetry(api, tx, alice, "sudo_set_target_registrations_per_interval"); + + const target = await api.query.SubtensorModule.TargetRegistrationsPerInterval.getValue(netuid); + if (target !== 1000) { + throw new Error(`Expected TargetRegistrationsPerInterval=1000 for netuid ${netuid}, got ${target}`); + } +} diff --git a/ts-tests/utils/evm.ts b/ts-tests/utils/evm.ts index 0281c2344a..c4f35c1fba 100644 --- a/ts-tests/utils/evm.ts +++ b/ts-tests/utils/evm.ts @@ -31,16 +31,6 @@ export async function getEthChainId(provider: ethers.JsonRpcProvider): Promise, chainId: bigint): Promise { const value = await api.query.EVMChainId.ChainId.getValue(); if (value === chainId) { diff --git a/ts-tests/utils/index.ts b/ts-tests/utils/index.ts index 5c884448aa..8cbfbf9ce4 100644 --- a/ts-tests/utils/index.ts +++ b/ts-tests/utils/index.ts @@ -1,5 +1,6 @@ export * from "./account.ts"; export * from "./address.ts"; +export * from "./admin_utils.ts"; export * from "./balance.js"; export * from "./coldkey_swap.ts"; export * from "./evm-config.ts"; @@ -7,5 +8,6 @@ export * from "./evm.ts"; export * from "./shield_helpers.ts"; export * from "./staking.js"; export * from "./subnet.js"; +export * from "./subtensor.ts"; export * from "./transactions.js"; export * from "./wasm-contract.ts"; diff --git a/ts-tests/utils/staking.ts b/ts-tests/utils/staking.ts index 57c08e2501..7fd30b9281 100644 --- a/ts-tests/utils/staking.ts +++ b/ts-tests/utils/staking.ts @@ -1,8 +1,8 @@ -import { waitForTransactionWithRetry } from "./transactions.js"; import type { KeyringPair } from "@moonwall/util"; import type { subtensor } from "@polkadot-api/descriptors"; -import type { TypedApi } from "polkadot-api"; import { Keyring } from "@polkadot/keyring"; +import type { TypedApi } from "polkadot-api"; +import { waitForTransactionWithRetry } from "./transactions.js"; export async function addStake( api: TypedApi, @@ -437,3 +437,13 @@ export async function getTotalHotkeyAlpha( ): Promise { return await api.query.SubtensorModule.TotalHotkeyAlpha.getValue(hotkey, netuid); } + +export async function getStakeInfoForHotkeyColdkeyNetuid( + api: TypedApi, + hotkey: string, + coldkey: string, + netuid: number +): Promise { + return (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid(hotkey, coldkey, netuid)) + ?.stake; +} diff --git a/ts-tests/utils/subnet.ts b/ts-tests/utils/subnet.ts index e5b26e81ff..e08a0d1ecc 100644 --- a/ts-tests/utils/subnet.ts +++ b/ts-tests/utils/subnet.ts @@ -1,9 +1,9 @@ -import { waitForTransactionWithRetry } from "./transactions.js"; -import { log } from "./logger.js"; import type { KeyringPair } from "@moonwall/util"; -import { Keyring } from "@polkadot/keyring"; import type { subtensor } from "@polkadot-api/descriptors"; +import { Keyring } from "@polkadot/keyring"; import type { TypedApi } from "polkadot-api"; +import { log } from "./logger.js"; +import { waitForTransactionWithRetry } from "./transactions.js"; export async function addNewSubnetwork( api: TypedApi, diff --git a/ts-tests/utils/subtensor.ts b/ts-tests/utils/subtensor.ts new file mode 100644 index 0000000000..f6090a67ca --- /dev/null +++ b/ts-tests/utils/subtensor.ts @@ -0,0 +1,18 @@ +import { subtensor } from "@polkadot-api/descriptors"; +import type { TypedApi } from "polkadot-api"; + +export async function getProxies(api: TypedApi, address: string): Promise { + const entries = await api.query.Proxy.Proxies.getEntries(); + const result: string[] = []; + for (const entry of entries) { + const proxyAddress = entry.keyArgs[0]; + const values = entry.value; + const proxies = values[0]; + for (const proxy of proxies) { + if (proxy.delegate === address) { + result.push(proxyAddress); + } + } + } + return result; +} diff --git a/ts-tests/utils/wasm-contract.ts b/ts-tests/utils/wasm-contract.ts index b08defdaea..b4f3f6650f 100644 --- a/ts-tests/utils/wasm-contract.ts +++ b/ts-tests/utils/wasm-contract.ts @@ -1,71 +1,13 @@ import { MultiAddress, subtensor } from "@polkadot-api/descriptors"; -import { Keyring } from "@polkadot/keyring"; import type { KeyringPair } from "@polkadot/keyring/types"; import type { TypedApi } from "polkadot-api"; import { Binary } from "polkadot-api"; import { convertPublicKeyToSs58 } from "./address.ts"; import { getBalance } from "./balance.ts"; -import { sudoSetAdminFreezeWindow } from "./staking.ts"; import { sendTransaction, waitForFinalizedBlocks, waitForTransactionWithRetry } from "./transactions.ts"; export const BITTENSOR_WASM_PATH = "./ink/bittensor.wasm"; -export async function getTransferCallCode( - api: TypedApi, - receiver: KeyringPair, - transferAmount: number -): Promise { - const unsignedTx = api.tx.Balances.transfer_keep_alive({ - dest: MultiAddress.Id(convertPublicKeyToSs58(receiver.publicKey)), - value: BigInt(transferAmount), - }); - const encodedCallDataBytes = await unsignedTx.getEncodedData(); - return [...encodedCallDataBytes.asBytes()]; -} - -export async function getProxies(api: TypedApi, address: string): Promise { - const entries = await api.query.Proxy.Proxies.getEntries(); - const result: string[] = []; - for (const entry of entries) { - const proxyAddress = entry.keyArgs[0]; - const values = entry.value; - const proxies = values[0]; - for (const proxy of proxies) { - if (proxy.delegate === address) { - result.push(proxyAddress); - } - } - } - return result; -} - -export async function setAdminFreezeWindow(api: TypedApi): Promise { - await sudoSetAdminFreezeWindow(api, 0); - const window = await api.query.SubtensorModule.AdminFreezeWindow.getValue(); - if (window !== 0) { - throw new Error(`Expected AdminFreezeWindow=0, got ${window}`); - } -} - -export async function setTargetRegistrationsPerInterval( - api: TypedApi, - netuid: number -): Promise { - const keyring = new Keyring({ type: "sr25519" }); - const alice = keyring.addFromUri("//Alice"); - const internalTx = api.tx.AdminUtils.sudo_set_target_registrations_per_interval({ - netuid, - target_registrations_per_interval: 1000, - }); - const tx = api.tx.Sudo.sudo({ call: internalTx.decodedCall }); - await waitForTransactionWithRetry(api, tx, alice, "sudo_set_target_registrations_per_interval"); - - const target = await api.query.SubtensorModule.TargetRegistrationsPerInterval.getValue(netuid); - if (target !== 1000) { - throw new Error(`Expected TargetRegistrationsPerInterval=1000 for netuid ${netuid}, got ${target}`); - } -} - export async function sendWasmContractExtrinsic( api: TypedApi, coldkey: KeyringPair, @@ -106,16 +48,6 @@ export async function sendWasmContractExtrinsicAllowFailure( await sendTransaction(tx, coldkey); } -export async function getStakeInfoForHotkeyColdkeyNetuid( - api: TypedApi, - hotkey: string, - coldkey: string, - netuid: number -): Promise { - return (await api.apis.StakeInfoRuntimeApi.get_stake_info_for_hotkey_coldkey_netuid(hotkey, coldkey, netuid)) - ?.stake; -} - export async function instantiateWasmContract( api: TypedApi, coldkey: KeyringPair, From 8a65acbfac2b554e1aa07b4b6d41269939d30372 Mon Sep 17 00:00:00 2001 From: open-junius Date: Tue, 23 Jun 2026 22:49:05 +0800 Subject: [PATCH 33/36] remove unneeded change --- ts-tests/moonwall.config.json | 4 ++-- ts-tests/utils/balance.ts | 5 +++-- ts-tests/utils/staking.ts | 4 ++-- ts-tests/utils/subnet.ts | 6 +++--- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/ts-tests/moonwall.config.json b/ts-tests/moonwall.config.json index 60d80c4120..f372f6563d 100644 --- a/ts-tests/moonwall.config.json +++ b/ts-tests/moonwall.config.json @@ -6,7 +6,7 @@ "environments": [ { "name": "dev", - "timeout": 600000, + "timeout": 120000, "envVars": ["DEBUG_COLORS=1"], "testFileDir": [ "suites/dev" @@ -36,7 +36,7 @@ ], "disableDefaultEthProviders": true, "newRpcBehaviour": true, - "maxStartupTimeout": 600000, + "maxStartupTimeout": 120000, "connectTimeout": 30000 } ] diff --git a/ts-tests/utils/balance.ts b/ts-tests/utils/balance.ts index 53f8218e66..ce739e57c2 100644 --- a/ts-tests/utils/balance.ts +++ b/ts-tests/utils/balance.ts @@ -1,7 +1,7 @@ import type { subtensor } from "@polkadot-api/descriptors"; import { Keyring } from "@polkadot/keyring"; import type { TypedApi } from "polkadot-api"; -import { waitForTransactionWithRetry } from "./transactions.js"; +import { waitForFinalizedBlocks, waitForTransactionWithRetry } from "./transactions.js"; export const TAO = BigInt(1000000000); // 10^9 RAO per TAO export const GWEI = BigInt(1000000000); export const MAX_TX_FEE = BigInt(21000000) * GWEI; @@ -37,5 +37,6 @@ export async function forceSetBalance( new_free: amount, }); const tx = api.tx.Sudo.sudo({ call: internalCall.decodedCall }); - await waitForTransactionWithRetry(api, tx, alice, "force_set_balance", 5); + await waitForTransactionWithRetry(api, tx, alice, "force_set_balance"); + await waitForFinalizedBlocks(api, 1); } diff --git a/ts-tests/utils/staking.ts b/ts-tests/utils/staking.ts index 7fd30b9281..79c432b17b 100644 --- a/ts-tests/utils/staking.ts +++ b/ts-tests/utils/staking.ts @@ -371,7 +371,7 @@ export async function sudoSetAdminFreezeWindow(api: TypedApi, window: window, }); const tx = api.tx.Sudo.sudo({ call: internalCall.decodedCall }); - await waitForTransactionWithRetry(api, tx, alice, "sudo_set_admin_freeze_window", 5); + await waitForTransactionWithRetry(api, tx, alice, "sudo_set_admin_freeze_window"); } export async function sudoSetEmaPriceHalvingPeriod( @@ -396,7 +396,7 @@ export async function sudoSetLockReductionInterval(api: TypedApi, alpha: bigint): Promise { diff --git a/ts-tests/utils/subnet.ts b/ts-tests/utils/subnet.ts index e08a0d1ecc..5f9d9e8a33 100644 --- a/ts-tests/utils/subnet.ts +++ b/ts-tests/utils/subnet.ts @@ -25,7 +25,7 @@ export async function addNewSubnetwork( const registerNetworkTx = api.tx.SubtensorModule.register_network({ hotkey: hotkey.address, }); - await waitForTransactionWithRetry(api, registerNetworkTx, coldkey, "register_network", 5); + await waitForTransactionWithRetry(api, registerNetworkTx, coldkey, "register_network"); return totalNetworks; } @@ -44,7 +44,7 @@ export async function burnedRegister( await new Promise((resolve) => setTimeout(resolve, 1000)); const tx = api.tx.SubtensorModule.burned_register({ hotkey: hotkeyAddress, netuid: netuid }); - await waitForTransactionWithRetry(api, tx, coldkey, "burned_register", 5); + await waitForTransactionWithRetry(api, tx, coldkey, "burned_register"); } export async function startCall(api: TypedApi, netuid: number, coldkey: KeyringPair): Promise { @@ -66,7 +66,7 @@ export async function startCall(api: TypedApi, netuid: number, await new Promise((resolve) => setTimeout(resolve, 2000)); const tx = api.tx.SubtensorModule.start_call({ netuid: netuid }); - await waitForTransactionWithRetry(api, tx, coldkey, "start_call", 5); + await waitForTransactionWithRetry(api, tx, coldkey, "start_call"); await new Promise((resolve) => setTimeout(resolve, 1000)); } From 3659e89268f70dd204e5f51007152f8c666597d2 Mon Sep 17 00:00:00 2001 From: open-junius Date: Wed, 24 Jun 2026 10:23:55 +0800 Subject: [PATCH 34/36] remove unused scripts for dev --- ts-tests/moonwall.config.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/ts-tests/moonwall.config.json b/ts-tests/moonwall.config.json index f372f6563d..4343ed7993 100644 --- a/ts-tests/moonwall.config.json +++ b/ts-tests/moonwall.config.json @@ -12,8 +12,6 @@ "suites/dev" ], "runScripts": [ - "generate-types.sh", - "build-spec.sh" ], "multiThreads": true, "reporters": ["basic"], From b5c15e6d578785907e89e1416ce6faf974399b6a Mon Sep 17 00:00:00 2001 From: open-junius Date: Wed, 24 Jun 2026 10:58:16 +0800 Subject: [PATCH 35/36] avoid use all utils dependency --- .../suites/dev/subtensor/limit-orders/test-pallet-status.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ts-tests/suites/dev/subtensor/limit-orders/test-pallet-status.ts b/ts-tests/suites/dev/subtensor/limit-orders/test-pallet-status.ts index f61e6d823a..1864704177 100644 --- a/ts-tests/suites/dev/subtensor/limit-orders/test-pallet-status.ts +++ b/ts-tests/suites/dev/subtensor/limit-orders/test-pallet-status.ts @@ -1,7 +1,7 @@ import { beforeAll, describeSuite, expect } from "@moonwall/cli"; -import type { ApiPromise } from "@polkadot/api"; import type { KeyringPair } from "@moonwall/util"; -import { tao } from "../../../../utils"; +import type { ApiPromise } from "@polkadot/api"; +import { tao } from "../../../../utils/balance.js"; import { devForceSetBalance } from "../../../../utils/dev-helpers.js"; import { buildSignedOrder, FAR_FUTURE, filterEvents, registerLimitOrderTypes } from "../../../../utils/limit-orders.js"; From d8fe37fb0a35fa15d568fb35e92325956fa9a001 Mon Sep 17 00:00:00 2001 From: open-junius Date: Wed, 24 Jun 2026 13:29:38 +0800 Subject: [PATCH 36/36] add generate type back to dev --- ts-tests/moonwall.config.json | 1 + 1 file changed, 1 insertion(+) diff --git a/ts-tests/moonwall.config.json b/ts-tests/moonwall.config.json index 4343ed7993..710ea06d02 100644 --- a/ts-tests/moonwall.config.json +++ b/ts-tests/moonwall.config.json @@ -12,6 +12,7 @@ "suites/dev" ], "runScripts": [ + "generate-types.sh" ], "multiThreads": true, "reporters": ["basic"],