From b147520a4d3b7c15988c09632ec492ea3cad6af7 Mon Sep 17 00:00:00 2001 From: npty <78221556+npty@users.noreply.github.com> Date: Thu, 18 Jul 2024 15:34:24 +0700 Subject: [PATCH 1/7] feat: script to deploy gas service (#261) Co-authored-by: Milap Sheth --- sui/README.md | 7 ++++ sui/deploy-contract.js | 75 ++++++++++++++++++++++++++++++++++++++++++ sui/utils.js | 6 ++++ 3 files changed, 88 insertions(+) create mode 100644 sui/deploy-contract.js diff --git a/sui/README.md b/sui/README.md index a1431007..87897d3c 100644 --- a/sui/README.md +++ b/sui/README.md @@ -33,6 +33,7 @@ If you want to run against a local Sui network, then create a `axelar-chains-con "networkType": "localnet", "tokenSymbol": "SUI", "rpc": "http://127.0.0.1:9000", + "faucetUrl": "http://127.0.0.1:9123", "contracts": {} } } @@ -70,6 +71,12 @@ node sui/deploy-gateway.js --signers wallet --nonce test node sui/deploy-gateway.js -e testnet --signers '{"signers": [{"pubkey": "0x020194ead85b350d90472117e6122cf1764d93bf17d6de4b51b03d19afc4d6302b", "weight": 1}], "threshold": 1, "nonce": "0x0000000000000000000000000000000000000000000000000000000000000000"}' ``` +Deploy the Gas Service package: + +```bash +node sui/deploy-contract.js GasService +``` + Deploy the test GMP package: ```bash diff --git a/sui/deploy-contract.js b/sui/deploy-contract.js new file mode 100644 index 00000000..8692bf1b --- /dev/null +++ b/sui/deploy-contract.js @@ -0,0 +1,75 @@ +const { saveConfig, printInfo } = require('../evm/utils'); +const { Command, Argument, Option } = require('commander'); +const { publishPackage, updateMoveToml } = require('@axelar-network/axelar-cgp-sui/scripts/publish-package'); + +const { addBaseOptions } = require('./cli-utils'); +const { getWallet, printWalletInfo } = require('./sign-utils'); +const { loadSuiConfig, findPublishedObject } = require('./utils'); + +// Add more contracts here to support more modules deployment +const contractMap = { + GasService: { + packageName: 'gas_service', + }, +}; + +async function processCommand(contractName, config, chain, options) { + const contract = contractMap[contractName]; + const packageName = options.packageName || contract.packageName; + + const [keypair, client] = getWallet(chain, options); + + await printWalletInfo(keypair, client, chain, options); + + if (!chain.contracts[contractName]) { + chain.contracts[contractName] = {}; + } + + const published = await publishPackage(packageName, client, keypair); + const packageId = published.packageId; + + updateMoveToml(packageName, packageId); + + const contractObject = findPublishedObject(published, packageName, contractName); + const gasCollectorCapObject = findPublishedObject(published, packageName, 'GasCollectorCap'); + + const contractConfig = chain.contracts[contractName]; + contractConfig.address = packageId; + contractConfig.objects = { + [contractName]: contractObject.objectId, + }; + + switch (contractName) { + case 'GasService': + contractConfig.objects.GasCollectorCap = gasCollectorCapObject.objectId; + break; + default: + throw new Error(`${contractName} is not supported.`); + } + + printInfo(`${contractName} deployed`, JSON.stringify(contractConfig, null, 2)); +} + +async function mainProcessor(contractName, options, processor) { + const config = loadSuiConfig(options.env); + await processor(contractName, config, config.sui, options); + saveConfig(config, options.env); +} + +if (require.main === module) { + const program = new Command(); + + program + .name('deploy-contract') + .addOption(new Option('--packageName ', 'Package name to deploy')) + .addArgument(new Argument('', 'Contract name to deploy').choices(Object.keys(contractMap))) + .description('Deploy SUI modules'); + + addBaseOptions(program); + + program.action((contractName, options) => { + mainProcessor(contractName, options, processCommand); + }); + + program.parse(); +} diff --git a/sui/utils.js b/sui/utils.js index ea857e6e..295aeb01 100644 --- a/sui/utils.js +++ b/sui/utils.js @@ -48,7 +48,13 @@ const loadSuiConfig = (env) => { return config; }; +const findPublishedObject = (published, packageName, contractName) => { + const packageId = published.packageId; + return published.publishTxn.objectChanges.find((change) => change.objectType === `${packageId}::${packageName}::${contractName}`); +}; + module.exports = { getAmplifierSigners, loadSuiConfig, + findPublishedObject, }; From 2ffd250b5aa82978e3d21d68d443d4555e6ddc9e Mon Sep 17 00:00:00 2001 From: CJ Cobb <46455409+cjcobb23@users.noreply.github.com> Date: Thu, 18 Jul 2024 02:54:15 -0600 Subject: [PATCH 2/7] chore: update router code id in devnet configs (#305) Co-authored-by: Milap Sheth --- axelar-chains-config/info/devnet-amplifier.json | 2 +- axelar-chains-config/info/devnet-verifiers.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/axelar-chains-config/info/devnet-amplifier.json b/axelar-chains-config/info/devnet-amplifier.json index 8fe0b0e1..ddf9f00b 100644 --- a/axelar-chains-config/info/devnet-amplifier.json +++ b/axelar-chains-config/info/devnet-amplifier.json @@ -277,7 +277,7 @@ "Router": { "adminAddress": "axelar1zlr7e5qf3sz7yf890rkh9tcnu87234k6k7ytd9", "governanceAddress": "axelar1zlr7e5qf3sz7yf890rkh9tcnu87234k6k7ytd9", - "codeId": 498, + "codeId": 509, "address": "axelar14jjdxqhuxk803e9pq64w4fgf385y86xxhkpzswe9crmu6vxycezst0zq8y" }, "Multisig": { diff --git a/axelar-chains-config/info/devnet-verifiers.json b/axelar-chains-config/info/devnet-verifiers.json index c15ddc32..99c60685 100644 --- a/axelar-chains-config/info/devnet-verifiers.json +++ b/axelar-chains-config/info/devnet-verifiers.json @@ -371,7 +371,7 @@ "Router": { "adminAddress": "axelar19vvhwq57656hqfczhxw3r874l29jtd3uns4fsu", "governanceAddress": "axelar19vvhwq57656hqfczhxw3r874l29jtd3uns4fsu", - "codeId": 45, + "codeId": 49, "address": "axelar1q3g7fdqfpftqfpuakwn7x037k80wv35jj9ged7v5e798pds7hnasgj6azz" }, "Multisig": { From 00c1b9b4cb25c239c4ced0bd8ead0587e3ca2940 Mon Sep 17 00:00:00 2001 From: Milap Sheth Date: Thu, 18 Jul 2024 05:18:16 -0400 Subject: [PATCH 3/7] fix(evm): support create3 deployed address prediction (#302) --- evm/deploy-amplifier-gateway.js | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/evm/deploy-amplifier-gateway.js b/evm/deploy-amplifier-gateway.js index 89ee6b7c..2c9c4a54 100644 --- a/evm/deploy-amplifier-gateway.js +++ b/evm/deploy-amplifier-gateway.js @@ -7,7 +7,7 @@ const { ContractFactory, Contract, Wallet, - utils: { defaultAbiCoder, getContractAddress, keccak256, hexlify }, + utils: { defaultAbiCoder, keccak256, hexlify }, getDefaultProvider, } = ethers; @@ -26,6 +26,8 @@ const { getContractConfig, isString, getWeightedSigners, + getContractJSON, + getDeployedAddress, } = require('./utils'); const { calculateDomainSeparator, isValidCosmosAddress } = require('../cosmwasm/utils'); const { addExtendedOptions } = require('./cli-utils'); @@ -107,7 +109,7 @@ async function deploy(config, chain, options) { if (owner !== wallet.address) { printWarn( - 'Governance address is not set to the wallet address. This is needed for official deployment and is transferred after deployment', + 'Owner address is not set to the wallet address. This is needed for official deployment and is transferred after deployment', ); } @@ -120,6 +122,7 @@ async function deploy(config, chain, options) { const deployerContract = options.deployMethod === 'create3' ? chain.contracts.Create3Deployer?.address : chain.contracts.ConstAddressDeployer?.address; + const salt = options.salt || 'AxelarAmplifierGateway'; let gateway; let proxyAddress; @@ -134,11 +137,20 @@ async function deploy(config, chain, options) { printInfo('Reusing Gateway Proxy address', proxyAddress); gateway = gatewayFactory.attach(proxyAddress); } else { - const transactionCount = await wallet.getTransactionCount(); - proxyAddress = getContractAddress({ - from: wallet.address, - nonce: transactionCount + 1, + if (options.deployMethod === 'create2') { + // TODO: support create2 prediction + printError('create2 prediction is not supported yet'); + } + + proxyAddress = await getDeployedAddress(wallet.address, options.deployMethod, { + salt, + deployerContract, + contractJson: getContractJSON('AxelarAmplifierGatewayProxy'), + constructorArgs: [], // TODO: populate constructor args for create2 prediction to work + provider: wallet.provider, + nonce: (await wallet.getTransactionCount()) + 1, }); + printInfo('Predicted gateway proxy address', proxyAddress, chalk.cyan); } @@ -155,6 +167,7 @@ async function deploy(config, chain, options) { if (existingAddress !== undefined && proxyAddress !== existingAddress) { printWarn(`Predicted address ${proxyAddress} does not match existing deployment ${existingAddress} in chain configs.`); printWarn('For official deployment, recheck the deployer, salt, args, or contract bytecode.'); + printWarn('This is NOT required if the deployments are done by different integrators'); } if (predictOnly || prompt(`Does derived address match existing gateway deployments? Proceed with deployment on ${chain.name}?`, yes)) { @@ -164,7 +177,6 @@ async function deploy(config, chain, options) { contractConfig.deployer = wallet.address; const domainSeparator = await getDomainSeparator(config, chain, options); const minimumRotationDelay = Number(options.minimumRotationDelay); - const salt = options.salt || 'AxelarAmplifierGateway'; printInfo(`Deploying gateway implementation contract`); printInfo('Gateway Implementation args', `${options.previousSignersRetention}, ${domainSeparator}, ${minimumRotationDelay}`); @@ -235,7 +247,7 @@ async function deploy(config, chain, options) { printInfo(`Existing owner`, ownerAddress); if (!reuseProxy && owner !== ownerAddress) { - printError(`ERROR: Retrieved governance address is different:`); + printError(`ERROR: Retrieved owner address is different:`); printError(` Actual: ${ownerAddress}`); printError(` Expected: ${owner}`); error = true; From 837621b212af765bf332755bcf5aa1e85c529b49 Mon Sep 17 00:00:00 2001 From: npty <78221556+npty@users.noreply.github.com> Date: Thu, 18 Jul 2024 16:23:00 +0700 Subject: [PATCH 4/7] feat: add gas service commands (#296) --- sui/README.md | 16 +++- sui/amount-utils.js | 16 ++++ sui/cli-utils.js | 28 +++++- sui/gas-service.js | 219 ++++++++++++++++++++++++++++++++++++++++++++ sui/types-utils.js | 12 +++ sui/utils.js | 14 +++ 6 files changed, 300 insertions(+), 5 deletions(-) create mode 100644 sui/amount-utils.js create mode 100644 sui/gas-service.js diff --git a/sui/README.md b/sui/README.md index 87897d3c..4fb3e275 100644 --- a/sui/README.md +++ b/sui/README.md @@ -51,7 +51,7 @@ node sui/faucet.js Deploy the gateway package: -- By querying the signer set from the Amplifier contract (this only works if Amplifier contracts have been setup): +- By querying the signer set from the Amplifier contract (this only works if Amplifier contracts have been setup): ```bash node sui/deploy-gateway.js @@ -59,13 +59,13 @@ node sui/deploy-gateway.js Use `--help` flag to see other setup params that can be overridden. -- For testing convenience, you can use the secp256k1 wallet as the signer set for the gateway. +- For testing convenience, you can use the secp256k1 wallet as the signer set for the gateway. ```bash node sui/deploy-gateway.js --signers wallet --nonce test ``` -- You can also provide a JSON object with a full signer set: +- You can also provide a JSON object with a full signer set: ```bash node sui/deploy-gateway.js -e testnet --signers '{"signers": [{"pubkey": "0x020194ead85b350d90472117e6122cf1764d93bf17d6de4b51b03d19afc4d6302b", "weight": 1}], "threshold": 1, "nonce": "0x0000000000000000000000000000000000000000000000000000000000000000"}' @@ -89,6 +89,14 @@ Call Contract: node sui/gateway.js call-contract ethereum 0xba76c6980428A0b10CFC5d8ccb61949677A61233 0x1234 ``` +Pay for gas: + +The syntax is `node sui/gas-service.js payGas --amount ` + +```bash +node sui/gas-service.js payGas --amount 0.1 ethereum 0x6f24A47Fc8AE5441Eb47EFfC3665e70e69Ac3F05 0xba76c6980428A0b10CFC5d8ccb61949677A61233 0x1234 +``` + Approve messages: If the gateway was deployed using the wallet, you can submit a message approval with it @@ -189,7 +197,7 @@ example for adding multisig info to chains config: "publicKey": "AIqrCb324p6Qd4srkqCzn9NJHS7W17tA7r3t7Ur6aYN", "weight": 1, "schemeType": "ed25519" - }, + }, . . . diff --git a/sui/amount-utils.js b/sui/amount-utils.js new file mode 100644 index 00000000..8fa5bfee --- /dev/null +++ b/sui/amount-utils.js @@ -0,0 +1,16 @@ +const { ethers } = require('ethers'); + +// Convert formatted amount to atomic units (e.g. 1000000000). Default decimals is 9 for SUI +function getUnitAmount(amount, decimals = 9) { + return ethers.utils.parseUnits(amount, decimals).toBigInt(); +} + +// Convert atomic amount to formatted units (e.g. 1.0) with decimals. Default decimals is 9 for SUI +function getFormattedAmount(amount, decimals = 9) { + return ethers.utils.formatUnits(amount, decimals); +} + +module.exports = { + getUnitAmount, + getFormattedAmount, +}; diff --git a/sui/cli-utils.js b/sui/cli-utils.js index 1ef5569b..d36d9712 100644 --- a/sui/cli-utils.js +++ b/sui/cli-utils.js @@ -2,7 +2,8 @@ require('dotenv').config(); -const { Option } = require('commander'); +const { Option, InvalidArgumentError } = require('commander'); +const { getUnitAmount } = require('./amount-utils'); const addBaseOptions = (program, options = {}) => { program.addOption( @@ -51,7 +52,32 @@ const addExtendedOptions = (program, options = {}) => { return program; }; +// `optionMethod` is a method such as `addBaseOptions` +// `options` is an option object for optionMethod +const addOptionsToCommands = (program, optionMethod, options) => { + if (program.commands.length > 0) { + program.commands.forEach((command) => { + optionMethod(command, options); + }); + } + + optionMethod(program, options); +}; + +// Custom option processing for amount. https://github.com/tj/commander.js?tab=readme-ov-file#custom-option-processing +// The user is expected to pass a full amount (e.g. 1.0), and this option parser will convert it to smallest units (e.g. 1000000000). +// Note that this function will use decimals of 9 for SUI. So, other tokens with different decimals will not work. +const parseSuiUnitAmount = (value, previous) => { + try { + return getUnitAmount(value); + } catch (error) { + throw new InvalidArgumentError('Please use the correct format (e.g. 1.0)'); + } +}; + module.exports = { addBaseOptions, addExtendedOptions, + addOptionsToCommands, + parseSuiUnitAmount, }; diff --git a/sui/gas-service.js b/sui/gas-service.js new file mode 100644 index 00000000..fec7fb5f --- /dev/null +++ b/sui/gas-service.js @@ -0,0 +1,219 @@ +const { saveConfig, printInfo, printError } = require('../evm/utils'); +const { Command } = require('commander'); +const { TransactionBlock } = require('@mysten/sui.js/transactions'); +const { bcs } = require('@mysten/sui.js/bcs'); +const { gasServiceStruct } = require('./types-utils'); +const { loadSuiConfig, getBcsBytesByObjectId } = require('./utils'); +const { ethers } = require('hardhat'); +const { getFormattedAmount } = require('./amount-utils'); +const { + utils: { arrayify }, +} = ethers; + +const { addOptionsToCommands, addBaseOptions, parseSuiUnitAmount } = require('./cli-utils'); +const { getWallet, printWalletInfo, broadcast } = require('./sign-utils'); + +async function payGas(keypair, client, gasServiceConfig, args, options) { + const walletAddress = keypair.toSuiAddress(); + + const gasServicePackageId = gasServiceConfig.address; + + const refundAddress = options.refundAddress || walletAddress; + const params = options.params || '0x'; + + const [destinationChain, destinationAddress, channelId, payload] = args; + const unitAmount = options.amount; + + const tx = new TransactionBlock(); + const [coin] = tx.splitCoins(tx.gas, [unitAmount]); + + tx.moveCall({ + target: `${gasServicePackageId}::gas_service::pay_gas`, + arguments: [ + tx.object(gasServiceConfig.objects.GasService), + coin, // Coin + tx.pure.address(channelId), // Channel address + tx.pure(bcs.string().serialize(destinationChain).toBytes()), // Destination chain + tx.pure(bcs.string().serialize(destinationAddress).toBytes()), // Destination address + tx.pure(bcs.vector(bcs.u8()).serialize(arrayify(payload)).toBytes()), // Payload + tx.pure.address(refundAddress), // Refund address + tx.pure(bcs.vector(bcs.u8()).serialize(arrayify(params)).toBytes()), // Params + ], + }); + + const receipt = await broadcast(client, keypair, tx); + + printInfo('Gas paid', receipt.digest); +} + +async function addGas(keypair, client, gasServiceConfig, args, options) { + const walletAddress = keypair.toSuiAddress(); + + const gasServicePackageId = gasServiceConfig.address; + + const refundAddress = options.refundAddress || walletAddress; + const params = options.params || '0x'; + + const [messageId] = args; + const unitAmount = options.amount; + + const tx = new TransactionBlock(); + const [coin] = tx.splitCoins(tx.gas, [unitAmount]); + + tx.moveCall({ + target: `${gasServicePackageId}::gas_service::add_gas`, + arguments: [ + tx.object(gasServiceConfig.objects.GasService), + coin, // Coin + tx.pure(bcs.string().serialize(messageId).toBytes()), // Message ID for the contract call + tx.pure.address(refundAddress), // Refund address + tx.pure(bcs.vector(bcs.u8()).serialize(arrayify(params)).toBytes()), // Params + ], + }); + + const receipt = await broadcast(client, keypair, tx); + + printInfo('Gas added', receipt.digest); +} + +async function collectGas(keypair, client, gasServiceConfig, args, options) { + const walletAddress = keypair.toSuiAddress(); + + const gasServicePackageId = gasServiceConfig.address; + const gasServiceObjectId = gasServiceConfig.objects.GasService; + + const unitAmount = options.amount; + const receiver = options.receiver || walletAddress; + + const bytes = await getBcsBytesByObjectId(client, gasServiceObjectId); + const { balance: gasServiceBalance } = gasServiceStruct.parse(bytes); + + // Check if the gas service balance is sufficient + if (gasServiceBalance < unitAmount) { + printError('Insufficient gas service balance', `${getFormattedAmount(gasServiceBalance)} < ${getFormattedAmount(unitAmount)}`); + return; + } + + const tx = new TransactionBlock(); + + tx.moveCall({ + target: `${gasServicePackageId}::gas_service::collect_gas`, + arguments: [ + tx.object(gasServiceConfig.objects.GasService), + tx.object(gasServiceConfig.objects.GasCollectorCap), + tx.pure.address(receiver), // Receiver address + tx.pure.u64(unitAmount), // Amount + ], + }); + + const receipt = await broadcast(client, keypair, tx); + + printInfo('Gas collected', receipt.digest); +} + +async function refund(keypair, client, gasServiceConfig, args, options) { + const walletAddress = keypair.toSuiAddress(); + + const gasServicePackageId = gasServiceConfig.address; + const gasServiceObjectId = gasServiceConfig.objects.GasService; + + const [messageId] = args; + const unitAmount = options.amount; + const receiver = options.receiver || walletAddress; + + const bytes = await getBcsBytesByObjectId(client, gasServiceObjectId); + const { balance: gasServiceBalance } = gasServiceStruct.parse(bytes); + + // Check if the gas service balance is sufficient + if (gasServiceBalance < unitAmount) { + printError('Insufficient gas service balance', `${getFormattedAmount(gasServiceBalance)} < ${getFormattedAmount(unitAmount)}`); + return; + } + + const tx = new TransactionBlock(); + tx.moveCall({ + target: `${gasServicePackageId}::gas_service::refund`, + arguments: [ + tx.object(gasServiceConfig.objects.GasService), + tx.object(gasServiceConfig.objects.GasCollectorCap), + tx.pure(bcs.string().serialize(messageId).toBytes()), // Message ID for the contract call + tx.pure.address(receiver), // Refund address + tx.pure.u64(unitAmount), // Amount + ], + }); + + const receipt = await broadcast(client, keypair, tx); + + printInfo('Gas refunded', receipt.digest); +} + +async function processCommand(command, chain, args, options) { + const [keypair, client] = getWallet(chain, options); + + await printWalletInfo(keypair, client, chain, options); + + if (!chain.contracts.GasService) { + throw new Error('GasService contract not found'); + } + + await command(keypair, client, chain.contracts.GasService, args, options); +} + +async function mainProcessor(options, args, processor, command) { + const config = loadSuiConfig(options.env); + await processor(command, config.sui, args, options); + saveConfig(config, options.env); +} + +if (require.main === module) { + const program = new Command(); + + program.name('gas-service').description('Interact with the gas service contract.'); + + const payGasCmd = new Command() + .command('payGas ') + .description('Pay gas for the new contract call.') + .option('--refundAddress ', 'Refund address. Default is the sender address.') + .requiredOption('--amount ', 'Amount to pay gas', parseSuiUnitAmount) + .option('--params ', 'Params. Default is empty.') + .action((destinationChain, destinationAddress, channelId, payload, options) => { + mainProcessor(options, [destinationChain, destinationAddress, channelId, payload], processCommand, payGas); + }); + + const addGasCmd = new Command() + .command('addGas ') + .description('Add gas for the existing contract call.') + .option('--refundAddress ', 'Refund address.') + .requiredOption('--amount ', 'Amount to add gas', parseSuiUnitAmount) + .option('--params ', 'Params. Default is empty.') + .action((messageId, options) => { + mainProcessor(options, [messageId], processCommand, addGas); + }); + + const collectGasCmd = new Command() + .command('collectGas') + .description('Collect gas from the gas service contract.') + .option('--receiver ', 'Receiver address. Default is the sender address.') + .requiredOption('--amount ', 'Amount to collect gas', parseSuiUnitAmount) + .action((options) => { + mainProcessor(options, [], processCommand, collectGas); + }); + + const refundCmd = new Command() + .command('refund ') + .description('Refund gas from the gas service contract.') + .option('--receiver ', 'Receiver address. Default is the sender address.') + .requiredOption('--amount ', 'Amount to refund gas', parseSuiUnitAmount) + .action((messageId, options) => { + mainProcessor(options, [messageId], processCommand, refund); + }); + + program.addCommand(payGasCmd); + program.addCommand(addGasCmd); + program.addCommand(collectGasCmd); + program.addCommand(refundCmd); + + addOptionsToCommands(program, addBaseOptions); + + program.parse(); +} diff --git a/sui/types-utils.js b/sui/types-utils.js index 8a2d38bb..5f2c0a4b 100644 --- a/sui/types-utils.js +++ b/sui/types-utils.js @@ -1,6 +1,7 @@ 'use strict'; const { bcs } = require('@mysten/sui.js/bcs'); +const { fromHEX, toHEX } = require('@mysten/bcs'); const { ethers } = require('hardhat'); const { utils: { arrayify, hexlify }, @@ -21,6 +22,11 @@ const bytes32Struct = bcs.fixedArray(32, bcs.u8()).transform({ output: (id) => hexlify(id), }); +const UID = bcs.fixedArray(32, bcs.u8()).transform({ + input: (id) => fromHEX(id), + output: (id) => toHEX(Uint8Array.from(id)), +}); + const signersStruct = bcs.struct('WeightedSigners', { signers: bcs.vector(signerStruct), threshold: bcs.u128(), @@ -46,6 +52,11 @@ const proofStruct = bcs.struct('Proof', { signatures: bcs.vector(bcs.vector(bcs.u8())), }); +const gasServiceStruct = bcs.struct('GasService', { + id: UID, + balance: bcs.u64(), +}); + module.exports = { addressStruct, signerStruct, @@ -54,4 +65,5 @@ module.exports = { messageToSignStruct, messageStruct, proofStruct, + gasServiceStruct, }; diff --git a/sui/utils.js b/sui/utils.js index 295aeb01..03d2de1b 100644 --- a/sui/utils.js +++ b/sui/utils.js @@ -6,6 +6,7 @@ const { BigNumber, utils: { arrayify, hexlify }, } = ethers; +const { fromB64 } = require('@mysten/bcs'); const { CosmWasmClient } = require('@cosmjs/cosmwasm-stargate'); const getAmplifierSigners = async (config, chain) => { @@ -31,6 +32,18 @@ const getAmplifierSigners = async (config, chain) => { }; }; +// Given sui client and object id, return the base64-decoded object bcs bytes +const getBcsBytesByObjectId = async (client, objectId) => { + const response = await client.getObject({ + id: objectId, + options: { + showBcs: true, + }, + }); + + return fromB64(response.data.bcs.bcsBytes); +}; + const loadSuiConfig = (env) => { const config = loadConfig(env); const suiEnv = env === 'local' ? 'localnet' : env; @@ -55,6 +68,7 @@ const findPublishedObject = (published, packageName, contractName) => { module.exports = { getAmplifierSigners, + getBcsBytesByObjectId, loadSuiConfig, findPublishedObject, }; From 8572a94db3f12044f0747c89f1a25fa0ff930b4c Mon Sep 17 00:00:00 2001 From: Foivos Date: Thu, 18 Jul 2024 18:53:13 +0300 Subject: [PATCH 5/7] feat: add sui copy package util (#303) Co-authored-by: blockchainguyy --- .gitignore | 3 + package-lock.json | 1040 ++++++++++++++++------------------------- package.json | 3 +- sui/deploy-gateway.js | 14 +- sui/deploy-test.js | 6 +- sui/deploy-utils.js | 177 +++++++ sui/utils.js | 17 + 7 files changed, 602 insertions(+), 658 deletions(-) create mode 100644 sui/deploy-utils.js diff --git a/.gitignore b/.gitignore index 53997b1f..e1981793 100644 --- a/.gitignore +++ b/.gitignore @@ -112,3 +112,6 @@ local.json keys.json temp-arguments.js + +# Sui Move Packages +sui/move \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 393fc038..227f614a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,11 +11,12 @@ "dependencies": { "@0xpolygonhermez/zkevm-commonjs": "github:0xpolygonhermez/zkevm-commonjs#v1.0.0", "@axelar-network/axelar-cgp-solidity": "6.3.1", - "@axelar-network/axelar-cgp-sui": "https://github.com/axelarnetwork/axelar-cgp-sui.git#main", + "@axelar-network/axelar-cgp-sui": "https://github.com/axelarnetwork/axelar-cgp-sui.git", "@axelar-network/axelar-gmp-sdk-solidity": "5.9.0", "@axelar-network/interchain-token-service": "1.2.4", "@cosmjs/cosmwasm-stargate": "^0.32.1", "@ledgerhq/hw-app-eth": "6.32.2", + "@mysten/sui.js": "^0.54.1", "@stellar/stellar-sdk": "^12.0.0-rc3", "axios": "^1.6.2", "path": "^0.12.7" @@ -54,9 +55,9 @@ } }, "node_modules/@0no-co/graphqlsp": { - "version": "1.12.7", - "resolved": "https://registry.npmjs.org/@0no-co/graphqlsp/-/graphqlsp-1.12.7.tgz", - "integrity": "sha512-jZeTKW8pl/IWTHWZUox5oQk0n+IsLNY+OkmxoZwW+AkZaQOXdzIlZ0OabJGw4+/vutwdZYR+UsoC8Nhi9hRnRw==", + "version": "1.12.11", + "resolved": "https://registry.npmjs.org/@0no-co/graphqlsp/-/graphqlsp-1.12.11.tgz", + "integrity": "sha512-vLja9r7L6BBXwxW86Wyi5z5hjTHscH7qoQooy+MXHkM9srBB6ZuesYZq5DQ/+SErQrFyaxeY+hwv2qBAksxriw==", "dependencies": { "@gql.tada/internal": "^1.0.0", "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0" @@ -69,6 +70,7 @@ "node_modules/@0xpolygonhermez/zkevm-commonjs": { "version": "1.0.0", "resolved": "git+ssh://git@github.com/0xpolygonhermez/zkevm-commonjs.git#34f72fe9f7a4c3c45965742476a87148c9e05c0f", + "license": "pending", "dependencies": { "@ethereumjs/block": "^3.6.2", "@ethereumjs/tx": "^3.4.0", @@ -117,12 +119,12 @@ } }, "node_modules/@aws-sdk/types": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.577.0.tgz", - "integrity": "sha512-FT2JZES3wBKN/alfmhlo+3ZOq/XJ0C7QOZcDNrpKjB0kqYoKjhVKZ/Hx6ArR0czkKfHzBBEs6y40ebIHx2nSmA==", + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz", + "integrity": "sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==", "dev": true, "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -130,9 +132,9 @@ } }, "node_modules/@aws-sdk/types/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", "dev": true }, "node_modules/@aws-sdk/util-utf8-browser": { @@ -145,9 +147,9 @@ } }, "node_modules/@aws-sdk/util-utf8-browser/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", "dev": true }, "node_modules/@axelar-network/axelar-cgp-solidity": { @@ -171,10 +173,13 @@ }, "node_modules/@axelar-network/axelar-cgp-sui": { "version": "0.1.0", - "resolved": "git+ssh://git@github.com/axelarnetwork/axelar-cgp-sui.git#368b2d4032314e6400b5be3058490dcc79ed0fbb", + "resolved": "git+ssh://git@github.com/axelarnetwork/axelar-cgp-sui.git#44336e556e3e9e0fd36bfa854bf88573abc1461a", + "hasInstallScript": true, + "license": "MIT", "dependencies": { "@cosmjs/cosmwasm-stargate": "^0.32.2", "@mysten/sui.js": "^0.54.1", + "@types/tmp": "^0.2.6", "child_process": "^1.0.2", "ethers": "^5.0.0", "fs": "^0.0.1-security", @@ -225,9 +230,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", - "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.8.tgz", + "integrity": "sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==", "bin": { "parser": "bin/babel-parser.js" }, @@ -271,41 +276,41 @@ } }, "node_modules/@cosmjs/amino": { - "version": "0.32.3", - "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.32.3.tgz", - "integrity": "sha512-G4zXl+dJbqrz1sSJ56H/25l5NJEk/pAPIr8piAHgbXYw88OdAOlpA26PQvk2IbSN/rRgVbvlLTNgX2tzz1dyUA==", + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.32.4.tgz", + "integrity": "sha512-zKYOt6hPy8obIFtLie/xtygCkH9ZROiQ12UHfKsOkWaZfPQUvVbtgmu6R4Kn1tFLI/SRkw7eqhaogmW/3NYu/Q==", "dependencies": { - "@cosmjs/crypto": "^0.32.3", - "@cosmjs/encoding": "^0.32.3", - "@cosmjs/math": "^0.32.3", - "@cosmjs/utils": "^0.32.3" + "@cosmjs/crypto": "^0.32.4", + "@cosmjs/encoding": "^0.32.4", + "@cosmjs/math": "^0.32.4", + "@cosmjs/utils": "^0.32.4" } }, "node_modules/@cosmjs/cosmwasm-stargate": { - "version": "0.32.3", - "resolved": "https://registry.npmjs.org/@cosmjs/cosmwasm-stargate/-/cosmwasm-stargate-0.32.3.tgz", - "integrity": "sha512-pqkt+QsLIPNMTRh9m+igJgIpzXXgn1BxmxfAb9zlC23kvsuzY/12un9M7iAdim1NwKXDFeYw46xC2YkprwQp+g==", - "dependencies": { - "@cosmjs/amino": "^0.32.3", - "@cosmjs/crypto": "^0.32.3", - "@cosmjs/encoding": "^0.32.3", - "@cosmjs/math": "^0.32.3", - "@cosmjs/proto-signing": "^0.32.3", - "@cosmjs/stargate": "^0.32.3", - "@cosmjs/tendermint-rpc": "^0.32.3", - "@cosmjs/utils": "^0.32.3", + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/cosmwasm-stargate/-/cosmwasm-stargate-0.32.4.tgz", + "integrity": "sha512-Fuo9BGEiB+POJ5WeRyBGuhyKR1ordvxZGLPuPosFJOH9U0gKMgcjwKMCgAlWFkMlHaTB+tNdA8AifWiHrI7VgA==", + "dependencies": { + "@cosmjs/amino": "^0.32.4", + "@cosmjs/crypto": "^0.32.4", + "@cosmjs/encoding": "^0.32.4", + "@cosmjs/math": "^0.32.4", + "@cosmjs/proto-signing": "^0.32.4", + "@cosmjs/stargate": "^0.32.4", + "@cosmjs/tendermint-rpc": "^0.32.4", + "@cosmjs/utils": "^0.32.4", "cosmjs-types": "^0.9.0", "pako": "^2.0.2" } }, "node_modules/@cosmjs/crypto": { - "version": "0.32.3", - "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.32.3.tgz", - "integrity": "sha512-niQOWJHUtlJm2GG4F00yGT7sGPKxfUwz+2qQ30uO/E3p58gOusTcH2qjiJNVxb8vScYJhFYFqpm/OA/mVqoUGQ==", + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.32.4.tgz", + "integrity": "sha512-zicjGU051LF1V9v7bp8p7ovq+VyC91xlaHdsFOTo2oVry3KQikp8L/81RkXmUIT8FxMwdx1T7DmFwVQikcSDIw==", "dependencies": { - "@cosmjs/encoding": "^0.32.3", - "@cosmjs/math": "^0.32.3", - "@cosmjs/utils": "^0.32.3", + "@cosmjs/encoding": "^0.32.4", + "@cosmjs/math": "^0.32.4", + "@cosmjs/utils": "^0.32.4", "@noble/hashes": "^1", "bn.js": "^5.2.0", "elliptic": "^6.5.4", @@ -313,9 +318,9 @@ } }, "node_modules/@cosmjs/encoding": { - "version": "0.32.3", - "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.32.3.tgz", - "integrity": "sha512-p4KF7hhv8jBQX3MkB3Defuhz/W0l3PwWVYU2vkVuBJ13bJcXyhU9nJjiMkaIv+XP+W2QgRceqNNgFUC5chNR7w==", + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.32.4.tgz", + "integrity": "sha512-tjvaEy6ZGxJchiizzTn7HVRiyTg1i4CObRRaTRPknm5EalE13SV+TCHq38gIDfyUeden4fCuaBVEdBR5+ti7Hw==", "dependencies": { "base64-js": "^1.3.0", "bech32": "^1.1.4", @@ -323,92 +328,92 @@ } }, "node_modules/@cosmjs/json-rpc": { - "version": "0.32.3", - "resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.32.3.tgz", - "integrity": "sha512-JwFRWZa+Y95KrAG8CuEbPVOSnXO2uMSEBcaAB/FBU3Mo4jQnDoUjXvt3vwtFWxfAytrWCn1I4YDFaOAinnEG/Q==", + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.32.4.tgz", + "integrity": "sha512-/jt4mBl7nYzfJ2J/VJ+r19c92mUKF0Lt0JxM3MXEJl7wlwW5haHAWtzRujHkyYMXOwIR+gBqT2S0vntXVBRyhQ==", "dependencies": { - "@cosmjs/stream": "^0.32.3", + "@cosmjs/stream": "^0.32.4", "xstream": "^11.14.0" } }, "node_modules/@cosmjs/math": { - "version": "0.32.3", - "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.32.3.tgz", - "integrity": "sha512-amumUtZs8hCCnV+lSBaJIiZkGabQm22QGg/IotYrhcmoOEOjt82n7hMNlNXRs7V6WLMidGrGYcswB5zcmp0Meg==", + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.32.4.tgz", + "integrity": "sha512-++dqq2TJkoB8zsPVYCvrt88oJWsy1vMOuSOKcdlnXuOA/ASheTJuYy4+oZlTQ3Fr8eALDLGGPhJI02W2HyAQaw==", "dependencies": { "bn.js": "^5.2.0" } }, "node_modules/@cosmjs/proto-signing": { - "version": "0.32.3", - "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.32.3.tgz", - "integrity": "sha512-kSZ0ZUY0DwcRT0NcIn2HkadH4NKlwjfZgbLj1ABwh/4l0RgeT84QCscZCu63tJYq3K6auwqTiZSZERwlO4/nbg==", - "dependencies": { - "@cosmjs/amino": "^0.32.3", - "@cosmjs/crypto": "^0.32.3", - "@cosmjs/encoding": "^0.32.3", - "@cosmjs/math": "^0.32.3", - "@cosmjs/utils": "^0.32.3", + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.32.4.tgz", + "integrity": "sha512-QdyQDbezvdRI4xxSlyM1rSVBO2st5sqtbEIl3IX03uJ7YiZIQHyv6vaHVf1V4mapusCqguiHJzm4N4gsFdLBbQ==", + "dependencies": { + "@cosmjs/amino": "^0.32.4", + "@cosmjs/crypto": "^0.32.4", + "@cosmjs/encoding": "^0.32.4", + "@cosmjs/math": "^0.32.4", + "@cosmjs/utils": "^0.32.4", "cosmjs-types": "^0.9.0" } }, "node_modules/@cosmjs/socket": { - "version": "0.32.3", - "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.32.3.tgz", - "integrity": "sha512-F2WwNmaUPdZ4SsH6Uyreq3wQk7jpaEkb3wfOP951f5Jt6HCW/PxbxhKzHkAAf6+Sqks6SPhkbWoE8XaZpjL2KA==", + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.32.4.tgz", + "integrity": "sha512-davcyYziBhkzfXQTu1l5NrpDYv0K9GekZCC9apBRvL1dvMc9F/ygM7iemHjUA+z8tJkxKxrt/YPjJ6XNHzLrkw==", "dependencies": { - "@cosmjs/stream": "^0.32.3", + "@cosmjs/stream": "^0.32.4", "isomorphic-ws": "^4.0.1", "ws": "^7", "xstream": "^11.14.0" } }, "node_modules/@cosmjs/stargate": { - "version": "0.32.3", - "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.32.3.tgz", - "integrity": "sha512-OQWzO9YWKerUinPIxrO1MARbe84XkeXJAW0lyMIjXIEikajuXZ+PwftiKA5yA+8OyditVmHVLtPud6Pjna2s5w==", + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.32.4.tgz", + "integrity": "sha512-usj08LxBSsPRq9sbpCeVdyLx2guEcOHfJS9mHGCLCXpdAPEIEQEtWLDpEUc0LEhWOx6+k/ChXTc5NpFkdrtGUQ==", "dependencies": { "@confio/ics23": "^0.6.8", - "@cosmjs/amino": "^0.32.3", - "@cosmjs/encoding": "^0.32.3", - "@cosmjs/math": "^0.32.3", - "@cosmjs/proto-signing": "^0.32.3", - "@cosmjs/stream": "^0.32.3", - "@cosmjs/tendermint-rpc": "^0.32.3", - "@cosmjs/utils": "^0.32.3", + "@cosmjs/amino": "^0.32.4", + "@cosmjs/encoding": "^0.32.4", + "@cosmjs/math": "^0.32.4", + "@cosmjs/proto-signing": "^0.32.4", + "@cosmjs/stream": "^0.32.4", + "@cosmjs/tendermint-rpc": "^0.32.4", + "@cosmjs/utils": "^0.32.4", "cosmjs-types": "^0.9.0", "xstream": "^11.14.0" } }, "node_modules/@cosmjs/stream": { - "version": "0.32.3", - "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.32.3.tgz", - "integrity": "sha512-J2zVWDojkynYifAUcRmVczzmp6STEpyiAARq0rSsviqjreGIfspfuws/8rmkPa6qQBZvpQOBQCm2HyZZwYplIw==", + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.32.4.tgz", + "integrity": "sha512-Gih++NYHEiP+oyD4jNEUxU9antoC0pFSg+33Hpp0JlHwH0wXhtD3OOKnzSfDB7OIoEbrzLJUpEjOgpCp5Z+W3A==", "dependencies": { "xstream": "^11.14.0" } }, "node_modules/@cosmjs/tendermint-rpc": { - "version": "0.32.3", - "resolved": "https://registry.npmjs.org/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.32.3.tgz", - "integrity": "sha512-xeprW+VR9xKGstqZg0H/KBZoUp8/FfFyS9ljIUTLM/UINjP2MhiwncANPS2KScfJVepGufUKk0/phHUeIBSEkw==", - "dependencies": { - "@cosmjs/crypto": "^0.32.3", - "@cosmjs/encoding": "^0.32.3", - "@cosmjs/json-rpc": "^0.32.3", - "@cosmjs/math": "^0.32.3", - "@cosmjs/socket": "^0.32.3", - "@cosmjs/stream": "^0.32.3", - "@cosmjs/utils": "^0.32.3", + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.32.4.tgz", + "integrity": "sha512-MWvUUno+4bCb/LmlMIErLypXxy7ckUuzEmpufYYYd9wgbdCXaTaO08SZzyFM5PI8UJ/0S2AmUrgWhldlbxO8mw==", + "dependencies": { + "@cosmjs/crypto": "^0.32.4", + "@cosmjs/encoding": "^0.32.4", + "@cosmjs/json-rpc": "^0.32.4", + "@cosmjs/math": "^0.32.4", + "@cosmjs/socket": "^0.32.4", + "@cosmjs/stream": "^0.32.4", + "@cosmjs/utils": "^0.32.4", "axios": "^1.6.0", "readonly-date": "^1.0.0", "xstream": "^11.14.0" } }, "node_modules/@cosmjs/utils": { - "version": "0.32.3", - "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.32.3.tgz", - "integrity": "sha512-WCZK4yksj2hBDz4w7xFZQTRZQ/RJhBX26uFHmmQFIcNUUVAihrLO+RerqJgk0dZqC42wstM9pEUQGtPmLcIYvg==" + "version": "0.32.4", + "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.32.4.tgz", + "integrity": "sha512-D1Yc+Zy8oL/hkUkFUL/bwxvuDBzRGpc4cF7/SkdhxX4iHpSLgdOuTt1mhCh9+kl6NQREy9t7SYZ6xeW5gFe60w==" }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", @@ -450,9 +455,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz", - "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -574,72 +579,17 @@ "node": ">=14" } }, - "node_modules/@ethereumjs/util/node_modules/@noble/curves": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", - "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", - "dev": true, - "peer": true, - "dependencies": { - "@noble/hashes": "1.3.3" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@ethereumjs/util/node_modules/@noble/hashes": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", - "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@ethereumjs/util/node_modules/@scure/bip32": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.3.tgz", - "integrity": "sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==", - "dev": true, - "peer": true, - "dependencies": { - "@noble/curves": "~1.3.0", - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@ethereumjs/util/node_modules/@scure/bip39": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.2.tgz", - "integrity": "sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==", - "dev": true, - "peer": true, - "dependencies": { - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/@ethereumjs/util/node_modules/ethereum-cryptography": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz", - "integrity": "sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", "dev": true, "peer": true, "dependencies": { - "@noble/curves": "1.3.0", - "@noble/hashes": "1.3.3", - "@scure/bip32": "1.3.3", - "@scure/bip39": "1.2.2" + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" } }, "node_modules/@ethersproject/abi": { @@ -1362,26 +1312,27 @@ } }, "node_modules/@gql.tada/cli-utils": { - "version": "1.3.9", - "resolved": "https://registry.npmjs.org/@gql.tada/cli-utils/-/cli-utils-1.3.9.tgz", - "integrity": "sha512-oRb7SG/+csx9CiypSJTI21KaLfulOUnhX1vxg4FXi2snub9XShkGR2XnnlJVTAOZXY9Vcxti1NutAElxdDkycA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@gql.tada/cli-utils/-/cli-utils-1.5.1.tgz", + "integrity": "sha512-JVLpoXLa4msrE7MHnmW/7fYnIl8dncLom8T/Ghsxu+Kz5iMGnzK2joJN5cZt4ewCAqfCV3HZZ0VH189OalGd9g==", "dependencies": { - "@0no-co/graphqlsp": "^1.12.1", - "@gql.tada/internal": "1.0.0", + "@0no-co/graphqlsp": "^1.12.9", + "@gql.tada/internal": "1.0.4", "@vue/compiler-dom": "^3.4.23", "@vue/language-core": "^2.0.17", "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", "svelte2tsx": "^0.7.6" }, "peerDependencies": { + "@0no-co/graphqlsp": "^1.12.9", "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", "typescript": "^5.0.0" } }, "node_modules/@gql.tada/internal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gql.tada/internal/-/internal-1.0.0.tgz", - "integrity": "sha512-B55aIYyZn5ewdgMqoJciPAwF5DKYX6HBabTU+ap/dpNH3EgJrLomc8Y8w+MCxCyOx+dXL9OduT6eWnVr7J7Eyg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@gql.tada/internal/-/internal-1.0.4.tgz", + "integrity": "sha512-tq0rgoqjhdVqKWEsbrkiX7Qpp5gA4/Br9r9TVBeh3WpJIcuGh5U48UjB4IOxtXBePZdX8E0oc07GjOid/P60Wg==", "dependencies": { "@0no-co/graphql.web": "^1.0.5" }, @@ -1402,6 +1353,7 @@ "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^2.0.2", @@ -1429,6 +1381,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", "dev": true }, "node_modules/@jridgewell/gen-mapping": { @@ -1464,9 +1417,9 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "peer": true }, "node_modules/@jridgewell/trace-mapping": { @@ -1488,20 +1441,20 @@ } }, "node_modules/@ledgerhq/devices": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-8.3.0.tgz", - "integrity": "sha512-h5Scr+yIae8yjPOViCHLdMjpqn4oC2Whrsq8LinRxe48LEGMdPqSV1yY7+3Ch827wtzNpMv+/ilKnd8rY+rTlg==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-8.4.0.tgz", + "integrity": "sha512-TUrMlWZJ+5AFp2lWMw4rGQoU+WtjIqlFX5SzQDL9phaUHrt4TFierAGHsaj5+tUHudhD4JhIaLI2cn1NOyq5NQ==", "dependencies": { - "@ledgerhq/errors": "^6.16.4", + "@ledgerhq/errors": "^6.17.0", "@ledgerhq/logs": "^6.12.0", "rxjs": "^7.8.1", "semver": "^7.3.5" } }, "node_modules/@ledgerhq/errors": { - "version": "6.16.4", - "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-6.16.4.tgz", - "integrity": "sha512-M57yFaLYSN+fZCX0E0zUqOmrV6eipK+s5RhijHoUNlHUqrsvUz7iRQgpd5gRgHB5VkIjav7KdaZjKiWGcHovaQ==" + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-6.17.0.tgz", + "integrity": "sha512-xnOVpy/gUUkusEORdr2Qhw3Vd0MGfjyVGgkGR9Ck6FXE26OIdIQ3tNmG5BdZN+gwMMFJJVxxS4/hr0taQfZ43w==" }, "node_modules/@ledgerhq/hw-app-eth": { "version": "6.32.2", @@ -1529,53 +1482,53 @@ } }, "node_modules/@ledgerhq/hw-transport": { - "version": "6.30.6", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-6.30.6.tgz", - "integrity": "sha512-fT0Z4IywiuJuZrZE/+W0blkV5UCotDPFTYKLkKCLzYzuE6javva7D/ajRaIeR+hZ4kTmKF4EqnsmDCXwElez+w==", + "version": "6.31.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-6.31.0.tgz", + "integrity": "sha512-BY1poLk8vlJdIYngp8Zfaa/V9n14dqgt1G7iNetVRhJVFEKp9EYONeC3x6q/N7x81LUpzBk6M+T+s46Z4UiXHw==", "dependencies": { - "@ledgerhq/devices": "^8.3.0", - "@ledgerhq/errors": "^6.16.4", + "@ledgerhq/devices": "^8.4.0", + "@ledgerhq/errors": "^6.17.0", "@ledgerhq/logs": "^6.12.0", "events": "^3.3.0" } }, "node_modules/@ledgerhq/hw-transport-mocker": { - "version": "6.28.6", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-mocker/-/hw-transport-mocker-6.28.6.tgz", - "integrity": "sha512-JDO2kqMOTRCQWNZr1KVlyX1AqE6WBzHjJDS3FnSI8Z/Bj2KSc2/1H/4lW6+Ap64yLtlmOW3GchdafFmLgYAgqw==", + "version": "6.29.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-mocker/-/hw-transport-mocker-6.29.0.tgz", + "integrity": "sha512-SbS4SvbMcpNquUsvN4Gd0bTi7ohySqIDMHFf2YLhYBRu1HviU3TG/p4zoFrJcFUiIX2/wOmUdHsWtaQFdMVGyQ==", "dependencies": { - "@ledgerhq/hw-transport": "^6.30.6", + "@ledgerhq/hw-transport": "^6.31.0", "@ledgerhq/logs": "^6.12.0", "rxjs": "^7.8.1" } }, "node_modules/@ledgerhq/hw-transport-node-hid": { - "version": "6.28.6", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-6.28.6.tgz", - "integrity": "sha512-USSTOO0zv9XtguWismP7/StnNS/s7Rz0JOGGaBhKe3Bzl7d5XPncUlmOvoNFzzY/QdasEoFs2QId1+ibJG71Vw==", + "version": "6.29.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-6.29.1.tgz", + "integrity": "sha512-l+zAfsE0uvo2/Wni0TSW+n6HoFmZdPH6ukrjPocY6jvbhcaxhpbK7ERvDpnZMir/pHwsDoAsvwPY/0sFRBf7bw==", "dev": true, "dependencies": { - "@ledgerhq/devices": "^8.3.0", - "@ledgerhq/errors": "^6.16.4", - "@ledgerhq/hw-transport": "^6.30.6", - "@ledgerhq/hw-transport-node-hid-noevents": "^6.29.6", + "@ledgerhq/devices": "^8.4.0", + "@ledgerhq/errors": "^6.17.0", + "@ledgerhq/hw-transport": "^6.31.0", + "@ledgerhq/hw-transport-node-hid-noevents": "^6.30.1", "@ledgerhq/logs": "^6.12.0", "lodash": "^4.17.21", - "node-hid": "^2.1.2", + "node-hid": "2.1.2", "usb": "2.9.0" } }, "node_modules/@ledgerhq/hw-transport-node-hid-noevents": { - "version": "6.29.6", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-6.29.6.tgz", - "integrity": "sha512-H1cGC4TLwSCxve3rbV7qfPJBZfy7VD7k9Czc9HOMDwQ9zHFtaoeiIotIMGjzHjfPtAGauMpAYvrpmEdBBX5sHg==", + "version": "6.30.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-6.30.1.tgz", + "integrity": "sha512-9Mb5vDBXfSaRhfl0U2DnJLN4FgosfQopkzjzZYYHT3+s9XMot4WN/eWWbv5Ksx5qsV8RLQ77dewFFomNthm/vQ==", "dev": true, "dependencies": { - "@ledgerhq/devices": "^8.3.0", - "@ledgerhq/errors": "^6.16.4", - "@ledgerhq/hw-transport": "^6.30.6", + "@ledgerhq/devices": "^8.4.0", + "@ledgerhq/errors": "^6.17.0", + "@ledgerhq/hw-transport": "^6.31.0", "@ledgerhq/logs": "^6.12.0", - "node-hid": "^2.1.2" + "node-hid": "2.1.2" } }, "node_modules/@ledgerhq/logs": { @@ -1665,9 +1618,9 @@ "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" }, "node_modules/@noble/curves": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.0.tgz", - "integrity": "sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", "dependencies": { "@noble/hashes": "1.4.0" }, @@ -1998,184 +1951,91 @@ } }, "node_modules/@nomicfoundation/solidity-analyzer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz", - "integrity": "sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.2.tgz", + "integrity": "sha512-q4n32/FNKIhQ3zQGGw5CvPF6GTvDCpYwIf7bEY/dZTZbgfDsHyjJwURxUJf3VQuuJj+fDIFl4+KkBVbw4Ef6jA==", "dev": true, "engines": { "node": ">= 12" }, "optionalDependencies": { - "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.1", - "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.1", - "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.1" + "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.2", + "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.2", + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.2", + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.2", + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.2", + "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.2", + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.2" } }, "node_modules/@nomicfoundation/solidity-analyzer-darwin-arm64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz", - "integrity": "sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==", - "cpu": [ - "arm64" - ], + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.2.tgz", + "integrity": "sha512-JaqcWPDZENCvm++lFFGjrDd8mxtf+CtLd2MiXvMNTBD33dContTZ9TWETwNFwg7JTJT5Q9HEecH7FA+HTSsIUw==", "dev": true, "optional": true, - "os": [ - "darwin" - ], "engines": { - "node": ">= 10" + "node": ">= 12" } }, "node_modules/@nomicfoundation/solidity-analyzer-darwin-x64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz", - "integrity": "sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-freebsd-x64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz", - "integrity": "sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==", - "cpu": [ - "x64" - ], + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.2.tgz", + "integrity": "sha512-fZNmVztrSXC03e9RONBT+CiksSeYcxI1wlzqyr0L7hsQlK1fzV+f04g2JtQ1c/Fe74ZwdV6aQBdd6Uwl1052sw==", "dev": true, "optional": true, - "os": [ - "freebsd" - ], "engines": { - "node": ">= 10" + "node": ">= 12" } }, "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz", - "integrity": "sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==", - "cpu": [ - "arm64" - ], + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.2.tgz", + "integrity": "sha512-3d54oc+9ZVBuB6nbp8wHylk4xh0N0Gc+bk+/uJae+rUgbOBwQSfuGIbAZt1wBXs5REkSmynEGcqx6DutoK0tPA==", "dev": true, "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">= 10" + "node": ">= 12" } }, "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-musl": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz", - "integrity": "sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==", - "cpu": [ - "arm64" - ], + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.2.tgz", + "integrity": "sha512-iDJfR2qf55vgsg7BtJa7iPiFAsYf2d0Tv/0B+vhtnI16+wfQeTbP7teookbGvAo0eJo7aLLm0xfS/GTkvHIucA==", "dev": true, "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">= 10" + "node": ">= 12" } }, "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-gnu": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz", - "integrity": "sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==", - "cpu": [ - "x64" - ], + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.2.tgz", + "integrity": "sha512-9dlHMAt5/2cpWyuJ9fQNOUXFB/vgSFORg1jpjX1Mh9hJ/MfZXlDdHQ+DpFCs32Zk5pxRBb07yGvSHk9/fezL+g==", "dev": true, "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">= 10" + "node": ">= 12" } }, "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-musl": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz", - "integrity": "sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-win32-arm64-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz", - "integrity": "sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nomicfoundation/solidity-analyzer-win32-ia32-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz", - "integrity": "sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==", - "cpu": [ - "ia32" - ], + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.2.tgz", + "integrity": "sha512-GzzVeeJob3lfrSlDKQw2bRJ8rBf6mEYaWY+gW0JnTDHINA0s2gPR4km5RLIj1xeZZOYz4zRw+AEeYgLRqB2NXg==", "dev": true, "optional": true, - "os": [ - "win32" - ], "engines": { - "node": ">= 10" + "node": ">= 12" } }, "node_modules/@nomicfoundation/solidity-analyzer-win32-x64-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz", - "integrity": "sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==", - "cpu": [ - "x64" - ], + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.2.tgz", + "integrity": "sha512-Fdjli4DCcFHb4Zgsz0uEJXZ2K7VEO+w5KVv7HmT7WO10iODdU9csC2az4jrhEsRtiR9Gfd74FlG0NYlw1BMdyA==", "dev": true, "optional": true, - "os": [ - "win32" - ], "engines": { - "node": ">= 10" + "node": ">= 12" } }, "node_modules/@nomiclabs/hardhat-ethers": { @@ -2405,6 +2265,7 @@ "name": "@0xpolygonhermez/zkevm-commonjs", "version": "0.5.0.1", "resolved": "git+ssh://git@github.com/hermeznetwork/zkevm-commonjs.git#3ee798329f567fa19b7c4f1ffbcf3d91cf5bf273", + "license": "pending", "dependencies": { "@ethereumjs/block": "^3.6.2", "@ethereumjs/tx": "^3.4.0", @@ -2502,9 +2363,9 @@ "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" }, "node_modules/@scure/base": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.6.tgz", - "integrity": "sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.7.tgz", + "integrity": "sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g==", "funding": { "url": "https://paulmillr.com/funding/" } @@ -2637,9 +2498,9 @@ } }, "node_modules/@smithy/types": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.0.0.tgz", - "integrity": "sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.3.0.tgz", + "integrity": "sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA==", "dev": true, "dependencies": { "tslib": "^2.6.2" @@ -2649,9 +2510,9 @@ } }, "node_modules/@smithy/types/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", "dev": true }, "node_modules/@solidity-parser/parser": { @@ -2670,9 +2531,9 @@ "integrity": "sha512-3gnPjAz78htgqsNEDkEsKHKosV2BF2iZkoHCNxpmZwUxiPsw+2VaXMed8RRMe0rGk3d5GZe7RrSba8zV80J3Ag==" }, "node_modules/@stellar/stellar-base": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@stellar/stellar-base/-/stellar-base-12.0.0.tgz", - "integrity": "sha512-uGpahDFFXbE39myOmBnEZSjVys4yUkQ/ASNuYENGyS8MNdfA0TS7DPWkiO6t17P+rW+FRV1zmumJtjRHwxxMdw==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@stellar/stellar-base/-/stellar-base-12.0.1.tgz", + "integrity": "sha512-g6c27MNsDgEdUmoNQJn7zCWoCY50WHt0OIIOq3PhWaJRtUaT++qs1Jpb8+1bny2GmhtfRGOfPUFSyQBuHT9Mvg==", "dependencies": { "@stellar/js-xdr": "^3.1.1", "base32.js": "^0.1.0", @@ -2686,11 +2547,11 @@ } }, "node_modules/@stellar/stellar-sdk": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/@stellar/stellar-sdk/-/stellar-sdk-12.0.1.tgz", - "integrity": "sha512-0+YXUTS2LpZ+Of383hSYVpsRl9BJ3X9lHcj05ouS3VkVL9BH7w+Par8RHPkiHS6lLYn3gWRgaJauTebkamY/Jw==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@stellar/stellar-sdk/-/stellar-sdk-12.1.0.tgz", + "integrity": "sha512-Va0hu9SaPezmMbO5eMwL5D15Wrx1AGWRtxayUDRWV2Fr3ynY58mvCZS1vsgNQ4kE8MZe3nBVKv6T9Kzqwgx1PQ==", "dependencies": { - "@stellar/stellar-base": "^12.0.0", + "@stellar/stellar-base": "^12.0.1", "axios": "^1.7.2", "bignumber.js": "^9.1.2", "eventsource": "^2.0.2", @@ -2891,16 +2752,16 @@ "peer": true }, "node_modules/@types/mocha": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", - "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==", + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.7.tgz", + "integrity": "sha512-GN8yJ1mNTcFcah/wKEFIJckJx9iJLoMSzWcfRRuxz/Jk+U6KQNnml+etbtxFK8lPjzOw3zp4Ha/kjSst9fsHYw==", "dev": true, "peer": true }, "node_modules/@types/node": { - "version": "20.14.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.0.tgz", - "integrity": "sha512-5cHBxFGJx6L4s56Bubp4fglrEpmyJypsqI6RgzMfBHWUJQGWAAi8cWcgetEbZXHYXo9C2Fa4EEds/uSyS4cxmA==", + "version": "20.14.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.11.tgz", + "integrity": "sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==", "dependencies": { "undici-types": "~5.26.4" } @@ -2951,6 +2812,11 @@ "@types/node": "*" } }, + "node_modules/@types/tmp": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.6.tgz", + "integrity": "sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==" + }, "node_modules/@types/w3c-web-usb": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/@types/w3c-web-usb/-/w3c-web-usb-1.0.10.tgz", @@ -2964,52 +2830,50 @@ "dev": true }, "node_modules/@volar/language-core": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.2.5.tgz", - "integrity": "sha512-2htyAuxRrAgETmFeUhT4XLELk3LiEcqoW/B8YUXMF6BrGWLMwIR09MFaZYvrA2UhbdAeSyeQ726HaWSWkexUcQ==", + "version": "2.4.0-alpha.16", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.0-alpha.16.tgz", + "integrity": "sha512-oOTnIZlx0P/idFwVw+W0NbzKDtZAQMzXSdIFfTePCKcXlb4Ys12GaGkx8NF9dsvPYV3nbv3ZsSxnkZWBmNKd7A==", "dependencies": { - "@volar/source-map": "2.2.5" + "@volar/source-map": "2.4.0-alpha.16" } }, "node_modules/@volar/source-map": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.2.5.tgz", - "integrity": "sha512-wrOEIiZNf4E+PWB0AxyM4tfhkfldPsb3bxg8N6FHrxJH2ohar7aGu48e98bp3pR9HUA7P/pR9VrLmkTrgCCnWQ==", - "dependencies": { - "muggle-string": "^0.4.0" - } + "version": "2.4.0-alpha.16", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.0-alpha.16.tgz", + "integrity": "sha512-sL9vNG7iR2hiKZor7UkD5Sufu3QCia4cbp2gX/nGRNSdaPbhOpdAoavwlBm0PrVkpiA19NZuavZoobD8krviFg==" }, "node_modules/@vue/compiler-core": { - "version": "3.4.27", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.27.tgz", - "integrity": "sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==", + "version": "3.4.32", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.32.tgz", + "integrity": "sha512-8tCVWkkLe/QCWIsrIvExUGnhYCAOroUs5dzhSoKL5w4MJS8uIYiou+pOPSVIOALOQ80B0jBs+Ri+kd5+MBnCDw==", "dependencies": { - "@babel/parser": "^7.24.4", - "@vue/shared": "3.4.27", + "@babel/parser": "^7.24.7", + "@vue/shared": "3.4.32", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-dom": { - "version": "3.4.27", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.27.tgz", - "integrity": "sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==", + "version": "3.4.32", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.32.tgz", + "integrity": "sha512-PbSgt9KuYo4fyb90dynuPc0XFTfFPs3sCTbPLOLlo+PrUESW1gn/NjSsUvhR+mI2AmmEzexwYMxbHDldxSOr2A==", "dependencies": { - "@vue/compiler-core": "3.4.27", - "@vue/shared": "3.4.27" + "@vue/compiler-core": "3.4.32", + "@vue/shared": "3.4.32" } }, "node_modules/@vue/language-core": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.0.19.tgz", - "integrity": "sha512-A9EGOnvb51jOvnCYoRLnMP+CcoPlbZVxI9gZXE/y2GksRWM6j/PrLEIC++pnosWTN08tFpJgxhSS//E9v/Sg+Q==", + "version": "2.0.26", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.0.26.tgz", + "integrity": "sha512-/lt6SfQ3O1yDAhPsnLv9iSUgXd1dMHqUm/t3RctfqjuwQf1LnftZ414X3UBn6aXT4MiwXWtbNJ4Z0NZWwDWgJQ==", "dependencies": { - "@volar/language-core": "~2.2.4", + "@volar/language-core": "~2.4.0-alpha.15", "@vue/compiler-dom": "^3.4.0", "@vue/shared": "^3.4.0", "computeds": "^0.0.1", "minimatch": "^9.0.3", + "muggle-string": "^0.4.1", "path-browserify": "^1.0.1", "vue-template-compiler": "^2.7.14" }, @@ -3031,9 +2895,9 @@ } }, "node_modules/@vue/language-core/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "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" }, @@ -3045,9 +2909,9 @@ } }, "node_modules/@vue/shared": { - "version": "3.4.27", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.27.tgz", - "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==" + "version": "3.4.32", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.32.tgz", + "integrity": "sha512-ep4mF1IVnX/pYaNwxwOpJHyBtOMKWoKZMbnUyd+z0udqIxLUh7YCCd/JfDna8aUrmnG9SFORyIq2HzEATRrQsg==" }, "node_modules/abbrev": { "version": "1.0.9", @@ -3131,9 +2995,9 @@ } }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "bin": { "acorn": "bin/acorn" }, @@ -3151,11 +3015,14 @@ } }, "node_modules/acorn-walk": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", - "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", "dev": true, "peer": true, + "dependencies": { + "acorn": "^8.11.0" + }, "engines": { "node": ">=0.4.0" } @@ -3603,12 +3470,12 @@ } }, "node_modules/axobject-query": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", - "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", "peer": true, - "dependencies": { - "dequal": "^2.0.3" + "engines": { + "node": ">= 0.4" } }, "node_modules/balanced-match": { @@ -3840,9 +3707,9 @@ } }, "node_modules/bs58check/node_modules/base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", "dependencies": { "safe-buffer": "^5.0.1" } @@ -4762,9 +4629,9 @@ "integrity": "sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==" }, "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", "dev": true, "dependencies": { "type-detect": "^4.0.0" @@ -4917,9 +4784,9 @@ } }, "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, "engines": { "node": ">=0.3.1" @@ -4976,9 +4843,9 @@ } }, "node_modules/elliptic": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.5.tgz", - "integrity": "sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==", + "version": "6.5.6", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.6.tgz", + "integrity": "sha512-mpzdtpeCLuS3BmE3pO3Cpp5bbjlOPY2Q0PgoF+Od1XZrHLYI28Xe3ossCmYCQt11FQKEYd9+PF8jymTvtWJSHQ==", "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -5758,9 +5625,9 @@ } }, "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -6195,6 +6062,13 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "node_modules/fast-uri": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", + "dev": true, + "peer": true + }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", @@ -6747,13 +6621,14 @@ } }, "node_modules/gql.tada": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/gql.tada/-/gql.tada-1.7.5.tgz", - "integrity": "sha512-GepPTee+FWSVVZQ7GiJHzsGNo7gOb59kcn4mUPYLlkbpeJfOUwpuoB05ZNaXG0W4qZVPd1I7R2UgMHBjY1lGlQ==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/gql.tada/-/gql.tada-1.8.2.tgz", + "integrity": "sha512-LLt+2RcLY6i+Rq+LQQwx3uiEAPfA+pmEaAo/bJjUdaV1CVJBy3Wowds6GHeerW5kvekRM/XdbPTJw5OvnLq/DQ==", "dependencies": { "@0no-co/graphql.web": "^1.0.5", - "@gql.tada/cli-utils": "1.3.9", - "@gql.tada/internal": "1.0.0" + "@0no-co/graphqlsp": "^1.12.9", + "@gql.tada/cli-utils": "1.5.1", + "@gql.tada/internal": "1.0.4" }, "bin": { "gql-tada": "bin/cli.js", @@ -6776,9 +6651,9 @@ "dev": true }, "node_modules/graphql": { - "version": "16.8.1", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz", - "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==", + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz", + "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==", "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } @@ -7591,12 +7466,15 @@ } }, "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", + "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", "dev": true, "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8203,16 +8081,16 @@ } }, "node_modules/libsodium-sumo": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/libsodium-sumo/-/libsodium-sumo-0.7.13.tgz", - "integrity": "sha512-zTGdLu4b9zSNLfovImpBCbdAA4xkpkZbMnSQjP8HShyOutnGjRHmSOKlsylh1okao6QhLiz7nG98EGn+04cZjQ==" + "version": "0.7.14", + "resolved": "https://registry.npmjs.org/libsodium-sumo/-/libsodium-sumo-0.7.14.tgz", + "integrity": "sha512-2nDge6qlAjcwyslAhWfVumlkeSNK5+WCfKa2/VEq9prvlT5vP2FR0m0o5hmKaYqfsZ4TQVj5czQsimZvXDB1CQ==" }, "node_modules/libsodium-wrappers-sumo": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/libsodium-wrappers-sumo/-/libsodium-wrappers-sumo-0.7.13.tgz", - "integrity": "sha512-lz4YdplzDRh6AhnLGF2Dj2IUj94xRN6Bh8T0HLNwzYGwPehQJX6c7iYVrFUPZ3QqxE0bqC+K0IIqqZJYWumwSQ==", + "version": "0.7.14", + "resolved": "https://registry.npmjs.org/libsodium-wrappers-sumo/-/libsodium-wrappers-sumo-0.7.14.tgz", + "integrity": "sha512-0lm7ZwN5a95J2yUi8R1rgQeeaVDIWnvNzgVmXmZswis4mC+bQtbDrB+QpJlL4qklaKx3hVpJjoc6ubzJFiv64Q==", "dependencies": { - "libsodium-sumo": "^0.7.13" + "libsodium-sumo": "^0.7.14" } }, "node_modules/locate-character": { @@ -8626,31 +8504,31 @@ } }, "node_modules/mocha": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.4.0.tgz", - "integrity": "sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==", - "dev": true, - "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "8.1.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.6.0.tgz", + "integrity": "sha512-hxjt4+EEB0SA0ZDygSS015t65lJw/I2yRCS3Ae+SJ5FrbzrXgfYwJr96f0OvIXdj7h4lv/vLCrH3rkiuizFSvw==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^8.1.0", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9", + "yargs-unparser": "^2.0.0" }, "bin": { "_mocha": "bin/_mocha", @@ -8660,15 +8538,6 @@ "node": ">= 14.0.0" } }, - "node_modules/mocha/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/mocha/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -8678,56 +8547,6 @@ "balanced-match": "^1.0.0" } }, - "node_modules/mocha/node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/mocha/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/mocha/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/mocha/node_modules/glob": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", @@ -8748,22 +8567,10 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mocha/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -8859,9 +8666,9 @@ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/node-abi": { - "version": "3.63.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.63.0.tgz", - "integrity": "sha512-vAszCsOUrUxjGAmdnM/pq7gUgie0IRteCQMX6d4A534fQCR93EJU5qgzBvU6EkFfK27s0T3HEV3BOyJIr7OMYw==", + "version": "3.65.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.65.0.tgz", + "integrity": "sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==", "dev": true, "dependencies": { "semver": "^7.3.5" @@ -8916,9 +8723,9 @@ } }, "node_modules/node-hid": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-hid/-/node-hid-2.2.0.tgz", - "integrity": "sha512-vj48zh9j555DZzUhMc8tk/qw6xPFrDyPBH1ST1Z/hWaA/juBJw7IuSxPeOgpzNFNU36mGYj+THioRMt1xOdm/g==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/node-hid/-/node-hid-2.1.2.tgz", + "integrity": "sha512-qhCyQqrPpP93F/6Wc/xUR7L8mAJW0Z6R7HMQV8jCHHksAxNDe/4z4Un/H9CpLOT+5K39OPyt9tIQlavxWES3lg==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -9004,10 +8811,13 @@ } }, "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -9339,9 +9149,9 @@ } }, "node_modules/pg": { - "version": "8.11.5", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.5.tgz", - "integrity": "sha512-jqgNHSKL5cbDjFlHyYsCXmQDrfIX/3RsNwYqpd4N0Kt8niLuNoRNH+aazv6cOd43gPh9Y4DjQCtb+X0MH0Hvnw==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.12.0.tgz", + "integrity": "sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ==", "dependencies": { "pg-connection-string": "^2.6.4", "pg-pool": "^3.6.2", @@ -9521,9 +9331,9 @@ } }, "node_modules/prettier": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", - "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -9615,9 +9425,9 @@ } }, "node_modules/qs": { - "version": "6.12.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", - "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.3.tgz", + "integrity": "sha512-AWJm14H1vVaO/iNZ4/hO+HyaTehuy9nRqVdkTqlJt0HWvBiBIEXFmb4C0DGeYo3Xes9rrEW+TxHsaigCbN5ICQ==", "dev": true, "peer": true, "dependencies": { @@ -10003,9 +9813,9 @@ } }, "node_modules/rxjs/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/safe-array-concat": { "version": "1.1.2", @@ -10232,9 +10042,9 @@ } }, "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "bin": { "semver": "bin/semver.js" }, @@ -10243,9 +10053,9 @@ } }, "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "dependencies": { "randombytes": "^2.1.0" @@ -10976,9 +10786,9 @@ } }, "node_modules/svelte2tsx": { - "version": "0.7.9", - "resolved": "https://registry.npmjs.org/svelte2tsx/-/svelte2tsx-0.7.9.tgz", - "integrity": "sha512-Rm+0LAwg9wT4H2IsR8EaM9EWErTzi9LmuZKxkH5b1ua94XjQmwHstBP4VabLgA9AE6XmwBg+xK7Cjzwfm6ustQ==", + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/svelte2tsx/-/svelte2tsx-0.7.13.tgz", + "integrity": "sha512-aObZ93/kGAiLXA/I/kP+x9FriZM+GboB/ReOIGmLNbVGEd2xC+aTCppm3mk1cc9I/z60VQf7b2QDxC3jOXu3yw==", "dependencies": { "dedent-js": "^1.0.1", "pascal-case": "^3.1.1" @@ -11075,16 +10885,16 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.14.0.tgz", - "integrity": "sha512-oYs1UUtO97ZO2lJ4bwnWeQW8/zvOIQLGKcvPTsWmvc2SYgBb+upuNS5NxoLaMU4h8Ju3Nbj6Cq8mD2LQoqVKFA==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -11586,9 +11396,9 @@ } }, "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", "peer": true, "bin": { "tsc": "bin/tsc", @@ -11609,9 +11419,9 @@ } }, "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.0.tgz", + "integrity": "sha512-wNKHUY2hYYkf6oSFfhwwiHo4WCHzHmzcXsqXYTN9ja3iApYIFbb2U6ics9hBcYLHcYGQoAlwnZlTrf3oF+BL/Q==", "dev": true, "optional": true, "peer": true, @@ -11989,72 +11799,17 @@ "node": ">=8.0.0" } }, - "node_modules/web3-utils/node_modules/@noble/curves": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", - "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", - "dev": true, - "peer": true, - "dependencies": { - "@noble/hashes": "1.3.3" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/web3-utils/node_modules/@noble/hashes": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", - "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/web3-utils/node_modules/@scure/bip32": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.3.tgz", - "integrity": "sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==", - "dev": true, - "peer": true, - "dependencies": { - "@noble/curves": "~1.3.0", - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/web3-utils/node_modules/@scure/bip39": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.2.tgz", - "integrity": "sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==", - "dev": true, - "peer": true, - "dependencies": { - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/web3-utils/node_modules/ethereum-cryptography": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz", - "integrity": "sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", "dev": true, "peer": true, "dependencies": { - "@noble/curves": "1.3.0", - "@noble/hashes": "1.3.3", - "@scure/bip32": "1.3.3", - "@scure/bip39": "1.2.2" + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" } }, "node_modules/webidl-conversions": { @@ -12211,9 +11966,9 @@ } }, "node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", "dev": true }, "node_modules/wrap-ansi": { @@ -12240,9 +11995,9 @@ "dev": true }, "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "engines": { "node": ">=8.3.0" }, @@ -12319,9 +12074,9 @@ } }, "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, "engines": { "node": ">=10" @@ -12366,4 +12121,3 @@ } } } - diff --git a/package.json b/package.json index e80b4dd6..ddc89f29 100644 --- a/package.json +++ b/package.json @@ -24,11 +24,12 @@ "dependencies": { "@0xpolygonhermez/zkevm-commonjs": "github:0xpolygonhermez/zkevm-commonjs#v1.0.0", "@axelar-network/axelar-cgp-solidity": "6.3.1", - "@axelar-network/axelar-cgp-sui": "https://github.com/axelarnetwork/axelar-cgp-sui.git#main", + "@axelar-network/axelar-cgp-sui": "https://github.com/axelarnetwork/axelar-cgp-sui.git", "@axelar-network/axelar-gmp-sdk-solidity": "5.9.0", "@axelar-network/interchain-token-service": "1.2.4", "@cosmjs/cosmwasm-stargate": "^0.32.1", "@ledgerhq/hw-app-eth": "6.32.2", + "@mysten/sui.js": "^0.54.1", "@stellar/stellar-sdk": "^12.0.0-rc3", "axios": "^1.6.2", "path": "^0.12.7" diff --git a/sui/deploy-gateway.js b/sui/deploy-gateway.js index 2a4ea04c..6d28f0e1 100644 --- a/sui/deploy-gateway.js +++ b/sui/deploy-gateway.js @@ -1,6 +1,5 @@ const { saveConfig, prompt, printInfo } = require('../evm/utils'); const { Command, Option } = require('commander'); -const { publishPackage, updateMoveToml } = require('@axelar-network/axelar-cgp-sui/scripts/publish-package'); const { TransactionBlock } = require('@mysten/sui.js/transactions'); const { bcs } = require('@mysten/sui.js/bcs'); const { ethers } = require('hardhat'); @@ -12,7 +11,7 @@ const { const { addBaseOptions } = require('./cli-utils'); const { getWallet, printWalletInfo, broadcast } = require('./sign-utils'); const { bytes32Struct, signersStruct } = require('./types-utils'); -const { getAmplifierSigners, loadSuiConfig } = require('./utils'); +const { getAmplifierSigners, loadSuiConfig, deployPackage } = require('./utils'); async function getSigners(keypair, config, chain, options) { if (options.signers === 'wallet') { @@ -62,15 +61,10 @@ async function processCommand(config, chain, options) { return; } - const published = await publishPackage('axelar_gateway', client, keypair); - const packageId = published.packageId; + const { packageId, publishTxn } = await deployPackage('axelar_gateway', client, keypair); - updateMoveToml('axelar_gateway', packageId); - - const creatorCap = published.publishTxn.objectChanges.find((change) => change.objectType === `${packageId}::gateway::CreatorCap`); - const relayerDiscovery = published.publishTxn.objectChanges.find( - (change) => change.objectType === `${packageId}::discovery::RelayerDiscovery`, - ); + const creatorCap = publishTxn.objectChanges.find((change) => change.objectType === `${packageId}::gateway::CreatorCap`); + const relayerDiscovery = publishTxn.objectChanges.find((change) => change.objectType === `${packageId}::discovery::RelayerDiscovery`); const encodedSigners = signersStruct .serialize({ diff --git a/sui/deploy-test.js b/sui/deploy-test.js index 6a499f00..10c7cafd 100644 --- a/sui/deploy-test.js +++ b/sui/deploy-test.js @@ -1,12 +1,11 @@ const { saveConfig, prompt, printInfo } = require('../evm/utils'); const { Command, Option } = require('commander'); -const { publishPackage, updateMoveToml } = require('@axelar-network/axelar-cgp-sui/scripts/publish-package'); const { TransactionBlock } = require('@mysten/sui.js/transactions'); const { ethers } = require('hardhat'); const { constants: { HashZero }, } = ethers; -const { loadSuiConfig } = require('./utils'); +const { loadSuiConfig, deployPackage } = require('./utils'); const { addBaseOptions } = require('./cli-utils'); const { getWallet, printWalletInfo, broadcast } = require('./sign-utils'); @@ -30,8 +29,7 @@ async function processCommand(config, chain, options) { return; } - const published = await publishPackage('test', client, keypair); - updateMoveToml('test', published.packageId); + const published = await deployPackage('test', client, keypair); const singleton = published.publishTxn.objectChanges.find((change) => change.objectType === `${published.packageId}::test::Singleton`); diff --git a/sui/deploy-utils.js b/sui/deploy-utils.js new file mode 100644 index 00000000..a6f53db6 --- /dev/null +++ b/sui/deploy-utils.js @@ -0,0 +1,177 @@ +const { Command, Option } = require('commander'); +const { TxBuilder, updateMoveToml } = require('@axelar-network/axelar-cgp-sui'); +const { bcs } = require('@mysten/sui.js/bcs'); +const { fromB64, toB64 } = require('@mysten/bcs'); +const { saveConfig, printInfo, validateParameters, prompt, writeJSON } = require('../evm/utils'); +const { addBaseOptions } = require('./cli-utils'); +const { getWallet } = require('./sign-utils'); +const { loadSuiConfig } = require('./utils'); + +async function upgradePackage(client, keypair, packageName, packageConfig, builder, options) { + const { modules, dependencies, digest } = await builder.getContractBuild(packageName); + const { policy, offline } = options; + const sender = options.sender || keypair.toSuiAddress(); + const suiPackageId = '0x2'; + + const upgradeCap = packageConfig.objects?.UpgradeCap; + const digestHash = options.digest ? fromB64(options.digest) : digest; + + validateParameters({ isNonEmptyString: { upgradeCap, policy }, isNonEmptyStringArray: { modules, dependencies } }); + + const tx = builder.tx; + const cap = tx.object(upgradeCap); + + const ticket = tx.moveCall({ + target: `${suiPackageId}::package::authorize_upgrade`, + arguments: [cap, tx.pure(policy), tx.pure(bcs.vector(bcs.u8()).serialize(digestHash).toBytes())], + }); + + const receipt = tx.upgrade({ + modules, + dependencies, + packageId: packageConfig.address, + ticket, + }); + + tx.moveCall({ + target: `${suiPackageId}::package::commit_upgrade`, + arguments: [cap, receipt], + }); + + tx.setSender(sender); + const txBytes = await tx.build({ client }); + + if (offline) { + options.txBytes = txBytes; + } else { + const signature = (await keypair.signTransactionBlock(txBytes)).signature; + const result = await client.executeTransactionBlock({ + transactionBlock: txBytes, + signature, + options: { + showEffects: true, + showObjectChanges: true, + showEvents: true, + }, + }); + + const packageId = (result.objectChanges?.filter((a) => a.type === 'published') ?? [])[0].packageId; + packageConfig.address = packageId; + printInfo('Transaction result', JSON.stringify(result, null, 2)); + printInfo(`${packageName} upgraded`, packageId); + } +} + +async function deployPackage(chain, client, keypair, packageName, packageConfig, builder, options) { + const { offline, sender } = options; + + const address = sender || keypair.toSuiAddress(); + await builder.publishPackageAndTransferCap(packageName, address); + const tx = builder.tx; + tx.setSender(address); + const txBytes = await tx.build({ client }); + + if (offline) { + options.txBytes = txBytes; + } else { + if (prompt(`Proceed with deployment on ${chain.name}?`, options.yes)) { + return; + } + + const signature = (await keypair.signTransactionBlock(txBytes)).signature; + const publishTxn = await client.executeTransactionBlock({ + transactionBlock: txBytes, + signature, + options: { + showEffects: true, + showObjectChanges: true, + showEvents: true, + }, + }); + + packageConfig.address = (publishTxn.objectChanges?.find((a) => a.type === 'published') ?? []).packageId; + const objectChanges = publishTxn.objectChanges.filter((object) => object.type === 'created'); + packageConfig.objects = {}; + + for (const object of objectChanges) { + const array = object.objectType.split('::'); + const objectName = array[array.length - 1]; + + if (objectName) { + packageConfig.objects[objectName] = object.objectId; + } + } + + printInfo(`${packageName} deployed`, JSON.stringify(packageConfig, null, 2)); + } +} + +async function processCommand(chain, options) { + const [keypair, client] = getWallet(chain, options); + const { upgrade, packageName, packageDependencies, offline, txFilePath } = options; + + printInfo('Wallet address', keypair.toSuiAddress()); + + if (!chain.contracts[packageName]) { + chain.contracts[packageName] = {}; + } + + const contractsConfig = chain.contracts; + const packageConfig = contractsConfig?.[packageName]; + + validateParameters({ isNonEmptyString: { packageName } }); + + if (packageDependencies) { + for (const dependencies of packageDependencies) { + const packageId = contractsConfig[dependencies]?.address; + updateMoveToml(dependencies, packageId); + } + } + + const builder = new TxBuilder(client); + + if (upgrade) { + await upgradePackage(client, keypair, packageName, packageConfig, builder, options); + } else { + await deployPackage(chain, client, keypair, packageName, packageConfig, builder, options); + } + + if (offline) { + validateParameters({ isNonEmptyString: { txFilePath } }); + + const txB64Bytes = toB64(options.txBytes); + + writeJSON({ status: 'PENDING', bytes: txB64Bytes }, txFilePath); + printInfo(`The unsigned transaction is`, txB64Bytes); + } +} + +async function mainProcessor(options, processor) { + const config = loadSuiConfig(options.env); + + await processor(config.sui, options); + saveConfig(config, options.env); +} + +if (require.main === module) { + const program = new Command(); + + program.name('deploy-upgrade').description('Deploy/Upgrade the Sui package'); + + addBaseOptions(program); + + program.addOption(new Option('--packageName ', 'package name to deploy/upgrade')); + program.addOption(new Option('--packageDependencies [packageDependencies...]', 'array of package dependencies')); + program.addOption(new Option('--upgrade', 'deploy or upgrade')); + program.addOption(new Option('--policy ', 'new policy to upgrade')); + program.addOption(new Option('--sender ', 'transaction sender')); + program.addOption(new Option('--digest ', 'digest hash for upgrade')); + program.addOption(new Option('--offline', 'store tx block for sign')); + program.addOption(new Option('--txFilePath ', 'unsigned transaction will be stored')); + + program.action((options) => { + mainProcessor(options, processCommand); + }); + + program.parse(); +} diff --git a/sui/utils.js b/sui/utils.js index 03d2de1b..9b9e760d 100644 --- a/sui/utils.js +++ b/sui/utils.js @@ -8,6 +8,7 @@ const { } = ethers; const { fromB64 } = require('@mysten/bcs'); const { CosmWasmClient } = require('@cosmjs/cosmwasm-stargate'); +const { updateMoveToml, copyMovePackage, TxBuilder } = require('@axelar-network/axelar-cgp-sui'); const getAmplifierSigners = async (config, chain) => { const client = await CosmWasmClient.connect(config.axelar.rpc); @@ -61,6 +62,21 @@ const loadSuiConfig = (env) => { return config; }; +const deployPackage = async (packageName, client, keypair, options = {}) => { + const compileDir = `${__dirname}/move`; + + copyMovePackage(packageName, null, compileDir); + + const builder = new TxBuilder(client); + await builder.publishPackageAndTransferCap(packageName, options.owner || keypair.toSuiAddress(), compileDir); + const publishTxn = await builder.signAndExecute(keypair); + + const packageId = (publishTxn.objectChanges?.find((a) => a.type === 'published') ?? []).packageId; + + updateMoveToml(packageName, packageId, compileDir); + return { packageId, publishTxn }; +}; + const findPublishedObject = (published, packageName, contractName) => { const packageId = published.packageId; return published.publishTxn.objectChanges.find((change) => change.objectType === `${packageId}::${packageName}::${contractName}`); @@ -70,5 +86,6 @@ module.exports = { getAmplifierSigners, getBcsBytesByObjectId, loadSuiConfig, + deployPackage, findPublishedObject, }; From f08eb066b0d9fc6a319eb0c2f61b87af0c188304 Mon Sep 17 00:00:00 2001 From: Foivos Date: Thu, 18 Jul 2024 19:56:20 +0300 Subject: [PATCH 6/7] feat: add axelar trasceiver to the info files (#304) --- axelar-chains-config/info/mainnet.json | 20 ++++++++++++++++++++ axelar-chains-config/info/testnet.json | 20 ++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/axelar-chains-config/info/mainnet.json b/axelar-chains-config/info/mainnet.json index 1b8ec7f0..cb02b7ce 100644 --- a/axelar-chains-config/info/mainnet.json +++ b/axelar-chains-config/info/mainnet.json @@ -112,6 +112,16 @@ "deployer": "0x6f24A47Fc8AE5441Eb47EFfC3665e70e69Ac3F05", "implementation": "0xA852412D2d91fE05d790934B6E64C3C351fAB54f", "address": "0x83a93500d23Fbc3e82B410aD07A6a9F7A0670D66" + }, + "AxelarTransceiver": { + "salt": "AXELAR_TRANSCEIVER v1.1.0", + "deployer": "0xba76c6980428A0b10CFC5d8ccb61949677A61233", + "implementation": "0x87fc4b27385bb4e69a40027931229d74ef4d1943", + "address": "0x723AEAD29acee7E9281C32D11eA4ed0070c41B13", + "TransceiverStructs": "0xa12bc993d8144404a8c8c812816048275a066ced", + "wstETH token": "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", + "NttManager": "0xb948a93827d68a82F6513Ad178964Da487fe2BD9", + "wormholeChainId": 2 } }, "explorer": { @@ -733,6 +743,16 @@ "deployer": "0x6f24A47Fc8AE5441Eb47EFfC3665e70e69Ac3F05", "implementation": "0xA852412D2d91fE05d790934B6E64C3C351fAB54f", "address": "0x83a93500d23Fbc3e82B410aD07A6a9F7A0670D66" + }, + "AxelarTransceiver": { + "salt": "AXELAR_TRANSCEIVER v1.1.0", + "deployer": "0xba76c6980428A0b10CFC5d8ccb61949677A61233", + "implementation": "0xa1ebb6a4b856df8bf6c3aca88a9115a9ab3b2e02", + "address": "0x723AEAD29acee7E9281C32D11eA4ed0070c41B13", + "TransceiverStructs": "0x27a3daf3b243104e9b0afae6b56026a416b852c9", + "wstETH token": "0x26c5e01524d2E6280A48F2c50fF6De7e52E9611C", + "NttManager": "0x6981F5621691CBfE3DdD524dE71076b79F0A0278", + "wormholeChainId": 4 } }, "explorer": { diff --git a/axelar-chains-config/info/testnet.json b/axelar-chains-config/info/testnet.json index bd0d5b8d..128e3f39 100644 --- a/axelar-chains-config/info/testnet.json +++ b/axelar-chains-config/info/testnet.json @@ -94,6 +94,16 @@ "deployer": "0x6f24A47Fc8AE5441Eb47EFfC3665e70e69Ac3F05", "implementation": "0xA852412D2d91fE05d790934B6E64C3C351fAB54f", "address": "0x83a93500d23Fbc3e82B410aD07A6a9F7A0670D66" + }, + "AxelarTransceiver": { + "salt": "Transceiver 1.1.0", + "deployer": "0xc28a80699B5914a29465971E6ac5a40370C4f29b", + "implementation": "0xcc6e5c994de73e8a115263b1b512e29b2026df55", + "address": "0xaa8267908e8d2BEfeB601f88A7Cf3ec148039423", + "TransceiverStructs": "0x1ed363be5e925e0f0741207f3f9a48c366d26aba", + "wstETH token": "0xB82381A3fBD3FaFA77B3a7bE693342618240067b", + "NttManager": "0x8B715EAf61A7DdF61C67d5D46687c796D1f47146", + "wormholeChainId": 10002 } }, "explorer": { @@ -558,6 +568,16 @@ "deployer": "0x6f24A47Fc8AE5441Eb47EFfC3665e70e69Ac3F05", "implementation": "0xA852412D2d91fE05d790934B6E64C3C351fAB54f", "address": "0x83a93500d23Fbc3e82B410aD07A6a9F7A0670D66" + }, + "AxelarTransceiver": { + "salt": "Transceiver 1.1.0", + "deployer": "0xc28a80699B5914a29465971E6ac5a40370C4f29b", + "implementation": "0x4fe90d921e279f149ee7c7e1a79ee75803e846b1", + "address": "0xaa8267908e8d2BEfeB601f88A7Cf3ec148039423", + "TransceiverStructs": "0xeecf56798cfc9e927a83f98b0112484623cf175a", + "wstETH token": "0x0B15635FCF5316EdFD2a9A0b0dC3700aeA4D09E6", + "NttManager": "0x66Cb5a992570EF01b522Bc59A056a64A84Bd0aAa", + "wormholeChainId": 4 } }, "explorer": { From 9eb7341088cc0a2fd55e76377cd9b2a14f0989e9 Mon Sep 17 00:00:00 2001 From: Milap Sheth Date: Thu, 18 Jul 2024 15:42:57 -0400 Subject: [PATCH 7/7] refactor(sui): rename pubkey to pub_key for weighted signer type (#307) --- sui/README.md | 2 +- sui/deploy-gateway.js | 10 +++++----- sui/gateway.js | 6 +++--- sui/types-utils.js | 2 +- sui/utils.js | 4 ++-- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/sui/README.md b/sui/README.md index 4fb3e275..48d14aef 100644 --- a/sui/README.md +++ b/sui/README.md @@ -68,7 +68,7 @@ node sui/deploy-gateway.js --signers wallet --nonce test - You can also provide a JSON object with a full signer set: ```bash -node sui/deploy-gateway.js -e testnet --signers '{"signers": [{"pubkey": "0x020194ead85b350d90472117e6122cf1764d93bf17d6de4b51b03d19afc4d6302b", "weight": 1}], "threshold": 1, "nonce": "0x0000000000000000000000000000000000000000000000000000000000000000"}' +node sui/deploy-gateway.js -e testnet --signers '{"signers": [{"pub_key": "0x020194ead85b350d90472117e6122cf1764d93bf17d6de4b51b03d19afc4d6302b", "weight": 1}], "threshold": 1, "nonce": "0x0000000000000000000000000000000000000000000000000000000000000000"}' ``` Deploy the Gas Service package: diff --git a/sui/deploy-gateway.js b/sui/deploy-gateway.js index 6d28f0e1..4c849f42 100644 --- a/sui/deploy-gateway.js +++ b/sui/deploy-gateway.js @@ -15,15 +15,15 @@ const { getAmplifierSigners, loadSuiConfig, deployPackage } = require('./utils') async function getSigners(keypair, config, chain, options) { if (options.signers === 'wallet') { - const pubkey = keypair.getPublicKey().toRawBytes(); - printInfo('Using wallet pubkey as the signer for the gateway', hexlify(pubkey)); + const pubKey = keypair.getPublicKey().toRawBytes(); + printInfo('Using wallet pubkey as the signer for the gateway', hexlify(pubKey)); if (keypair.getKeyScheme() !== 'Secp256k1') { throw new Error('Only Secp256k1 pubkeys are supported by the gateway'); } return { - signers: [{ pubkey, weight: 1 }], + signers: [{ pub_key: pubKey, weight: 1 }], threshold: 1, nonce: options.nonce ? keccak256(toUtf8Bytes(options.nonce)) : HashZero, }; @@ -32,8 +32,8 @@ async function getSigners(keypair, config, chain, options) { const signers = JSON.parse(options.signers); return { - signers: signers.signers.map(({ pubkey, weight }) => { - return { pubkey: arrayify(pubkey), weight }; + signers: signers.signers.map(({ pub_key: pubKey, weight }) => { + return { pub_key: arrayify(pubKey), weight }; }), threshold: signers.threshold, nonce: arrayify(signers.nonce) || HashZero, diff --git a/sui/gateway.js b/sui/gateway.js index 0078d20e..f5b7818e 100644 --- a/sui/gateway.js +++ b/sui/gateway.js @@ -35,7 +35,7 @@ function getProofSigners(keypair, options) { } return { - signers: [{ pubkey: keypair.getPublicKey().toRawBytes(), weight: 1 }], + signers: [{ pub_key: keypair.getPublicKey().toRawBytes(), weight: 1 }], threshold: 1, nonce: options.currentNonce ? keccak256(toUtf8Bytes(options.currentNonce)) : HashZero, }; @@ -44,8 +44,8 @@ function getProofSigners(keypair, options) { const proof = JSON.parse(options.proof); return { - signers: proof.signers.signers.map(({ pubkey, weight }) => { - return { pubkey: arrayify(pubkey), weight }; + signers: proof.signers.signers.map(({ pub_key: pubKey, weight }) => { + return { pub_key: arrayify(pubKey), weight }; }), threshold: proof.signers.threshold, nonce: arrayify(proof.signers.nonce) || HashZero, diff --git a/sui/types-utils.js b/sui/types-utils.js index 5f2c0a4b..b8c3c98e 100644 --- a/sui/types-utils.js +++ b/sui/types-utils.js @@ -13,7 +13,7 @@ const addressStruct = bcs.bytes(32).transform({ }); const signerStruct = bcs.struct('WeightedSigner', { - pubkey: bcs.vector(bcs.u8()), + pub_key: bcs.vector(bcs.u8()), weight: bcs.u128(), }); diff --git a/sui/utils.js b/sui/utils.js index 9b9e760d..e46aedcb 100644 --- a/sui/utils.js +++ b/sui/utils.js @@ -20,10 +20,10 @@ const getAmplifierSigners = async (config, chain) => { const weightedSigners = signers .map((signer) => ({ - pubkey: arrayify(`0x${signer.pub_key.ecdsa}`), + pub_key: arrayify(`0x${signer.pub_key.ecdsa}`), weight: Number(signer.weight), })) - .sort((a, b) => hexlify(a.pubkey).localeCompare(hexlify(b.pubkey))); + .sort((a, b) => hexlify(a.pub_key).localeCompare(hexlify(b.pub_key))); return { signers: weightedSigners,