From 204908ca6a0c9b36e131db4c958415e4c5c6670e Mon Sep 17 00:00:00 2001 From: open-junius Date: Thu, 4 Jun 2026 21:04:00 +0800 Subject: [PATCH 01/31] 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/31] 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/31] 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/31] 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/31] 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/31] 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/31] 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/31] 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/31] 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/31] 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/31] 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/31] 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/31] 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/31] 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/31] 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/31] 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/31] 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/31] 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/31] 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/31] 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/31] 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/31] 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/31] 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/31] 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/31] 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/31] 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/31] 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/31] 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/31] 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/31] 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/31] 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",