diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b6e13df83..115fa008e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -244,7 +244,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: - node-version: "16" + node-version: "20" - run: | cd clients/js && make test make docs diff --git a/clients/js/README.md b/clients/js/README.md index 35b414e8b..4572f65c1 100644 --- a/clients/js/README.md +++ b/clients/js/README.md @@ -248,16 +248,7 @@ Positionals: Options: --help Show help [boolean] --version Show version number [boolean] - -c, --chain chain name - [choices: "unset", "solana", "ethereum", "terra", "bsc", "polygon", - "avalanche", "oasis", "algorand", "aurora", "fantom", "karura", "acala", - "klaytn", "celo", "near", "moonbeam", "neon", "terra2", "injective", - "osmosis", "sui", "aptos", "arbitrum", "optimism", "gnosis", "pythnet", - "xpla", "btc", "base", "sei", "rootstock", "scroll", "mantle", "blast", - "xlayer", "linea", "berachain", "seievm", "wormchain", "cosmoshub", "evmos", - "kujira", "neutron", "celestia", "stargaze", "seda", "dymension", - "provenance", "sepolia", "arbitrum_sepolia", "base_sepolia", - "optimism_sepolia", "holesky", "polygon_sepolia"] + -c, --chain chain name [string] -n, --network Network [required] [choices: "mainnet", "testnet", "devnet"] -a, --contract-address Contract to submit VAA to (override config) [string] @@ -307,26 +298,8 @@ Options: Options: --help Show help [boolean] --version Show version number [boolean] - --src-chain source chain - [required] [choices: "solana", "ethereum", "terra", "bsc", "polygon", - "avalanche", "oasis", "algorand", "aurora", "fantom", "karura", "acala", - "klaytn", "celo", "near", "moonbeam", "neon", "terra2", "injective", - "osmosis", "sui", "aptos", "arbitrum", "optimism", "gnosis", "pythnet", - "xpla", "btc", "base", "sei", "rootstock", "scroll", "mantle", "blast", - "xlayer", "linea", "berachain", "seievm", "wormchain", "cosmoshub", "evmos", - "kujira", "neutron", "celestia", "stargaze", "seda", "dymension", - "provenance", "sepolia", "arbitrum_sepolia", "base_sepolia", - "optimism_sepolia", "holesky", "polygon_sepolia"] - --dst-chain destination chain - [required] [choices: "solana", "ethereum", "terra", "bsc", "polygon", - "avalanche", "oasis", "algorand", "aurora", "fantom", "karura", "acala", - "klaytn", "celo", "near", "moonbeam", "neon", "terra2", "injective", - "osmosis", "sui", "aptos", "arbitrum", "optimism", "gnosis", "pythnet", - "xpla", "btc", "base", "sei", "rootstock", "scroll", "mantle", "blast", - "xlayer", "linea", "berachain", "seievm", "wormchain", "cosmoshub", "evmos", - "kujira", "neutron", "celestia", "stargaze", "seda", "dymension", - "provenance", "sepolia", "arbitrum_sepolia", "base_sepolia", - "optimism_sepolia", "holesky", "polygon_sepolia"] + --src-chain source chain [string] [required] + --dst-chain destination chain [string] [required] --dst-addr destination address [string] [required] --token-addr token address [string] [default: native token] --amount token amount [string] [required] @@ -353,16 +326,7 @@ Options: ```sh Positionals: network Network [choices: "mainnet", "testnet", "devnet"] - chain Source chain - [choices: "unset", "solana", "ethereum", "terra", "bsc", "polygon", - "avalanche", "oasis", "algorand", "aurora", "fantom", "karura", "acala", - "klaytn", "celo", "near", "moonbeam", "neon", "terra2", "injective", - "osmosis", "sui", "aptos", "arbitrum", "optimism", "gnosis", "pythnet", - "xpla", "btc", "base", "sei", "rootstock", "scroll", "mantle", "blast", - "xlayer", "linea", "berachain", "seievm", "wormchain", "cosmoshub", "evmos", - "kujira", "neutron", "celestia", "stargaze", "seda", "dymension", - "provenance", "sepolia", "arbitrum_sepolia", "base_sepolia", - "optimism_sepolia", "holesky", "polygon_sepolia"] + chain Source chain [string] tx Source transaction hash [string] Options: diff --git a/clients/js/package-lock.json b/clients/js/package-lock.json index c95a003f1..e0bb8fc08 100644 --- a/clients/js/package-lock.json +++ b/clients/js/package-lock.json @@ -22,11 +22,13 @@ "@solana/web3.js": "^1.22.0", "@terra-money/terra.js": "^3.1.9", "@types/config": "^3.3.0", + "@wormhole-foundation/sdk": "^0.7.0-beta.5", "@xpla/xpla.js": "^0.2.1", "algosdk": "^2.4.0", "aptos": "^1.3.16", "axios": "^0.24.0", "base-64": "^1.0.0", + "bech32": "^2.0.0", "binary-parser": "^2.0.2", "bn.js": "^5.2.0", "bs58": "^4.0.1", @@ -48,23 +50,54 @@ "@types/bn.js": "^5.1.0", "@types/bs58": "^4.0.1", "@types/jest": "^29.5.12", + "@types/node": "^20.12.12", "@types/node-fetch": "^2.6.3", "@types/yargs": "^17.0.24", "copy-dir": "^1.3.0", "jest": "^29.7.0", "ts-jest": "^29.1.2", "tsx": "^4.12.0", - "typescript": "^4.6" + "typescript": "^5.4.5" } }, - "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, + "node_modules/@0no-co/graphql.web": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@0no-co/graphql.web/-/graphql.web-1.0.7.tgz", + "integrity": "sha512-E3Qku4mTzdrlwVWGPxklDnME5ANrEGetvYw4i2GCRlppWXXE4QD66j7pwb8HelZwS6LnqEChhrSOGCXpbiu6MQ==", + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + }, + "peerDependenciesMeta": { + "graphql": { + "optional": true + } + } + }, + "node_modules/@0no-co/graphqlsp": { + "version": "1.12.5", + "resolved": "https://registry.npmjs.org/@0no-co/graphqlsp/-/graphqlsp-1.12.5.tgz", + "integrity": "sha512-YS9s8sf3XLaVdBt33u1mbUdfUSLiarQW1SFd3ITh2CLWz1nVnVTN0oCrpepuFHUJ7rt+b6Gk14sgjP4ONdeZfQ==", "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@gql.tada/internal": "^1.0.0", + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0" + }, + "peerDependencies": { + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", + "typescript": "^5.0.0" + } + }, + "node_modules/@adraffy/ens-normalize": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==" + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -111,6 +144,41 @@ } } }, + "node_modules/@aptos-labs/aptos-client": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@aptos-labs/aptos-client/-/aptos-client-0.1.0.tgz", + "integrity": "sha512-q3s6pPq8H2buGp+tPuIRInWsYOuhSEwuNJPwd2YnsiID3YSLihn2ug39ktDJAcSOprUcp7Nid8WK7hKqnUmSdA==", + "dependencies": { + "axios": "1.6.2", + "got": "^11.8.6" + }, + "engines": { + "node": ">=15.10.0" + } + }, + "node_modules/@aptos-labs/aptos-client/node_modules/axios": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/@aptos-labs/aptos-client/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/@babel/code-frame": { "version": "7.24.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", @@ -187,20 +255,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@babel/helper-compilation-targets": { "version": "7.23.6", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", @@ -398,10 +452,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz", - "integrity": "sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==", - "dev": true, + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", + "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -771,10 +824,13 @@ "@types/node": "^18.0.3" } }, - "node_modules/@certusone/wormhole-sdk/node_modules/bech32": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", - "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" + "node_modules/@certusone/wormhole-sdk-wasm/node_modules/@types/node": { + "version": "18.19.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.33.tgz", + "integrity": "sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@classic-terra/terra.proto": { "version": "1.1.0", @@ -796,6 +852,80 @@ "protobufjs": "^6.8.8" } }, + "node_modules/@coral-xyz/anchor": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/@coral-xyz/anchor/-/anchor-0.29.0.tgz", + "integrity": "sha512-eny6QNG0WOwqV0zQ7cs/b1tIuzZGmP7U7EcH+ogt4Gdbl8HDmIYVMh/9aTmYZPaFWjtUaI8qSn73uYEXWfATdA==", + "dependencies": { + "@coral-xyz/borsh": "^0.29.0", + "@noble/hashes": "^1.3.1", + "@solana/web3.js": "^1.68.0", + "bn.js": "^5.1.2", + "bs58": "^4.0.1", + "buffer-layout": "^1.2.2", + "camelcase": "^6.3.0", + "cross-fetch": "^3.1.5", + "crypto-hash": "^1.3.0", + "eventemitter3": "^4.0.7", + "pako": "^2.0.3", + "snake-case": "^3.0.4", + "superstruct": "^0.15.4", + "toml": "^3.0.0" + }, + "engines": { + "node": ">=11" + } + }, + "node_modules/@coral-xyz/anchor/node_modules/@coral-xyz/borsh": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.29.0.tgz", + "integrity": "sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ==", + "dependencies": { + "bn.js": "^5.1.2", + "buffer-layout": "^1.2.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@solana/web3.js": "^1.68.0" + } + }, + "node_modules/@coral-xyz/anchor/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@coral-xyz/anchor/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@coral-xyz/anchor/node_modules/cross-fetch": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "node_modules/@coral-xyz/anchor/node_modules/superstruct": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.15.5.tgz", + "integrity": "sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==" + }, "node_modules/@coral-xyz/borsh": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.2.6.tgz", @@ -832,6 +962,11 @@ "readonly-date": "^1.0.0" } }, + "node_modules/@cosmjs/amino/node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, "node_modules/@cosmjs/cosmwasm-stargate": { "version": "0.29.5", "resolved": "https://registry.npmjs.org/@cosmjs/cosmwasm-stargate/-/cosmwasm-stargate-0.29.5.tgz", @@ -860,6 +995,11 @@ "readonly-date": "^1.0.0" } }, + "node_modules/@cosmjs/cosmwasm-stargate/node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, "node_modules/@cosmjs/crypto": { "version": "0.29.5", "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.29.5.tgz", @@ -884,6 +1024,11 @@ "readonly-date": "^1.0.0" } }, + "node_modules/@cosmjs/crypto/node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, "node_modules/@cosmjs/encoding": { "version": "0.26.8", "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.26.8.tgz", @@ -894,6 +1039,11 @@ "readonly-date": "^1.0.0" } }, + "node_modules/@cosmjs/encoding/node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, "node_modules/@cosmjs/json-rpc": { "version": "0.29.5", "resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.29.5.tgz", @@ -935,6 +1085,11 @@ "readonly-date": "^1.0.0" } }, + "node_modules/@cosmjs/proto-signing/node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, "node_modules/@cosmjs/socket": { "version": "0.29.5", "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.29.5.tgz", @@ -975,6 +1130,11 @@ "readonly-date": "^1.0.0" } }, + "node_modules/@cosmjs/stargate/node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, "node_modules/@cosmjs/stream": { "version": "0.29.5", "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.29.5.tgz", @@ -1018,11 +1178,26 @@ "follow-redirects": "^1.14.0" } }, + "node_modules/@cosmjs/tendermint-rpc/node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, "node_modules/@cosmjs/utils": { "version": "0.29.5", "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.29.5.tgz", "integrity": "sha512-m7h+RXDUxOzEOGt4P+3OVPX7PuakZT3GBmaM/Y2u+abN3xZkziykD/NvedYFvvCCdQo714XcGl33bwifS9FZPQ==" }, + "node_modules/@ensdomains/ens-validation": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@ensdomains/ens-validation/-/ens-validation-0.1.0.tgz", + "integrity": "sha512-rbDh2K6GfqXvBcJUISaTTYEt3f079WA4ohTE5Lh4/8EaaPAk/9vk3EisMUQV2UVxeFIZQEEyRCIOmRTpqN0W7A==" + }, + "node_modules/@ensdomains/eth-ens-namehash": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@ensdomains/eth-ens-namehash/-/eth-ens-namehash-2.0.15.tgz", + "integrity": "sha512-JRDFP6+Hczb1E0/HhIg0PONgBYasfGfDheujmfxaZaAv/NAH4jE6Kf48WbqfRZdxt4IZI3jl3Ri7sZ1nP09lgw==" + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", @@ -1812,6 +1987,11 @@ "ws": "7.4.6" } }, + "node_modules/@ethersproject/providers/node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, "node_modules/@ethersproject/providers/node_modules/ws": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", @@ -2078,12 +2258,41 @@ "@ethersproject/strings": "^5.7.0" } }, - "node_modules/@graphql-typed-document-node/core": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz", - "integrity": "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==", + "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==", + "dependencies": { + "@0no-co/graphqlsp": "^1.12.1", + "@gql.tada/internal": "1.0.0", + "@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": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + "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==", + "dependencies": { + "@0no-co/graphql.web": "^1.0.5" + }, + "peerDependencies": { + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0", + "typescript": "^5.0.0" + } + }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, "node_modules/@improbable-eng/grpc-web": { @@ -2144,14 +2353,53 @@ "node": ">=12.0.0" } }, + "node_modules/@injectivelabs/dmm-proto-ts": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/@injectivelabs/dmm-proto-ts/-/dmm-proto-ts-1.0.19.tgz", + "integrity": "sha512-2FCzCziy1RhzmnkAVIU+Asby/GXAVQqKt5/o1s52j0LJXfJMpiCrV6soLfnjTebj61T+1WvJBPFoZCCiVYBpcw==", + "dependencies": { + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + } + }, + "node_modules/@injectivelabs/dmm-proto-ts/node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + }, + "node_modules/@injectivelabs/dmm-proto-ts/node_modules/protobufjs": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz", + "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/@injectivelabs/exceptions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@injectivelabs/exceptions/-/exceptions-1.11.0.tgz", - "integrity": "sha512-jZ0N4cP1KCyErNEiCARaKt70E8KMTNa9R4a5FrCERX4cFKPxdbWpoQ8Lqga2jfHAgiFcChRJ5JmaSYclFtKf9w==", + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/@injectivelabs/exceptions/-/exceptions-1.14.6.tgz", + "integrity": "sha512-A+URJwygeDjFPhulGMNVw70z738NtpIiCr0W8q4Kr4Ggg30i+AaVAjViYLm56pSMXXpomu9CYJ/sY6ijQn48IQ==", "hasInstallScript": true, "dependencies": { "@injectivelabs/grpc-web": "^0.0.1", - "@injectivelabs/ts-types": "^1.11.0", + "@injectivelabs/ts-types": "^1.14.6", "http-status-codes": "^2.2.0", "link-module-alias": "^1.2.0", "shx": "^0.3.2" @@ -2467,11 +2715,6 @@ "form-data": "^4.0.0" } }, - "node_modules/@injectivelabs/sdk-ts/node_modules/bech32": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", - "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" - }, "node_modules/@injectivelabs/sdk-ts/node_modules/cosmjs-types": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.7.2.tgz", @@ -2495,9 +2738,9 @@ } }, "node_modules/@injectivelabs/test-utils": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@injectivelabs/test-utils/-/test-utils-1.11.0.tgz", - "integrity": "sha512-/KIPGeLFsjITs43yQG++SoOtDExZr+Pa3JVYIZEIMFUVG8a7z9Vi5m6a1kbowvozZbLG5KHuuUXF2SdfKSxznQ==", + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/@injectivelabs/test-utils/-/test-utils-1.14.4.tgz", + "integrity": "sha512-M7UoB5CIVVN7BtdmU26GwZsWKp0BQg9qV5a+YvcdhlwlSIkvt3gKVKBMq/vKClCakOu2AjhCVGDMZVnagIBogg==", "hasInstallScript": true, "dependencies": { "axios": "^0.21.1", @@ -2517,15 +2760,15 @@ } }, "node_modules/@injectivelabs/token-metadata": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@injectivelabs/token-metadata/-/token-metadata-1.11.0.tgz", - "integrity": "sha512-RzwJvnjDX8IwXYTvZDCMQcGxkN/0ZfXUEYTVMB0WMU0bRH7cV7WJ6Z9UDOijAehrJHu/fByDz2DuEOcktbwoIw==", + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/@injectivelabs/token-metadata/-/token-metadata-1.14.7.tgz", + "integrity": "sha512-RRRuyirzoThwQ5P8D3STH2YOavGsdnetQy6ZPQ8yA7VUavt00KBB26M92zSLbiUz5VrxhPHDCEEkuJVWx+xtmw==", "hasInstallScript": true, "dependencies": { - "@injectivelabs/exceptions": "^1.11.0", - "@injectivelabs/networks": "^1.11.0", - "@injectivelabs/ts-types": "^1.11.0", - "@injectivelabs/utils": "^1.11.0", + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/networks": "^1.14.6", + "@injectivelabs/ts-types": "^1.14.6", + "@injectivelabs/utils": "^1.14.6", "@types/lodash.values": "^4.3.6", "copyfiles": "^2.4.1", "jsonschema": "^1.4.0", @@ -2536,26 +2779,26 @@ } }, "node_modules/@injectivelabs/token-metadata/node_modules/@injectivelabs/networks": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@injectivelabs/networks/-/networks-1.11.0.tgz", - "integrity": "sha512-0dtO/zZ8AzsxGInEWZ7tpOA0Q++M3FhAFxOWzhYC39ZeJlwHhEcYmvmhrGG5gRdus29XfFysRlaz3hyT3XH1Jg==", + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/@injectivelabs/networks/-/networks-1.14.6.tgz", + "integrity": "sha512-O1IkPFJl8ThNL6N+k/9OimrgCYsSWQ8A1FtVMXSQge+0QRZsDKSpRmQRwE601otXXauO31nOUct5AaiWPffXVQ==", "hasInstallScript": true, "dependencies": { - "@injectivelabs/exceptions": "^1.11.0", - "@injectivelabs/ts-types": "^1.11.0", - "@injectivelabs/utils": "^1.11.0", + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/ts-types": "^1.14.6", + "@injectivelabs/utils": "^1.14.6", "link-module-alias": "^1.2.0", "shx": "^0.3.2" } }, "node_modules/@injectivelabs/token-metadata/node_modules/@injectivelabs/utils": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@injectivelabs/utils/-/utils-1.11.0.tgz", - "integrity": "sha512-KnUmt4vIvoBz6F3mQomy4GeTkpcHMYwju2AgiqzARrrqgF/2p1ZHfKBpr1ksj/jkl5X+irh3JVfbd/dFjwKi1g==", + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/@injectivelabs/utils/-/utils-1.14.6.tgz", + "integrity": "sha512-5I0h4GiLB5PPTl+g2lpevRP+WScvEbntdkoUQVtAdHewl4kutd5p1Kcnoi1Nvpq+sz5N/e9qtBIRuyxG38akOg==", "hasInstallScript": true, "dependencies": { - "@injectivelabs/exceptions": "^1.11.0", - "@injectivelabs/ts-types": "^1.11.0", + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/ts-types": "^1.14.6", "axios": "^0.21.1", "bignumber.js": "^9.0.1", "http-status-codes": "^2.2.0", @@ -2574,9 +2817,9 @@ } }, "node_modules/@injectivelabs/ts-types": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@injectivelabs/ts-types/-/ts-types-1.11.0.tgz", - "integrity": "sha512-3ZVRW1xMe3RHOxFblRC0LgQcU/rpxgZQZ+sISyRKFGcS/m2ApkdmcPvjMgd5TQe9AXW/6nnvmul3mST8iAaUJg==", + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/@injectivelabs/ts-types/-/ts-types-1.14.6.tgz", + "integrity": "sha512-/Ax5eCSfE9OhcyUc9wZk/LFKTYhIY9RJIaNT/n92rbHjXSfXRLSX+Bvk62vC9Ej+SEBPp77WYngtrePPA1HEgw==", "hasInstallScript": true, "dependencies": { "link-module-alias": "^1.2.0", @@ -3097,13 +3340,13 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -3113,7 +3356,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -3122,22 +3364,19 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -3264,75 +3503,39 @@ } }, "node_modules/@mysten/sui.js/node_modules/@noble/hashes": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz", - "integrity": "sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } }, "node_modules/@mysten/sui.js/node_modules/@scure/bip32": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.0.tgz", - "integrity": "sha512-bcKpo1oj54hGholplGLpqPHRbIsnbixFtc06nwuNM5/dwSXOq/AAYoIBRsBmnZJSdfeNW5rnff7NTAz3ZCqR9Q==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", "dependencies": { - "@noble/curves": "~1.0.0", - "@noble/hashes": "~1.3.0", - "@scure/base": "~1.1.0" + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, "node_modules/@mysten/sui.js/node_modules/@scure/bip39": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.0.tgz", - "integrity": "sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", "dependencies": { - "@noble/hashes": "~1.3.0", - "@scure/base": "~1.1.0" - } - }, - "node_modules/@mysten/sui.js/node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" - }, - "node_modules/@mysten/sui.js/node_modules/jayson": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.1.0.tgz", - "integrity": "sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==", - "dependencies": { - "@types/connect": "^3.4.33", - "@types/node": "^12.12.54", - "@types/ws": "^7.4.4", - "commander": "^2.20.3", - "delay": "^5.0.0", - "es6-promisify": "^5.0.0", - "eyes": "^0.1.8", - "isomorphic-ws": "^4.0.1", - "json-stringify-safe": "^5.0.1", - "JSONStream": "^1.3.5", - "uuid": "^8.3.2", - "ws": "^7.4.5" + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" }, - "bin": { - "jayson": "bin/jayson.js" - }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://paulmillr.com/funding/" } }, "node_modules/@mysten/sui.js/node_modules/superstruct": { @@ -3343,49 +3546,27 @@ "node": ">=14.0.0" } }, - "node_modules/@mysten/sui.js/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@noble/curves": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.0.0.tgz", - "integrity": "sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.0.tgz", + "integrity": "sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==", "dependencies": { - "@noble/hashes": "1.3.0" + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, "node_modules/@noble/curves/node_modules/@noble/hashes": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz", - "integrity": "sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "node_modules/@noble/ed25519": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.1.tgz", - "integrity": "sha512-Rk4SkJFaXZiznFyC/t77Q0NKS4FL7TLJJsVG2V2oiEq3kJVeTdxysEe/yRWSpnWMe808XRDJ+VFh5pt/FN5plw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } }, "node_modules/@noble/hashes": { "version": "1.1.3", @@ -3402,6 +3583,7 @@ "version": "1.6.3", "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.6.3.tgz", "integrity": "sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ==", + "dev": true, "funding": [ { "type": "individual", @@ -3597,6 +3779,11 @@ "follow-redirects": "^1.14.0" } }, + "node_modules/@osmonauts/helpers/node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, "node_modules/@osmonauts/helpers/node_modules/cosmjs-types": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.5.1.tgz", @@ -3766,15 +3953,12 @@ "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" }, "node_modules/@scure/base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", - "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] + "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==", + "funding": { + "url": "https://paulmillr.com/funding/" + } }, "node_modules/@scure/bip32": { "version": "1.1.0", @@ -3838,6 +4022,11 @@ "readonly-date": "^1.0.0" } }, + "node_modules/@sei-js/core/node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, "node_modules/@sei-js/proto": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@sei-js/proto/-/proto-1.2.0.tgz", @@ -3875,12 +4064,28 @@ "readonly-date": "^1.0.0" } }, + "node_modules/@sei-js/proto/node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "dev": true }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, "node_modules/@sinonjs/commons": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", @@ -3900,9 +4105,9 @@ } }, "node_modules/@solana/buffer-layout": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.0.tgz", - "integrity": "sha512-lR0EMP2HC3+Mxwd4YcnZb0smnaDw7Bl2IQWZiTevRH5ZZBZn6VRWn3/92E3qdU4SSImJkA6IDHawOHAnx/qUvQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz", + "integrity": "sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==", "dependencies": { "buffer": "~6.0.3" }, @@ -3924,33 +4129,10 @@ "node": ">= 10" } }, - "node_modules/@solana/buffer-layout/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/@solana/spl-token": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.3.5.tgz", - "integrity": "sha512-0bGC6n415lGjKu02gkLOIpP1wzndSP0SHwN9PefJ+wKAhmfU1rl3AV1Pa41uap2kzSCD6F9642ngNO8KXPvh/g==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.3.9.tgz", + "integrity": "sha512-1EXHxKICMnab35MvvY/5DBc/K/uQAOJCYnDZXw83McCAYUAfi+rwq6qfd6MmITmSTEhcfBcl/zYxmW/OSN0RmA==", "dependencies": { "@solana/buffer-layout": "^4.0.0", "@solana/buffer-layout-utils": "^0.2.0", @@ -3963,59 +4145,71 @@ "@solana/web3.js": "^1.47.4" } }, - "node_modules/@solana/spl-token/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/@solana/web3.js": { - "version": "1.66.2", - "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.66.2.tgz", - "integrity": "sha512-RyaHMR2jGmaesnYP045VLeBGfR/gAW3cvZHzMFGg7bkO+WOYOYp1nEllf0/la4U4qsYGKCsO9eEevR5fhHiVHg==", + "version": "1.91.7", + "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.91.7.tgz", + "integrity": "sha512-HqljZKDwk6Z4TajKRGhGLlRsbGK4S8EY27DA7v1z6yakewiUY3J7ZKDZRxcqz2MYV/ZXRrJ6wnnpiHFkPdv0WA==", "dependencies": { - "@babel/runtime": "^7.12.5", - "@noble/ed25519": "^1.7.0", - "@noble/hashes": "^1.1.2", - "@noble/secp256k1": "^1.6.3", - "@solana/buffer-layout": "^4.0.0", + "@babel/runtime": "^7.23.4", + "@noble/curves": "^1.4.0", + "@noble/hashes": "^1.3.3", + "@solana/buffer-layout": "^4.0.1", + "agentkeepalive": "^4.5.0", "bigint-buffer": "^1.1.5", - "bn.js": "^5.0.0", + "bn.js": "^5.2.1", "borsh": "^0.7.0", "bs58": "^4.0.1", - "buffer": "6.0.1", + "buffer": "6.0.3", "fast-stable-stringify": "^1.0.0", - "jayson": "^3.4.4", - "node-fetch": "2", - "rpc-websockets": "^7.5.0", + "jayson": "^4.1.0", + "node-fetch": "^2.7.0", + "rpc-websockets": "^7.5.1", "superstruct": "^0.14.2" + } + }, + "node_modules/@solana/web3.js/node_modules/@babel/runtime": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", + "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", + "dependencies": { + "regenerator-runtime": "^0.14.0" }, "engines": { - "node": ">=12.20.0" + "node": ">=6.9.0" } }, + "node_modules/@solana/web3.js/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@solana/web3.js/node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, "node_modules/@suchipi/femver": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@suchipi/femver/-/femver-1.0.0.tgz", "integrity": "sha512-bprE8+K5V+DPX7q2e2K57ImqNBdfGHDIWaGI5xHxZoxbKOuQZn4wzPiUxOAHnsUr3w3xHrWXwN7gnG/iIuEMIg==" }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@terra-money/legacy.proto": { "name": "@terra-money/terra.proto", "version": "0.1.7", @@ -4060,11 +4254,6 @@ "form-data": "^4.0.0" } }, - "node_modules/@terra-money/terra.js/node_modules/bech32": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", - "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" - }, "node_modules/@terra-money/terra.js/node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -4186,6 +4375,17 @@ "base-x": "^3.0.6" } }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, "node_modules/@types/config": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/@types/config/-/config-3.3.0.tgz", @@ -4198,14 +4398,11 @@ "@types/node": "*" } }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.24", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "peer": true }, "node_modules/@types/graceful-fs": { "version": "4.1.9", @@ -4216,6 +4413,11 @@ "@types/node": "*" } }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", @@ -4250,6 +4452,14 @@ "pretty-format": "^29.0.0" } }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/lodash": { "version": "4.14.171", "license": "MIT" @@ -4268,9 +4478,12 @@ "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" }, "node_modules/@types/node": { - "version": "18.7.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.6.tgz", - "integrity": "sha512-EdxgKRXgYsNITy5mjjXjVE/CS8YENSdhiagGrLqjG0pvA2owgJ6i4l7wy/PFZGC0B1/H20lWKN7ONVDNYDZm7A==" + "version": "20.12.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", + "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/node-fetch": { "version": "2.6.3", @@ -4304,13 +4517,13 @@ "@types/node": "*" } }, - "node_modules/@types/qs": { - "version": "6.9.7", - "license": "MIT" - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "license": "MIT" + "node_modules/@types/responselike": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "dependencies": { + "@types/node": "*" + } }, "node_modules/@types/secp256k1": { "version": "4.0.3", @@ -4348,6 +4561,2541 @@ "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", "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==", + "dependencies": { + "@volar/source-map": "2.2.5" + } + }, + "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" + } + }, + "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==", + "dependencies": { + "@babel/parser": "^7.24.4", + "@vue/shared": "3.4.27", + "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==", + "dependencies": { + "@vue/compiler-core": "3.4.27", + "@vue/shared": "3.4.27" + } + }, + "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==", + "dependencies": { + "@volar/language-core": "~2.2.4", + "@vue/compiler-dom": "^3.4.0", + "@vue/shared": "^3.4.0", + "computeds": "^0.0.1", + "minimatch": "^9.0.3", + "path-browserify": "^1.0.1", + "vue-template-compiler": "^2.7.14" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/language-core/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "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==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vue/shared": { + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.27.tgz", + "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==" + }, + "node_modules/@wormhole-foundation/sdk": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk/-/sdk-0.7.0-beta.5.tgz", + "integrity": "sha512-0IM8xngEghx5Uf3/SnzQeBrOHBONj92GJ6/RETzuvmCx3YkZpy9gFo1ctvD9Ey4MrWbTdQk7qMnpCZOwpldWWw==", + "dependencies": { + "@wormhole-foundation/sdk-algorand": "0.7.0-beta.5", + "@wormhole-foundation/sdk-algorand-core": "0.7.0-beta.5", + "@wormhole-foundation/sdk-algorand-tokenbridge": "0.7.0-beta.5", + "@wormhole-foundation/sdk-aptos": "0.7.0-beta.5", + "@wormhole-foundation/sdk-aptos-core": "0.7.0-beta.5", + "@wormhole-foundation/sdk-aptos-tokenbridge": "0.7.0-beta.5", + "@wormhole-foundation/sdk-base": "0.7.0-beta.5", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "@wormhole-foundation/sdk-cosmwasm": "0.7.0-beta.5", + "@wormhole-foundation/sdk-cosmwasm-core": "0.7.0-beta.5", + "@wormhole-foundation/sdk-cosmwasm-ibc": "0.7.0-beta.5", + "@wormhole-foundation/sdk-cosmwasm-tokenbridge": "0.7.0-beta.5", + "@wormhole-foundation/sdk-definitions": "0.7.0-beta.5", + "@wormhole-foundation/sdk-evm": "0.7.0-beta.5", + "@wormhole-foundation/sdk-evm-cctp": "0.7.0-beta.5", + "@wormhole-foundation/sdk-evm-core": "0.7.0-beta.5", + "@wormhole-foundation/sdk-evm-portico": "0.7.0-beta.5", + "@wormhole-foundation/sdk-evm-tokenbridge": "0.7.0-beta.5", + "@wormhole-foundation/sdk-solana": "0.7.0-beta.5", + "@wormhole-foundation/sdk-solana-cctp": "0.7.0-beta.5", + "@wormhole-foundation/sdk-solana-core": "0.7.0-beta.5", + "@wormhole-foundation/sdk-solana-tokenbridge": "0.7.0-beta.5", + "@wormhole-foundation/sdk-sui": "0.7.0-beta.5", + "@wormhole-foundation/sdk-sui-core": "0.7.0-beta.5", + "@wormhole-foundation/sdk-sui-tokenbridge": "0.7.0-beta.5" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-algorand": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-algorand/-/sdk-algorand-0.7.0-beta.5.tgz", + "integrity": "sha512-DYhinpe/41b8nu+xS9I1KmzUMUIicZYmKWH7Ea5/5KTA6pB8tM3AHTKa54cqb5g6n14VQmfbnHFbGVAUjqSL6g==", + "dependencies": { + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "algosdk": "2.7.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-algorand-core": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-algorand-core/-/sdk-algorand-core-0.7.0-beta.5.tgz", + "integrity": "sha512-AJQEaXIViwwmg/oyn0QjgJEwv2pPbup7qb2C0KTJIPXwx40Cr4Z6jrBrgE387+svJ63+WNNBhJnC5YRl93AuKg==", + "dependencies": { + "@wormhole-foundation/sdk-algorand": "0.7.0-beta.5", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-algorand-tokenbridge": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-algorand-tokenbridge/-/sdk-algorand-tokenbridge-0.7.0-beta.5.tgz", + "integrity": "sha512-ZozYoS948Aa+iVZWtq3b+xQMSWyh9uEklsQTfDlNLi+72P5Wz6amrweBNnSErxrpG+y/zXa9XqwVBN6grjc2gg==", + "dependencies": { + "@wormhole-foundation/sdk-algorand": "0.7.0-beta.5", + "@wormhole-foundation/sdk-algorand-core": "0.7.0-beta.5", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-aptos": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-aptos/-/sdk-aptos-0.7.0-beta.5.tgz", + "integrity": "sha512-QhCNBzoqZueTO3g8mYAszm3pogX7LUxl/STfw3xIc1xkxUzyk1Tw1UEzih3r6hObDU4C3S1g7zXM2QS5JMjK1g==", + "dependencies": { + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "aptos": "1.21.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-aptos-core": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-aptos-core/-/sdk-aptos-core-0.7.0-beta.5.tgz", + "integrity": "sha512-MjO/YULiKGUApDOxd7Ru5qR/D1g3Tx/Y0PAfCfBFaW1COCSeGNnnmUzTmVjE4pWlErvexiRfePZeM5a0FIjNRg==", + "dependencies": { + "@wormhole-foundation/sdk-aptos": "0.7.0-beta.5", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-aptos-tokenbridge": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-aptos-tokenbridge/-/sdk-aptos-tokenbridge-0.7.0-beta.5.tgz", + "integrity": "sha512-xHPeQeUQzTN8ErnNGACsE2JuZ+l0NHB6zvvk6ufc+Hsi7tLqpBf7iqI8MqsP+FbFOoMJnWukw1FkKO8G4Y/TgQ==", + "dependencies": { + "@wormhole-foundation/sdk-aptos": "0.7.0-beta.5", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-aptos/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==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-aptos/node_modules/@scure/bip39": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", + "dependencies": { + "@noble/hashes": "~1.3.0", + "@scure/base": "~1.1.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-aptos/node_modules/aptos": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/aptos/-/aptos-1.21.0.tgz", + "integrity": "sha512-PRKjoFgL8tVEc9+oS7eJUv8GNxx8n3+0byH2+m7CP3raYOD6yFKOecuwjVMIJmgfpjp6xH0P0HDMGZAXmSyU0Q==", + "dependencies": { + "@aptos-labs/aptos-client": "^0.1.0", + "@noble/hashes": "1.3.3", + "@scure/bip39": "1.2.1", + "eventemitter3": "^5.0.1", + "form-data": "4.0.0", + "tweetnacl": "1.0.3" + }, + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-aptos/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + }, + "node_modules/@wormhole-foundation/sdk-aptos/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@wormhole-foundation/sdk-base": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-base/-/sdk-base-0.7.0-beta.5.tgz", + "integrity": "sha512-QMyfGmgg+5V0Qd2SLLXAqSE7nYr2+n/Q/qyuNGmR4vLrTxYR/FdVdyRfQU3rW0Dm1cxIUYt8lUQoW/nsAebIqg==", + "dependencies": { + "@scure/base": "^1.1.3" + } + }, + "node_modules/@wormhole-foundation/sdk-connect": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-connect/-/sdk-connect-0.7.0-beta.5.tgz", + "integrity": "sha512-aIzo1o5RRX9asiI4pmMTX4NJCSP+iQHd8ZOr6WH2aW80WpnptnKUIL8p3uKEFZiBFobstvWVW3dvgPioUzBmYw==", + "dependencies": { + "@wormhole-foundation/sdk-base": "0.7.0-beta.5", + "@wormhole-foundation/sdk-definitions": "0.7.0-beta.5", + "axios": "^1.4.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-connect/node_modules/axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/@wormhole-foundation/sdk-connect/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm/-/sdk-cosmwasm-0.7.0-beta.5.tgz", + "integrity": "sha512-wYlHA0O/UmBET70JmAl95Tt4BZq0pZdG+rtWoxg2nnM0v7Qhk7B91/9YjR+e/dljHqG1y26UiZ6eLYaIoUpJKw==", + "dependencies": { + "@cosmjs/cosmwasm-stargate": "^0.32.0", + "@cosmjs/proto-signing": "^0.32.0", + "@cosmjs/stargate": "^0.32.0", + "@injectivelabs/sdk-ts": "^1.14.4", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "cosmjs-types": "^0.9.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm-core/-/sdk-cosmwasm-core-0.7.0-beta.5.tgz", + "integrity": "sha512-i64jPprNhZXvrstk+pekj4Wakj21mbz0TUaPReJXy9hSuoWCbDmnG9Zud+JdAnBy55ckckJ4nWgTxXAygQ/80Q==", + "dependencies": { + "@cosmjs/cosmwasm-stargate": "^0.32.0", + "@cosmjs/stargate": "^0.32.0", + "@injectivelabs/sdk-ts": "^1.14.4", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "@wormhole-foundation/sdk-cosmwasm": "0.7.0-beta.5" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core/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==", + "dependencies": { + "@cosmjs/crypto": "^0.32.3", + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/utils": "^0.32.3" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core/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", + "cosmjs-types": "^0.9.0", + "pako": "^2.0.2" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core/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==", + "dependencies": { + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/utils": "^0.32.3", + "@noble/hashes": "^1", + "bn.js": "^5.2.0", + "elliptic": "^6.5.4", + "libsodium-wrappers-sumo": "^0.7.11" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core/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==", + "dependencies": { + "base64-js": "^1.3.0", + "bech32": "^1.1.4", + "readonly-date": "^1.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core/node_modules/@cosmjs/encoding/node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core/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==", + "dependencies": { + "@cosmjs/stream": "^0.32.3", + "xstream": "^11.14.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core/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==", + "dependencies": { + "bn.js": "^5.2.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core/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", + "cosmjs-types": "^0.9.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core/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==", + "dependencies": { + "@cosmjs/stream": "^0.32.3", + "isomorphic-ws": "^4.0.1", + "ws": "^7", + "xstream": "^11.14.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core/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==", + "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-types": "^0.9.0", + "xstream": "^11.14.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core/node_modules/@cosmjs/stream": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.32.3.tgz", + "integrity": "sha512-J2zVWDojkynYifAUcRmVczzmp6STEpyiAARq0rSsviqjreGIfspfuws/8rmkPa6qQBZvpQOBQCm2HyZZwYplIw==", + "dependencies": { + "xstream": "^11.14.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core/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", + "axios": "^1.6.0", + "readonly-date": "^1.0.0", + "xstream": "^11.14.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core/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==" + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core/node_modules/@injectivelabs/core-proto-ts": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@injectivelabs/core-proto-ts/-/core-proto-ts-0.0.21.tgz", + "integrity": "sha512-RBxSkRBCty60R/l55/D1jsSW0Aof5dyGFhCFdN3A010KjMv/SzZGGr+6DZPY/hflyFeaJzDv/VTopCymKNRBvQ==", + "dependencies": { + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core/node_modules/@injectivelabs/indexer-proto-ts": { + "version": "1.11.36", + "resolved": "https://registry.npmjs.org/@injectivelabs/indexer-proto-ts/-/indexer-proto-ts-1.11.36.tgz", + "integrity": "sha512-s7E3Y28JrkylDwRVfF/AvcPy/zPgz52W+XbQ0FOcsqPof78xp8FvnM3ubVZi0Dad39LgDB5eeiMFPmeuLp8Uew==", + "dependencies": { + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core/node_modules/@injectivelabs/mito-proto-ts": { + "version": "1.0.62", + "resolved": "https://registry.npmjs.org/@injectivelabs/mito-proto-ts/-/mito-proto-ts-1.0.62.tgz", + "integrity": "sha512-WtoO80Y597nZiAuE4H+L208I0i3ByWytR+HqABdCaA26uJ7F1LhXw8YXxh3pP9z0LAeW31T+N7bwtOMlVR4riA==", + "dependencies": { + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core/node_modules/@injectivelabs/networks": { + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/@injectivelabs/networks/-/networks-1.14.6.tgz", + "integrity": "sha512-O1IkPFJl8ThNL6N+k/9OimrgCYsSWQ8A1FtVMXSQge+0QRZsDKSpRmQRwE601otXXauO31nOUct5AaiWPffXVQ==", + "hasInstallScript": true, + "dependencies": { + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/ts-types": "^1.14.6", + "@injectivelabs/utils": "^1.14.6", + "link-module-alias": "^1.2.0", + "shx": "^0.3.2" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core/node_modules/@injectivelabs/sdk-ts": { + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/@injectivelabs/sdk-ts/-/sdk-ts-1.14.7.tgz", + "integrity": "sha512-Qm8y8jKCMyNfYZGZVI+p0SIGJPtP5M9/DPFyPK+JSR2OOU0J4MX2yS/tQB5ViC/3Bt7yQhw/l3Rop93e7pTZEg==", + "hasInstallScript": true, + "dependencies": { + "@apollo/client": "^3.5.8", + "@cosmjs/amino": "^0.32.2", + "@cosmjs/proto-signing": "^0.32.2", + "@cosmjs/stargate": "^0.32.2", + "@ensdomains/ens-validation": "^0.1.0", + "@ensdomains/eth-ens-namehash": "^2.0.15", + "@ethersproject/bytes": "^5.7.0", + "@injectivelabs/core-proto-ts": "^0.0.21", + "@injectivelabs/dmm-proto-ts": "1.0.19", + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/grpc-web": "^0.0.1", + "@injectivelabs/grpc-web-node-http-transport": "^0.0.2", + "@injectivelabs/grpc-web-react-native-transport": "^0.0.2", + "@injectivelabs/indexer-proto-ts": "1.11.36", + "@injectivelabs/mito-proto-ts": "1.0.62", + "@injectivelabs/networks": "^1.14.6", + "@injectivelabs/test-utils": "^1.14.3", + "@injectivelabs/token-metadata": "^1.14.7", + "@injectivelabs/ts-types": "^1.14.6", + "@injectivelabs/utils": "^1.14.6", + "@metamask/eth-sig-util": "^4.0.0", + "axios": "^0.27.2", + "bech32": "^2.0.0", + "bip39": "^3.0.4", + "cosmjs-types": "^0.9.0", + "ethereumjs-util": "^7.1.4", + "ethers": "^5.7.2", + "google-protobuf": "^3.21.0", + "graphql": "^16.3.0", + "http-status-codes": "^2.2.0", + "js-sha3": "^0.8.0", + "jscrypto": "^1.0.3", + "keccak256": "^1.0.6", + "link-module-alias": "^1.2.0", + "secp256k1": "^4.0.3", + "shx": "^0.3.2", + "snakecase-keys": "^5.4.1" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core/node_modules/@injectivelabs/sdk-ts/node_modules/axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dependencies": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core/node_modules/@injectivelabs/utils": { + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/@injectivelabs/utils/-/utils-1.14.6.tgz", + "integrity": "sha512-5I0h4GiLB5PPTl+g2lpevRP+WScvEbntdkoUQVtAdHewl4kutd5p1Kcnoi1Nvpq+sz5N/e9qtBIRuyxG38akOg==", + "hasInstallScript": true, + "dependencies": { + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/ts-types": "^1.14.6", + "axios": "^0.21.1", + "bignumber.js": "^9.0.1", + "http-status-codes": "^2.2.0", + "link-module-alias": "^1.2.0", + "shx": "^0.3.2", + "snakecase-keys": "^5.1.2", + "store2": "^2.12.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core/node_modules/@injectivelabs/utils/node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core/node_modules/axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core/node_modules/cosmjs-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.9.0.tgz", + "integrity": "sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==" + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core/node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-core/node_modules/protobufjs": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz", + "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm-ibc/-/sdk-cosmwasm-ibc-0.7.0-beta.5.tgz", + "integrity": "sha512-R6VOGrMGyLqDvuAh9KZrwNjx5aK1aeHt36/zcWC5ZrToILjxE5h7jmUpK4dHpe6dgfh2ryZ1F7B54DdvbpS/hA==", + "dependencies": { + "@cosmjs/cosmwasm-stargate": "^0.32.0", + "@cosmjs/stargate": "^0.32.0", + "@injectivelabs/sdk-ts": "^1.14.4", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "@wormhole-foundation/sdk-cosmwasm": "0.7.0-beta.5", + "@wormhole-foundation/sdk-cosmwasm-core": "0.7.0-beta.5", + "cosmjs-types": "^0.9.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc/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==", + "dependencies": { + "@cosmjs/crypto": "^0.32.3", + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/utils": "^0.32.3" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc/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", + "cosmjs-types": "^0.9.0", + "pako": "^2.0.2" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc/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==", + "dependencies": { + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/utils": "^0.32.3", + "@noble/hashes": "^1", + "bn.js": "^5.2.0", + "elliptic": "^6.5.4", + "libsodium-wrappers-sumo": "^0.7.11" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc/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==", + "dependencies": { + "base64-js": "^1.3.0", + "bech32": "^1.1.4", + "readonly-date": "^1.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc/node_modules/@cosmjs/encoding/node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc/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==", + "dependencies": { + "@cosmjs/stream": "^0.32.3", + "xstream": "^11.14.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc/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==", + "dependencies": { + "bn.js": "^5.2.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc/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", + "cosmjs-types": "^0.9.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc/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==", + "dependencies": { + "@cosmjs/stream": "^0.32.3", + "isomorphic-ws": "^4.0.1", + "ws": "^7", + "xstream": "^11.14.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc/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==", + "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-types": "^0.9.0", + "xstream": "^11.14.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc/node_modules/@cosmjs/stream": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.32.3.tgz", + "integrity": "sha512-J2zVWDojkynYifAUcRmVczzmp6STEpyiAARq0rSsviqjreGIfspfuws/8rmkPa6qQBZvpQOBQCm2HyZZwYplIw==", + "dependencies": { + "xstream": "^11.14.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc/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", + "axios": "^1.6.0", + "readonly-date": "^1.0.0", + "xstream": "^11.14.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc/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==" + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc/node_modules/@injectivelabs/core-proto-ts": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@injectivelabs/core-proto-ts/-/core-proto-ts-0.0.21.tgz", + "integrity": "sha512-RBxSkRBCty60R/l55/D1jsSW0Aof5dyGFhCFdN3A010KjMv/SzZGGr+6DZPY/hflyFeaJzDv/VTopCymKNRBvQ==", + "dependencies": { + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc/node_modules/@injectivelabs/indexer-proto-ts": { + "version": "1.11.36", + "resolved": "https://registry.npmjs.org/@injectivelabs/indexer-proto-ts/-/indexer-proto-ts-1.11.36.tgz", + "integrity": "sha512-s7E3Y28JrkylDwRVfF/AvcPy/zPgz52W+XbQ0FOcsqPof78xp8FvnM3ubVZi0Dad39LgDB5eeiMFPmeuLp8Uew==", + "dependencies": { + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc/node_modules/@injectivelabs/mito-proto-ts": { + "version": "1.0.62", + "resolved": "https://registry.npmjs.org/@injectivelabs/mito-proto-ts/-/mito-proto-ts-1.0.62.tgz", + "integrity": "sha512-WtoO80Y597nZiAuE4H+L208I0i3ByWytR+HqABdCaA26uJ7F1LhXw8YXxh3pP9z0LAeW31T+N7bwtOMlVR4riA==", + "dependencies": { + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc/node_modules/@injectivelabs/networks": { + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/@injectivelabs/networks/-/networks-1.14.6.tgz", + "integrity": "sha512-O1IkPFJl8ThNL6N+k/9OimrgCYsSWQ8A1FtVMXSQge+0QRZsDKSpRmQRwE601otXXauO31nOUct5AaiWPffXVQ==", + "hasInstallScript": true, + "dependencies": { + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/ts-types": "^1.14.6", + "@injectivelabs/utils": "^1.14.6", + "link-module-alias": "^1.2.0", + "shx": "^0.3.2" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc/node_modules/@injectivelabs/sdk-ts": { + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/@injectivelabs/sdk-ts/-/sdk-ts-1.14.7.tgz", + "integrity": "sha512-Qm8y8jKCMyNfYZGZVI+p0SIGJPtP5M9/DPFyPK+JSR2OOU0J4MX2yS/tQB5ViC/3Bt7yQhw/l3Rop93e7pTZEg==", + "hasInstallScript": true, + "dependencies": { + "@apollo/client": "^3.5.8", + "@cosmjs/amino": "^0.32.2", + "@cosmjs/proto-signing": "^0.32.2", + "@cosmjs/stargate": "^0.32.2", + "@ensdomains/ens-validation": "^0.1.0", + "@ensdomains/eth-ens-namehash": "^2.0.15", + "@ethersproject/bytes": "^5.7.0", + "@injectivelabs/core-proto-ts": "^0.0.21", + "@injectivelabs/dmm-proto-ts": "1.0.19", + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/grpc-web": "^0.0.1", + "@injectivelabs/grpc-web-node-http-transport": "^0.0.2", + "@injectivelabs/grpc-web-react-native-transport": "^0.0.2", + "@injectivelabs/indexer-proto-ts": "1.11.36", + "@injectivelabs/mito-proto-ts": "1.0.62", + "@injectivelabs/networks": "^1.14.6", + "@injectivelabs/test-utils": "^1.14.3", + "@injectivelabs/token-metadata": "^1.14.7", + "@injectivelabs/ts-types": "^1.14.6", + "@injectivelabs/utils": "^1.14.6", + "@metamask/eth-sig-util": "^4.0.0", + "axios": "^0.27.2", + "bech32": "^2.0.0", + "bip39": "^3.0.4", + "cosmjs-types": "^0.9.0", + "ethereumjs-util": "^7.1.4", + "ethers": "^5.7.2", + "google-protobuf": "^3.21.0", + "graphql": "^16.3.0", + "http-status-codes": "^2.2.0", + "js-sha3": "^0.8.0", + "jscrypto": "^1.0.3", + "keccak256": "^1.0.6", + "link-module-alias": "^1.2.0", + "secp256k1": "^4.0.3", + "shx": "^0.3.2", + "snakecase-keys": "^5.4.1" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc/node_modules/@injectivelabs/sdk-ts/node_modules/axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dependencies": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc/node_modules/@injectivelabs/utils": { + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/@injectivelabs/utils/-/utils-1.14.6.tgz", + "integrity": "sha512-5I0h4GiLB5PPTl+g2lpevRP+WScvEbntdkoUQVtAdHewl4kutd5p1Kcnoi1Nvpq+sz5N/e9qtBIRuyxG38akOg==", + "hasInstallScript": true, + "dependencies": { + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/ts-types": "^1.14.6", + "axios": "^0.21.1", + "bignumber.js": "^9.0.1", + "http-status-codes": "^2.2.0", + "link-module-alias": "^1.2.0", + "shx": "^0.3.2", + "snakecase-keys": "^5.1.2", + "store2": "^2.12.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc/node_modules/@injectivelabs/utils/node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc/node_modules/axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc/node_modules/cosmjs-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.9.0.tgz", + "integrity": "sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==" + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc/node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-ibc/node_modules/protobufjs": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz", + "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm-tokenbridge/-/sdk-cosmwasm-tokenbridge-0.7.0-beta.5.tgz", + "integrity": "sha512-/jUqme2Ajy80JyLQuUYDwhufGWjqqwJTJNvBptjDo0dBdmgiLBKIxINXS84rkykyCmkeSCzwRPreH5lLB7kvwg==", + "dependencies": { + "@cosmjs/cosmwasm-stargate": "^0.32.0", + "@injectivelabs/sdk-ts": "^1.14.4", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "@wormhole-foundation/sdk-cosmwasm": "0.7.0-beta.5" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge/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==", + "dependencies": { + "@cosmjs/crypto": "^0.32.3", + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/utils": "^0.32.3" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge/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", + "cosmjs-types": "^0.9.0", + "pako": "^2.0.2" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge/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==", + "dependencies": { + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/utils": "^0.32.3", + "@noble/hashes": "^1", + "bn.js": "^5.2.0", + "elliptic": "^6.5.4", + "libsodium-wrappers-sumo": "^0.7.11" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge/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==", + "dependencies": { + "base64-js": "^1.3.0", + "bech32": "^1.1.4", + "readonly-date": "^1.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge/node_modules/@cosmjs/encoding/node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge/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==", + "dependencies": { + "@cosmjs/stream": "^0.32.3", + "xstream": "^11.14.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge/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==", + "dependencies": { + "bn.js": "^5.2.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge/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", + "cosmjs-types": "^0.9.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge/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==", + "dependencies": { + "@cosmjs/stream": "^0.32.3", + "isomorphic-ws": "^4.0.1", + "ws": "^7", + "xstream": "^11.14.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge/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==", + "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-types": "^0.9.0", + "xstream": "^11.14.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge/node_modules/@cosmjs/stream": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.32.3.tgz", + "integrity": "sha512-J2zVWDojkynYifAUcRmVczzmp6STEpyiAARq0rSsviqjreGIfspfuws/8rmkPa6qQBZvpQOBQCm2HyZZwYplIw==", + "dependencies": { + "xstream": "^11.14.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge/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", + "axios": "^1.6.0", + "readonly-date": "^1.0.0", + "xstream": "^11.14.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge/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==" + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge/node_modules/@injectivelabs/core-proto-ts": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@injectivelabs/core-proto-ts/-/core-proto-ts-0.0.21.tgz", + "integrity": "sha512-RBxSkRBCty60R/l55/D1jsSW0Aof5dyGFhCFdN3A010KjMv/SzZGGr+6DZPY/hflyFeaJzDv/VTopCymKNRBvQ==", + "dependencies": { + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge/node_modules/@injectivelabs/indexer-proto-ts": { + "version": "1.11.36", + "resolved": "https://registry.npmjs.org/@injectivelabs/indexer-proto-ts/-/indexer-proto-ts-1.11.36.tgz", + "integrity": "sha512-s7E3Y28JrkylDwRVfF/AvcPy/zPgz52W+XbQ0FOcsqPof78xp8FvnM3ubVZi0Dad39LgDB5eeiMFPmeuLp8Uew==", + "dependencies": { + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge/node_modules/@injectivelabs/mito-proto-ts": { + "version": "1.0.62", + "resolved": "https://registry.npmjs.org/@injectivelabs/mito-proto-ts/-/mito-proto-ts-1.0.62.tgz", + "integrity": "sha512-WtoO80Y597nZiAuE4H+L208I0i3ByWytR+HqABdCaA26uJ7F1LhXw8YXxh3pP9z0LAeW31T+N7bwtOMlVR4riA==", + "dependencies": { + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge/node_modules/@injectivelabs/networks": { + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/@injectivelabs/networks/-/networks-1.14.6.tgz", + "integrity": "sha512-O1IkPFJl8ThNL6N+k/9OimrgCYsSWQ8A1FtVMXSQge+0QRZsDKSpRmQRwE601otXXauO31nOUct5AaiWPffXVQ==", + "hasInstallScript": true, + "dependencies": { + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/ts-types": "^1.14.6", + "@injectivelabs/utils": "^1.14.6", + "link-module-alias": "^1.2.0", + "shx": "^0.3.2" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge/node_modules/@injectivelabs/sdk-ts": { + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/@injectivelabs/sdk-ts/-/sdk-ts-1.14.7.tgz", + "integrity": "sha512-Qm8y8jKCMyNfYZGZVI+p0SIGJPtP5M9/DPFyPK+JSR2OOU0J4MX2yS/tQB5ViC/3Bt7yQhw/l3Rop93e7pTZEg==", + "hasInstallScript": true, + "dependencies": { + "@apollo/client": "^3.5.8", + "@cosmjs/amino": "^0.32.2", + "@cosmjs/proto-signing": "^0.32.2", + "@cosmjs/stargate": "^0.32.2", + "@ensdomains/ens-validation": "^0.1.0", + "@ensdomains/eth-ens-namehash": "^2.0.15", + "@ethersproject/bytes": "^5.7.0", + "@injectivelabs/core-proto-ts": "^0.0.21", + "@injectivelabs/dmm-proto-ts": "1.0.19", + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/grpc-web": "^0.0.1", + "@injectivelabs/grpc-web-node-http-transport": "^0.0.2", + "@injectivelabs/grpc-web-react-native-transport": "^0.0.2", + "@injectivelabs/indexer-proto-ts": "1.11.36", + "@injectivelabs/mito-proto-ts": "1.0.62", + "@injectivelabs/networks": "^1.14.6", + "@injectivelabs/test-utils": "^1.14.3", + "@injectivelabs/token-metadata": "^1.14.7", + "@injectivelabs/ts-types": "^1.14.6", + "@injectivelabs/utils": "^1.14.6", + "@metamask/eth-sig-util": "^4.0.0", + "axios": "^0.27.2", + "bech32": "^2.0.0", + "bip39": "^3.0.4", + "cosmjs-types": "^0.9.0", + "ethereumjs-util": "^7.1.4", + "ethers": "^5.7.2", + "google-protobuf": "^3.21.0", + "graphql": "^16.3.0", + "http-status-codes": "^2.2.0", + "js-sha3": "^0.8.0", + "jscrypto": "^1.0.3", + "keccak256": "^1.0.6", + "link-module-alias": "^1.2.0", + "secp256k1": "^4.0.3", + "shx": "^0.3.2", + "snakecase-keys": "^5.4.1" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge/node_modules/@injectivelabs/sdk-ts/node_modules/axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dependencies": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge/node_modules/@injectivelabs/utils": { + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/@injectivelabs/utils/-/utils-1.14.6.tgz", + "integrity": "sha512-5I0h4GiLB5PPTl+g2lpevRP+WScvEbntdkoUQVtAdHewl4kutd5p1Kcnoi1Nvpq+sz5N/e9qtBIRuyxG38akOg==", + "hasInstallScript": true, + "dependencies": { + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/ts-types": "^1.14.6", + "axios": "^0.21.1", + "bignumber.js": "^9.0.1", + "http-status-codes": "^2.2.0", + "link-module-alias": "^1.2.0", + "shx": "^0.3.2", + "snakecase-keys": "^5.1.2", + "store2": "^2.12.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge/node_modules/@injectivelabs/utils/node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge/node_modules/axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge/node_modules/cosmjs-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.9.0.tgz", + "integrity": "sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==" + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge/node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm-tokenbridge/node_modules/protobufjs": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz", + "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm/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==", + "dependencies": { + "@cosmjs/crypto": "^0.32.3", + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/utils": "^0.32.3" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm/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", + "cosmjs-types": "^0.9.0", + "pako": "^2.0.2" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm/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==", + "dependencies": { + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/utils": "^0.32.3", + "@noble/hashes": "^1", + "bn.js": "^5.2.0", + "elliptic": "^6.5.4", + "libsodium-wrappers-sumo": "^0.7.11" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm/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==", + "dependencies": { + "base64-js": "^1.3.0", + "bech32": "^1.1.4", + "readonly-date": "^1.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm/node_modules/@cosmjs/encoding/node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm/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==", + "dependencies": { + "@cosmjs/stream": "^0.32.3", + "xstream": "^11.14.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm/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==", + "dependencies": { + "bn.js": "^5.2.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm/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", + "cosmjs-types": "^0.9.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm/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==", + "dependencies": { + "@cosmjs/stream": "^0.32.3", + "isomorphic-ws": "^4.0.1", + "ws": "^7", + "xstream": "^11.14.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm/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==", + "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-types": "^0.9.0", + "xstream": "^11.14.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm/node_modules/@cosmjs/stream": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.32.3.tgz", + "integrity": "sha512-J2zVWDojkynYifAUcRmVczzmp6STEpyiAARq0rSsviqjreGIfspfuws/8rmkPa6qQBZvpQOBQCm2HyZZwYplIw==", + "dependencies": { + "xstream": "^11.14.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm/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", + "axios": "^1.6.0", + "readonly-date": "^1.0.0", + "xstream": "^11.14.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm/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==" + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm/node_modules/@injectivelabs/core-proto-ts": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@injectivelabs/core-proto-ts/-/core-proto-ts-0.0.21.tgz", + "integrity": "sha512-RBxSkRBCty60R/l55/D1jsSW0Aof5dyGFhCFdN3A010KjMv/SzZGGr+6DZPY/hflyFeaJzDv/VTopCymKNRBvQ==", + "dependencies": { + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm/node_modules/@injectivelabs/indexer-proto-ts": { + "version": "1.11.36", + "resolved": "https://registry.npmjs.org/@injectivelabs/indexer-proto-ts/-/indexer-proto-ts-1.11.36.tgz", + "integrity": "sha512-s7E3Y28JrkylDwRVfF/AvcPy/zPgz52W+XbQ0FOcsqPof78xp8FvnM3ubVZi0Dad39LgDB5eeiMFPmeuLp8Uew==", + "dependencies": { + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm/node_modules/@injectivelabs/mito-proto-ts": { + "version": "1.0.62", + "resolved": "https://registry.npmjs.org/@injectivelabs/mito-proto-ts/-/mito-proto-ts-1.0.62.tgz", + "integrity": "sha512-WtoO80Y597nZiAuE4H+L208I0i3ByWytR+HqABdCaA26uJ7F1LhXw8YXxh3pP9z0LAeW31T+N7bwtOMlVR4riA==", + "dependencies": { + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm/node_modules/@injectivelabs/networks": { + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/@injectivelabs/networks/-/networks-1.14.6.tgz", + "integrity": "sha512-O1IkPFJl8ThNL6N+k/9OimrgCYsSWQ8A1FtVMXSQge+0QRZsDKSpRmQRwE601otXXauO31nOUct5AaiWPffXVQ==", + "hasInstallScript": true, + "dependencies": { + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/ts-types": "^1.14.6", + "@injectivelabs/utils": "^1.14.6", + "link-module-alias": "^1.2.0", + "shx": "^0.3.2" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm/node_modules/@injectivelabs/sdk-ts": { + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/@injectivelabs/sdk-ts/-/sdk-ts-1.14.7.tgz", + "integrity": "sha512-Qm8y8jKCMyNfYZGZVI+p0SIGJPtP5M9/DPFyPK+JSR2OOU0J4MX2yS/tQB5ViC/3Bt7yQhw/l3Rop93e7pTZEg==", + "hasInstallScript": true, + "dependencies": { + "@apollo/client": "^3.5.8", + "@cosmjs/amino": "^0.32.2", + "@cosmjs/proto-signing": "^0.32.2", + "@cosmjs/stargate": "^0.32.2", + "@ensdomains/ens-validation": "^0.1.0", + "@ensdomains/eth-ens-namehash": "^2.0.15", + "@ethersproject/bytes": "^5.7.0", + "@injectivelabs/core-proto-ts": "^0.0.21", + "@injectivelabs/dmm-proto-ts": "1.0.19", + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/grpc-web": "^0.0.1", + "@injectivelabs/grpc-web-node-http-transport": "^0.0.2", + "@injectivelabs/grpc-web-react-native-transport": "^0.0.2", + "@injectivelabs/indexer-proto-ts": "1.11.36", + "@injectivelabs/mito-proto-ts": "1.0.62", + "@injectivelabs/networks": "^1.14.6", + "@injectivelabs/test-utils": "^1.14.3", + "@injectivelabs/token-metadata": "^1.14.7", + "@injectivelabs/ts-types": "^1.14.6", + "@injectivelabs/utils": "^1.14.6", + "@metamask/eth-sig-util": "^4.0.0", + "axios": "^0.27.2", + "bech32": "^2.0.0", + "bip39": "^3.0.4", + "cosmjs-types": "^0.9.0", + "ethereumjs-util": "^7.1.4", + "ethers": "^5.7.2", + "google-protobuf": "^3.21.0", + "graphql": "^16.3.0", + "http-status-codes": "^2.2.0", + "js-sha3": "^0.8.0", + "jscrypto": "^1.0.3", + "keccak256": "^1.0.6", + "link-module-alias": "^1.2.0", + "secp256k1": "^4.0.3", + "shx": "^0.3.2", + "snakecase-keys": "^5.4.1" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm/node_modules/@injectivelabs/sdk-ts/node_modules/axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dependencies": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm/node_modules/@injectivelabs/utils": { + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/@injectivelabs/utils/-/utils-1.14.6.tgz", + "integrity": "sha512-5I0h4GiLB5PPTl+g2lpevRP+WScvEbntdkoUQVtAdHewl4kutd5p1Kcnoi1Nvpq+sz5N/e9qtBIRuyxG38akOg==", + "hasInstallScript": true, + "dependencies": { + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/ts-types": "^1.14.6", + "axios": "^0.21.1", + "bignumber.js": "^9.0.1", + "http-status-codes": "^2.2.0", + "link-module-alias": "^1.2.0", + "shx": "^0.3.2", + "snakecase-keys": "^5.1.2", + "store2": "^2.12.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm/node_modules/@injectivelabs/utils/node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm/node_modules/axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm/node_modules/cosmjs-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.9.0.tgz", + "integrity": "sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==" + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm/node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + }, + "node_modules/@wormhole-foundation/sdk-cosmwasm/node_modules/protobufjs": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz", + "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-definitions": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-definitions/-/sdk-definitions-0.7.0-beta.5.tgz", + "integrity": "sha512-ctkcGU4M/U5O0M/rn27KwJWs2hJdbcst/T/ybQQbeBdd4HApKJvHTDGi7sZ9ARgJAAhgmyYwvUCoHaiHFfqMXQ==", + "dependencies": { + "@noble/curves": "^1.4.0", + "@noble/hashes": "^1.3.1", + "@wormhole-foundation/sdk-base": "0.7.0-beta.5" + } + }, + "node_modules/@wormhole-foundation/sdk-definitions/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-evm": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm/-/sdk-evm-0.7.0-beta.5.tgz", + "integrity": "sha512-tJGuoCSRCMUvwrpktKw5cXRZO/iuRAP8Ip5HNBN6ZcLtbJjaw+7b/wP6Mj+o3rNTxGdSDN594K1mlNvAqgjGNA==", + "dependencies": { + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "ethers": "^6.5.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-cctp": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-cctp/-/sdk-evm-cctp-0.7.0-beta.5.tgz", + "integrity": "sha512-42Qc1I6ztaYxQfUCUtQ6QIiGkaM3gqyy+rAhXH2+IUSUeDl11RM8MKjyu6NMwwzCGn8bkXMRKWl8UMXUJVX6UQ==", + "dependencies": { + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "@wormhole-foundation/sdk-evm": "0.7.0-beta.5", + "ethers": "^6.5.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-cctp/node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-cctp/node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-cctp/node_modules/@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" + }, + "node_modules/@wormhole-foundation/sdk-evm-cctp/node_modules/aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==" + }, + "node_modules/@wormhole-foundation/sdk-evm-cctp/node_modules/ethers": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.12.1.tgz", + "integrity": "sha512-j6wcVoZf06nqEcBbDWkKg8Fp895SS96dSnTCjiXT+8vt2o02raTn4Lo9ERUuIVU5bAjoPYeA+7ytQFexFmLuVw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-cctp/node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@wormhole-foundation/sdk-evm-core": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-core/-/sdk-evm-core-0.7.0-beta.5.tgz", + "integrity": "sha512-3YYRf+5pFMJ4lzfdvkkCzmDrQgP4HGS1r1RqJvfA96Wb9AitqDmx+ZmrzVbrMlycDmbX8S4S1Yblg63M2kW1Fw==", + "dependencies": { + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "@wormhole-foundation/sdk-evm": "0.7.0-beta.5", + "ethers": "^6.5.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-core/node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-core/node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-core/node_modules/@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" + }, + "node_modules/@wormhole-foundation/sdk-evm-core/node_modules/aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==" + }, + "node_modules/@wormhole-foundation/sdk-evm-core/node_modules/ethers": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.12.1.tgz", + "integrity": "sha512-j6wcVoZf06nqEcBbDWkKg8Fp895SS96dSnTCjiXT+8vt2o02raTn4Lo9ERUuIVU5bAjoPYeA+7ytQFexFmLuVw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-core/node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@wormhole-foundation/sdk-evm-portico": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-portico/-/sdk-evm-portico-0.7.0-beta.5.tgz", + "integrity": "sha512-gvFHRxsg8i7vT3bPR11DVy0PNIAGLDEWCpt74KP9HFFWf6xzsEA8+qN302U6ZcXXBxojY1GtaQUcdNN++7i36Q==", + "dependencies": { + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "@wormhole-foundation/sdk-evm": "0.7.0-beta.5", + "@wormhole-foundation/sdk-evm-core": "0.7.0-beta.5", + "@wormhole-foundation/sdk-evm-tokenbridge": "0.7.0-beta.5", + "ethers": "^6.5.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-portico/node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-portico/node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-portico/node_modules/@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" + }, + "node_modules/@wormhole-foundation/sdk-evm-portico/node_modules/aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==" + }, + "node_modules/@wormhole-foundation/sdk-evm-portico/node_modules/ethers": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.12.1.tgz", + "integrity": "sha512-j6wcVoZf06nqEcBbDWkKg8Fp895SS96dSnTCjiXT+8vt2o02raTn4Lo9ERUuIVU5bAjoPYeA+7ytQFexFmLuVw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-portico/node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@wormhole-foundation/sdk-evm-tokenbridge": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-tokenbridge/-/sdk-evm-tokenbridge-0.7.0-beta.5.tgz", + "integrity": "sha512-Aay8UdcjCwmkibsJLhZyy037dQTn6lli8eDnpAd9gRj9rhfCrEmqQvnCDOPMk/tE0thOeCEjxBSPxtd2IQ9EoA==", + "dependencies": { + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "@wormhole-foundation/sdk-evm": "0.7.0-beta.5", + "@wormhole-foundation/sdk-evm-core": "0.7.0-beta.5", + "ethers": "^6.5.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-tokenbridge/node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-tokenbridge/node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-tokenbridge/node_modules/@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" + }, + "node_modules/@wormhole-foundation/sdk-evm-tokenbridge/node_modules/aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==" + }, + "node_modules/@wormhole-foundation/sdk-evm-tokenbridge/node_modules/ethers": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.12.1.tgz", + "integrity": "sha512-j6wcVoZf06nqEcBbDWkKg8Fp895SS96dSnTCjiXT+8vt2o02raTn4Lo9ERUuIVU5bAjoPYeA+7ytQFexFmLuVw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-evm-tokenbridge/node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@wormhole-foundation/sdk-evm/node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-evm/node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-evm/node_modules/@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" + }, + "node_modules/@wormhole-foundation/sdk-evm/node_modules/aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==" + }, + "node_modules/@wormhole-foundation/sdk-evm/node_modules/ethers": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.12.1.tgz", + "integrity": "sha512-j6wcVoZf06nqEcBbDWkKg8Fp895SS96dSnTCjiXT+8vt2o02raTn4Lo9ERUuIVU5bAjoPYeA+7ytQFexFmLuVw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-evm/node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@wormhole-foundation/sdk-solana": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana/-/sdk-solana-0.7.0-beta.5.tgz", + "integrity": "sha512-s2JReAgr7zVlmoG7RlAwCriHSh4gfRxNhm7c0K0oIwu2KW0RD06K1NAxu3twoBgeRGfiY0IKYR/Ovu1LA4uRgg==", + "dependencies": { + "@coral-xyz/anchor": "0.29.0", + "@coral-xyz/borsh": "0.29.0", + "@solana/spl-token": "0.3.9", + "@solana/web3.js": "1.91.7", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-solana-cctp": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana-cctp/-/sdk-solana-cctp-0.7.0-beta.5.tgz", + "integrity": "sha512-XJMY6XBJf1LHhw5owEZEXigXV7jmJpU3lw3xCiJL+LyHexfnnvfw2gdEEY5Un3xOIIzCaLz1+oEkQBk8yVn8zg==", + "dependencies": { + "@coral-xyz/anchor": "0.29.0", + "@solana/spl-token": "0.3.9", + "@solana/web3.js": "1.91.7", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "@wormhole-foundation/sdk-solana": "0.7.0-beta.5" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-solana-core": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana-core/-/sdk-solana-core-0.7.0-beta.5.tgz", + "integrity": "sha512-9GmktW8suxGX1O0vTBAoAnRTNdIMNgaaNOqEhDR8Ugots0+A3b+QbtWj7Tpg3uVjLE/pO0fFII0ge+ntdHglXA==", + "dependencies": { + "@coral-xyz/anchor": "0.29.0", + "@coral-xyz/borsh": "0.29.0", + "@solana/web3.js": "1.91.7", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "@wormhole-foundation/sdk-solana": "0.7.0-beta.5" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-solana-core/node_modules/@coral-xyz/borsh": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.29.0.tgz", + "integrity": "sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ==", + "dependencies": { + "bn.js": "^5.1.2", + "buffer-layout": "^1.2.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@solana/web3.js": "^1.68.0" + } + }, + "node_modules/@wormhole-foundation/sdk-solana-tokenbridge": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana-tokenbridge/-/sdk-solana-tokenbridge-0.7.0-beta.5.tgz", + "integrity": "sha512-rXQZuLZXvxpDvCcBoXeMaGCNq6kzfofY0B3IjR03uqHPz3fIsSfA5RCWGF0ZadCn4Fi2+hm3hShxC0WVImNMtw==", + "dependencies": { + "@coral-xyz/anchor": "0.29.0", + "@solana/spl-token": "0.3.9", + "@solana/web3.js": "1.91.7", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "@wormhole-foundation/sdk-solana": "0.7.0-beta.5", + "@wormhole-foundation/sdk-solana-core": "0.7.0-beta.5" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-solana/node_modules/@coral-xyz/borsh": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.29.0.tgz", + "integrity": "sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ==", + "dependencies": { + "bn.js": "^5.1.2", + "buffer-layout": "^1.2.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@solana/web3.js": "^1.68.0" + } + }, + "node_modules/@wormhole-foundation/sdk-sui": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-sui/-/sdk-sui-0.7.0-beta.5.tgz", + "integrity": "sha512-fbZPJZOU0gDYkxyx3eBKuNoK7zN3hkodA6gS6imH+/U7zCjXzTzMiH/wTlTgN38uYhmxyUF5RIlFBr4jj/opQw==", + "dependencies": { + "@mysten/sui.js": "^0.50.1", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-sui-core": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-sui-core/-/sdk-sui-core-0.7.0-beta.5.tgz", + "integrity": "sha512-0De9UjMPQ4lp0P+3Kpr/4iHFn/HVt5Nj00zdG0dhz2Msjxlkz3SqA26rZOECuvF7fmyoQkQKCPowMBfNnmyJJQ==", + "dependencies": { + "@mysten/sui.js": "^0.50.1", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "@wormhole-foundation/sdk-sui": "0.7.0-beta.5" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-sui-core/node_modules/@mysten/bcs": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/@mysten/bcs/-/bcs-0.11.1.tgz", + "integrity": "sha512-xP85isNSYUCHd3O/g+TmZYmg4wK6cU8q/n/MebkIGP4CYVJZz2wU/G24xIZ3wI+0iTop4dfgA5kYrg/DQKCUzA==", + "dependencies": { + "bs58": "^5.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-sui-core/node_modules/@mysten/sui.js": { + "version": "0.50.1", + "resolved": "https://registry.npmjs.org/@mysten/sui.js/-/sui.js-0.50.1.tgz", + "integrity": "sha512-AY0wb4n6PMTRsDGygzrrTHUK/m5KwKZ4aQcN9cayiwsq2iIhfjGo7uuqMA7Y5UiqvLCoF+z7Ig14Q5qejQ/S/w==", + "dependencies": { + "@graphql-typed-document-node/core": "^3.2.0", + "@mysten/bcs": "0.11.1", + "@noble/curves": "^1.1.0", + "@noble/hashes": "^1.3.1", + "@scure/bip32": "^1.3.1", + "@scure/bip39": "^1.2.1", + "@suchipi/femver": "^1.0.0", + "bech32": "^2.0.0", + "gql.tada": "^1.2.0", + "graphql": "^16.8.1", + "superstruct": "^1.0.3", + "tweetnacl": "^1.0.3" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-sui-core/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-sui-core/node_modules/@scure/bip32": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", + "dependencies": { + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-sui-core/node_modules/@scure/bip39": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", + "dependencies": { + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-sui-core/node_modules/base-x": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" + }, + "node_modules/@wormhole-foundation/sdk-sui-core/node_modules/bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "dependencies": { + "base-x": "^4.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-sui-core/node_modules/superstruct": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.4.tgz", + "integrity": "sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-sui-tokenbridge": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-sui-tokenbridge/-/sdk-sui-tokenbridge-0.7.0-beta.5.tgz", + "integrity": "sha512-YUYrvZu6yFAULA8V/RygbQflHlDU4aB2Kx5aVqWV1qWFH4Ixfq2RUrZPCVDeDGTnnlO1otauSHfCCyAOKhTy4g==", + "dependencies": { + "@mysten/sui.js": "^0.50.1", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "@wormhole-foundation/sdk-sui": "0.7.0-beta.5", + "@wormhole-foundation/sdk-sui-core": "0.7.0-beta.5" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-sui-tokenbridge/node_modules/@mysten/bcs": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/@mysten/bcs/-/bcs-0.11.1.tgz", + "integrity": "sha512-xP85isNSYUCHd3O/g+TmZYmg4wK6cU8q/n/MebkIGP4CYVJZz2wU/G24xIZ3wI+0iTop4dfgA5kYrg/DQKCUzA==", + "dependencies": { + "bs58": "^5.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-sui-tokenbridge/node_modules/@mysten/sui.js": { + "version": "0.50.1", + "resolved": "https://registry.npmjs.org/@mysten/sui.js/-/sui.js-0.50.1.tgz", + "integrity": "sha512-AY0wb4n6PMTRsDGygzrrTHUK/m5KwKZ4aQcN9cayiwsq2iIhfjGo7uuqMA7Y5UiqvLCoF+z7Ig14Q5qejQ/S/w==", + "dependencies": { + "@graphql-typed-document-node/core": "^3.2.0", + "@mysten/bcs": "0.11.1", + "@noble/curves": "^1.1.0", + "@noble/hashes": "^1.3.1", + "@scure/bip32": "^1.3.1", + "@scure/bip39": "^1.2.1", + "@suchipi/femver": "^1.0.0", + "bech32": "^2.0.0", + "gql.tada": "^1.2.0", + "graphql": "^16.8.1", + "superstruct": "^1.0.3", + "tweetnacl": "^1.0.3" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-sui-tokenbridge/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-sui-tokenbridge/node_modules/@scure/bip32": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", + "dependencies": { + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-sui-tokenbridge/node_modules/@scure/bip39": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", + "dependencies": { + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-sui-tokenbridge/node_modules/base-x": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" + }, + "node_modules/@wormhole-foundation/sdk-sui-tokenbridge/node_modules/bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "dependencies": { + "base-x": "^4.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-sui-tokenbridge/node_modules/superstruct": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.4.tgz", + "integrity": "sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-sui/node_modules/@mysten/bcs": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/@mysten/bcs/-/bcs-0.11.1.tgz", + "integrity": "sha512-xP85isNSYUCHd3O/g+TmZYmg4wK6cU8q/n/MebkIGP4CYVJZz2wU/G24xIZ3wI+0iTop4dfgA5kYrg/DQKCUzA==", + "dependencies": { + "bs58": "^5.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-sui/node_modules/@mysten/sui.js": { + "version": "0.50.1", + "resolved": "https://registry.npmjs.org/@mysten/sui.js/-/sui.js-0.50.1.tgz", + "integrity": "sha512-AY0wb4n6PMTRsDGygzrrTHUK/m5KwKZ4aQcN9cayiwsq2iIhfjGo7uuqMA7Y5UiqvLCoF+z7Ig14Q5qejQ/S/w==", + "dependencies": { + "@graphql-typed-document-node/core": "^3.2.0", + "@mysten/bcs": "0.11.1", + "@noble/curves": "^1.1.0", + "@noble/hashes": "^1.3.1", + "@scure/bip32": "^1.3.1", + "@scure/bip39": "^1.2.1", + "@suchipi/femver": "^1.0.0", + "bech32": "^2.0.0", + "gql.tada": "^1.2.0", + "graphql": "^16.8.1", + "superstruct": "^1.0.3", + "tweetnacl": "^1.0.3" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@wormhole-foundation/sdk-sui/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-sui/node_modules/@scure/bip32": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", + "dependencies": { + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-sui/node_modules/@scure/bip39": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", + "dependencies": { + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@wormhole-foundation/sdk-sui/node_modules/base-x": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" + }, + "node_modules/@wormhole-foundation/sdk-sui/node_modules/bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "dependencies": { + "base-x": "^4.0.0" + } + }, + "node_modules/@wormhole-foundation/sdk-sui/node_modules/superstruct": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.4.tgz", + "integrity": "sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@wry/context": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.7.0.tgz", @@ -4419,11 +7167,6 @@ "follow-redirects": "^1.14.8" } }, - "node_modules/@xpla/xpla.js/node_modules/bech32": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", - "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" - }, "node_modules/abstract-leveldown": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz", @@ -4433,11 +7176,34 @@ "xtend": "~4.0.0" } }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/aes-js": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -4463,13 +7229,12 @@ } }, "node_modules/algosdk": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/algosdk/-/algosdk-2.4.0.tgz", - "integrity": "sha512-sENe6IyUqvhQprfS/7gJAkPC5sX2LI5uc+gXaKNgzKp72UEyXYSoN3h4MZkOlCrOcTSWTJW7605tYgg8nFkflw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/algosdk/-/algosdk-2.7.0.tgz", + "integrity": "sha512-sBE9lpV7bup3rZ+q2j3JQaFAE9JwZvjWKX00vPlG8e9txctXbgLL56jZhSWZndqhDI9oI+0P4NldkuQIWdrUyg==", "dependencies": { "algo-msgpack-with-bigint": "^2.1.1", "buffer": "^6.0.3", - "cross-fetch": "^3.1.5", "hi-base32": "^0.5.1", "js-sha256": "^0.9.0", "js-sha3": "^0.8.0", @@ -4479,38 +7244,7 @@ "vlq": "^2.0.4" }, "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/algosdk/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/algosdk/node_modules/cross-fetch": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", - "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", - "dependencies": { - "node-fetch": "^2.6.12" + "node": ">=18.0.0" } }, "node_modules/ansi-escapes": { @@ -4621,6 +7355,15 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "peer": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, "node_modules/asn1": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", @@ -4700,6 +7443,15 @@ "follow-redirects": "^1.14.4" } }, + "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==", + "peer": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, "node_modules/babel-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", @@ -4946,9 +7698,9 @@ "dev": true }, "node_modules/bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", + "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" }, "node_modules/big-integer": { "version": "1.6.36", @@ -5196,7 +7948,9 @@ } }, "node_modules/buffer": { - "version": "6.0.1", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "funding": [ { "type": "github", @@ -5211,7 +7965,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -5243,6 +7996,45 @@ "node-gyp-build": "^4.2.0" } }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -5395,6 +8187,17 @@ "node": ">=0.8" } }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -5405,6 +8208,28 @@ "node": ">= 0.12.0" } }, + "node_modules/code-red": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", + "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", + "peer": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15", + "@types/estree": "^1.0.1", + "acorn": "^8.10.0", + "estree-walker": "^3.0.3", + "periscopic": "^3.1.0" + } + }, + "node_modules/code-red/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "peer": true, + "dependencies": { + "@types/estree": "^1.0.0" + } + }, "node_modules/collect-v8-coverage": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", @@ -5442,6 +8267,11 @@ "version": "2.20.3", "license": "MIT" }, + "node_modules/computeds": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", + "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==" + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -5679,6 +8509,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "peer": true, + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -5691,6 +8534,11 @@ "node": ">=0.10" } }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==" + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -5713,6 +8561,31 @@ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/dedent": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", @@ -5727,6 +8600,11 @@ } } }, + "node_modules/dedent-js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dedent-js/-/dedent-js-1.0.1.tgz", + "integrity": "sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==" + }, "node_modules/deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", @@ -5736,6 +8614,14 @@ "node": ">=0.10.0" } }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "engines": { + "node": ">=10" + } + }, "node_modules/deferred-leveldown": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz", @@ -5786,6 +8672,15 @@ "node": ">= 0.6" } }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "peer": true, + "engines": { + "node": ">=6" + } + }, "node_modules/detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -5971,6 +8866,25 @@ "node": ">=0.10.0" } }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/errno": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", @@ -6078,6 +8992,11 @@ "node": ">=4" } }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, "node_modules/eth-block-tracker": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz", @@ -6826,9 +9745,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", @@ -7026,6 +9945,47 @@ "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.2.tgz", "integrity": "sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==" }, + "node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "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==", + "dependencies": { + "@0no-co/graphql.web": "^1.0.5", + "@gql.tada/cli-utils": "1.3.9", + "@gql.tada/internal": "1.0.0" + }, + "bin": { + "gql-tada": "bin/cli.js", + "gql.tada": "bin/cli.js" + }, + "peerDependencies": { + "typescript": "^5.0.0" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -7033,9 +9993,9 @@ "dev": true }, "node_modules/graphql": { - "version": "16.6.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz", - "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==", + "version": "16.8.1", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz", + "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==", "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } @@ -7139,6 +10099,14 @@ "minimalistic-assert": "^1.0.1" } }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } + }, "node_modules/hi-base32": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/hi-base32/-/hi-base32-0.5.1.tgz", @@ -7167,6 +10135,11 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, "node_modules/http-errors": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", @@ -7207,6 +10180,18 @@ "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.2.0.tgz", "integrity": "sha512-feERVo9iWxvnejp3SEfm/+oNG517npqL2/PIA8ORjyOZjGC7TwCRQsZylciLS64i6pJ0wRYz3rkXLRwbtFa8Ng==" }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -7216,6 +10201,14 @@ "node": ">=10.17.0" } }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dependencies": { + "ms": "^2.0.0" + } + }, "node_modules/ieee754": { "version": "1.2.1", "funding": [ @@ -7356,6 +10349,15 @@ "node": ">=0.12.0" } }, + "node_modules/is-reference": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", + "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", + "peer": true, + "dependencies": { + "@types/estree": "*" + } + }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -7519,12 +10521,11 @@ } }, "node_modules/jayson": { - "version": "3.6.4", - "license": "MIT", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.1.0.tgz", + "integrity": "sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==", "dependencies": { "@types/connect": "^3.4.33", - "@types/express-serve-static-core": "^4.17.9", - "@types/lodash": "^4.14.159", "@types/node": "^12.12.54", "@types/ws": "^7.4.4", "commander": "^2.20.3", @@ -7534,8 +10535,7 @@ "isomorphic-ws": "^4.0.1", "json-stringify-safe": "^5.0.1", "JSONStream": "^1.3.5", - "lodash": "^4.17.20", - "uuid": "^3.4.0", + "uuid": "^8.3.2", "ws": "^7.4.5" }, "bin": { @@ -7546,8 +10546,17 @@ } }, "node_modules/jayson/node_modules/@types/node": { - "version": "12.20.16", - "license": "MIT" + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + }, + "node_modules/jayson/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } }, "node_modules/jest": { "version": "29.7.0", @@ -8735,6 +11744,11 @@ "bignumber.js": "^9.0.0" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -8882,27 +11896,12 @@ "keccak": "^3.0.2" } }, - "node_modules/keccak256/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "json-buffer": "3.0.1" } }, "node_modules/kleur": { @@ -9043,6 +12042,11 @@ "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.10.tgz", "integrity": "sha512-eY+z7hDrDKxkAK+QKZVNv92A5KYkxfvIshtBJkmg5TSiCnYqZP3i9OO9whE79Pwgm4jGaoHgkM4ao/b9Cyu4zQ==" }, + "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==" + }, "node_modules/libsodium-wrappers": { "version": "0.7.10", "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.10.tgz", @@ -9051,6 +12055,14 @@ "libsodium": "^0.7.0" } }, + "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==", + "dependencies": { + "libsodium-sumo": "^0.7.13" + } + }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -9071,6 +12083,12 @@ "node": "> 8.0.0" } }, + "node_modules/locate-character": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", + "peer": true + }, "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -9128,6 +12146,14 @@ "tslib": "^2.0.3" } }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -9143,6 +12169,15 @@ "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", "dev": true }, + "node_modules/magic-string": { + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "peer": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, "node_modules/make-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", @@ -9227,6 +12262,12 @@ "safe-buffer": "^5.1.2" } }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "peer": true + }, "node_modules/memdown": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", @@ -9382,6 +12423,14 @@ "node": ">=6" } }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "engines": { + "node": ">=4" + } + }, "node_modules/min-document": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", @@ -9432,8 +12481,12 @@ "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 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/muggle-string": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==" }, "node_modules/mustache": { "version": "4.2.0", @@ -9604,6 +12657,17 @@ "node": ">=0.10.0" } }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -9692,6 +12756,14 @@ "node": ">=8" } }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "engines": { + "node": ">=8" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -9772,6 +12844,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -9824,6 +12910,26 @@ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", "dev": true }, + "node_modules/periscopic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", + "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", + "peer": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + } + }, + "node_modules/periscopic/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "peer": true, + "dependencies": { + "@types/estree": "^1.0.0" + } + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -9999,6 +13105,11 @@ "pbts": "bin/pbts" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -10011,6 +13122,15 @@ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -10045,6 +13165,17 @@ "node": ">=0.6" } }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -10144,6 +13275,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, "node_modules/resolve-cwd": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", @@ -10191,6 +13327,17 @@ "node": ">=0.8" } }, + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ripemd160": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", @@ -10394,29 +13541,6 @@ "buffer": "6.0.3" } }, - "node_modules/sha3/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -10521,6 +13645,14 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-support": { "version": "0.5.13", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", @@ -10704,6 +13836,53 @@ "node": ">=4" } }, + "node_modules/svelte": { + "version": "4.2.17", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.17.tgz", + "integrity": "sha512-N7m1YnoXtRf5wya5Gyx3TWuTddI4nAyayyIWFojiWV5IayDYNV5i2mRp/7qNGol4DtxEYxljmrbgp1HM6hUbmQ==", + "peer": true, + "dependencies": { + "@ampproject/remapping": "^2.2.1", + "@jridgewell/sourcemap-codec": "^1.4.15", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/estree": "^1.0.1", + "acorn": "^8.9.0", + "aria-query": "^5.3.0", + "axobject-query": "^4.0.0", + "code-red": "^1.0.3", + "css-tree": "^2.3.1", + "estree-walker": "^3.0.3", + "is-reference": "^3.0.1", + "locate-character": "^3.0.0", + "magic-string": "^0.30.4", + "periscopic": "^3.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/svelte/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "peer": true, + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/svelte2tsx": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/svelte2tsx/-/svelte2tsx-0.7.9.tgz", + "integrity": "sha512-Rm+0LAwg9wT4H2IsR8EaM9EWErTzi9LmuZKxkH5b1ua94XjQmwHstBP4VabLgA9AE6XmwBg+xK7Cjzwfm6ustQ==", + "dependencies": { + "dedent-js": "^1.0.1", + "pascal-case": "^3.1.1" + }, + "peerDependencies": { + "svelte": "^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0", + "typescript": "^4.9.4 || ^5.0.0" + } + }, "node_modules/symbol-observable": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", @@ -11435,16 +14614,15 @@ "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==" }, "node_modules/typescript": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", - "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", - "dev": true, + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/u3": { @@ -11452,6 +14630,11 @@ "resolved": "https://registry.npmjs.org/u3/-/u3-0.1.1.tgz", "integrity": "sha512-+J5D5ir763y+Am/QY6hXNRlwljIeRMZMGs0cT6qqZVVzzT3X3nFPXVyPOFRMOR4kupB0T8JnCdpWdp6Q/iXn3w==" }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "node_modules/untildify": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", @@ -11520,6 +14703,7 @@ }, "node_modules/uuid": { "version": "3.4.0", + "dev": true, "license": "MIT", "bin": { "uuid": "bin/uuid" @@ -11558,6 +14742,15 @@ "resolved": "https://registry.npmjs.org/vlq/-/vlq-2.0.4.tgz", "integrity": "sha512-aodjPa2wPQFkra1G8CzJBTHXhgk3EVSwxSWXNPr1fgdFLUb8kvLV1iEb6rFgasIsjP82HWI6dsb5Io26DDnasA==" }, + "node_modules/vue-template-compiler": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz", + "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==", + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -11908,14 +15101,33 @@ } }, "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, + "@0no-co/graphql.web": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@0no-co/graphql.web/-/graphql.web-1.0.7.tgz", + "integrity": "sha512-E3Qku4mTzdrlwVWGPxklDnME5ANrEGetvYw4i2GCRlppWXXE4QD66j7pwb8HelZwS6LnqEChhrSOGCXpbiu6MQ==", + "requires": {} + }, + "@0no-co/graphqlsp": { + "version": "1.12.5", + "resolved": "https://registry.npmjs.org/@0no-co/graphqlsp/-/graphqlsp-1.12.5.tgz", + "integrity": "sha512-YS9s8sf3XLaVdBt33u1mbUdfUSLiarQW1SFd3ITh2CLWz1nVnVTN0oCrpepuFHUJ7rt+b6Gk14sgjP4ONdeZfQ==", "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@gql.tada/internal": "^1.0.0", + "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0" + } + }, + "@adraffy/ens-normalize": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==" + }, + "@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "requires": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" } }, "@apollo/client": { @@ -11938,6 +15150,37 @@ "zen-observable-ts": "^1.2.5" } }, + "@aptos-labs/aptos-client": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@aptos-labs/aptos-client/-/aptos-client-0.1.0.tgz", + "integrity": "sha512-q3s6pPq8H2buGp+tPuIRInWsYOuhSEwuNJPwd2YnsiID3YSLihn2ug39ktDJAcSOprUcp7Nid8WK7hKqnUmSdA==", + "requires": { + "axios": "1.6.2", + "got": "^11.8.6" + }, + "dependencies": { + "axios": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, "@babel/code-frame": { "version": "7.24.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", @@ -11995,19 +15238,6 @@ "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - } - } } }, "@babel/helper-compilation-targets": { @@ -12158,10 +15388,9 @@ } }, "@babel/parser": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz", - "integrity": "sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==", - "dev": true + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", + "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==" }, "@babel/plugin-syntax-async-generators": { "version": "7.8.4", @@ -12389,13 +15618,6 @@ "elliptic": "^6.5.4", "js-base64": "^3.6.1", "near-api-js": "^1.0.0" - }, - "dependencies": { - "bech32": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", - "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" - } } }, "@certusone/wormhole-sdk-proto-web": { @@ -12449,6 +15671,16 @@ "requires": { "@types/long": "^4.0.2", "@types/node": "^18.0.3" + }, + "dependencies": { + "@types/node": { + "version": "18.19.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.33.tgz", + "integrity": "sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==", + "requires": { + "undici-types": "~5.26.4" + } + } } }, "@classic-terra/terra.proto": { @@ -12471,6 +15703,61 @@ "protobufjs": "^6.8.8" } }, + "@coral-xyz/anchor": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/@coral-xyz/anchor/-/anchor-0.29.0.tgz", + "integrity": "sha512-eny6QNG0WOwqV0zQ7cs/b1tIuzZGmP7U7EcH+ogt4Gdbl8HDmIYVMh/9aTmYZPaFWjtUaI8qSn73uYEXWfATdA==", + "requires": { + "@coral-xyz/borsh": "^0.29.0", + "@noble/hashes": "^1.3.1", + "@solana/web3.js": "^1.68.0", + "bn.js": "^5.1.2", + "bs58": "^4.0.1", + "buffer-layout": "^1.2.2", + "camelcase": "^6.3.0", + "cross-fetch": "^3.1.5", + "crypto-hash": "^1.3.0", + "eventemitter3": "^4.0.7", + "pako": "^2.0.3", + "snake-case": "^3.0.4", + "superstruct": "^0.15.4", + "toml": "^3.0.0" + }, + "dependencies": { + "@coral-xyz/borsh": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.29.0.tgz", + "integrity": "sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ==", + "requires": { + "bn.js": "^5.1.2", + "buffer-layout": "^1.2.0" + } + }, + "@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==" + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" + }, + "cross-fetch": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "requires": { + "node-fetch": "^2.6.12" + } + }, + "superstruct": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.15.5.tgz", + "integrity": "sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==" + } + } + }, "@coral-xyz/borsh": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.2.6.tgz", @@ -12500,6 +15787,11 @@ "bech32": "^1.1.4", "readonly-date": "^1.0.0" } + }, + "bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" } } }, @@ -12530,6 +15822,11 @@ "bech32": "^1.1.4", "readonly-date": "^1.0.0" } + }, + "bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" } } }, @@ -12556,6 +15853,11 @@ "bech32": "^1.1.4", "readonly-date": "^1.0.0" } + }, + "bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" } } }, @@ -12567,6 +15869,13 @@ "base64-js": "^1.3.0", "bech32": "^1.1.4", "readonly-date": "^1.0.0" + }, + "dependencies": { + "bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + } } }, "@cosmjs/json-rpc": { @@ -12609,6 +15918,11 @@ "bech32": "^1.1.4", "readonly-date": "^1.0.0" } + }, + "bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" } } }, @@ -12651,6 +15965,11 @@ "bech32": "^1.1.4", "readonly-date": "^1.0.0" } + }, + "bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" } } }, @@ -12696,6 +16015,11 @@ "requires": { "follow-redirects": "^1.14.0" } + }, + "bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" } } }, @@ -12704,6 +16028,16 @@ "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.29.5.tgz", "integrity": "sha512-m7h+RXDUxOzEOGt4P+3OVPX7PuakZT3GBmaM/Y2u+abN3xZkziykD/NvedYFvvCCdQo714XcGl33bwifS9FZPQ==" }, + "@ensdomains/ens-validation": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@ensdomains/ens-validation/-/ens-validation-0.1.0.tgz", + "integrity": "sha512-rbDh2K6GfqXvBcJUISaTTYEt3f079WA4ohTE5Lh4/8EaaPAk/9vk3EisMUQV2UVxeFIZQEEyRCIOmRTpqN0W7A==" + }, + "@ensdomains/eth-ens-namehash": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@ensdomains/eth-ens-namehash/-/eth-ens-namehash-2.0.15.tgz", + "integrity": "sha512-JRDFP6+Hczb1E0/HhIg0PONgBYasfGfDheujmfxaZaAv/NAH4jE6Kf48WbqfRZdxt4IZI3jl3Ri7sZ1nP09lgw==" + }, "@esbuild/aix-ppc64": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", @@ -13096,6 +16430,11 @@ "ws": "7.4.6" }, "dependencies": { + "bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, "ws": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", @@ -13240,10 +16579,31 @@ "@ethersproject/strings": "^5.7.0" } }, + "@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==", + "requires": { + "@0no-co/graphqlsp": "^1.12.1", + "@gql.tada/internal": "1.0.0", + "@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" + } + }, + "@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==", + "requires": { + "@0no-co/graphql.web": "^1.0.5" + } + }, "@graphql-typed-document-node/core": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz", - "integrity": "sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", "requires": {} }, "@improbable-eng/grpc-web": { @@ -13297,13 +16657,50 @@ } } }, - "@injectivelabs/exceptions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@injectivelabs/exceptions/-/exceptions-1.11.0.tgz", - "integrity": "sha512-jZ0N4cP1KCyErNEiCARaKt70E8KMTNa9R4a5FrCERX4cFKPxdbWpoQ8Lqga2jfHAgiFcChRJ5JmaSYclFtKf9w==", + "@injectivelabs/dmm-proto-ts": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/@injectivelabs/dmm-proto-ts/-/dmm-proto-ts-1.0.19.tgz", + "integrity": "sha512-2FCzCziy1RhzmnkAVIU+Asby/GXAVQqKt5/o1s52j0LJXfJMpiCrV6soLfnjTebj61T+1WvJBPFoZCCiVYBpcw==", "requires": { "@injectivelabs/grpc-web": "^0.0.1", - "@injectivelabs/ts-types": "^1.11.0", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + }, + "dependencies": { + "long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + }, + "protobufjs": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz", + "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + } + } + } + }, + "@injectivelabs/exceptions": { + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/@injectivelabs/exceptions/-/exceptions-1.14.6.tgz", + "integrity": "sha512-A+URJwygeDjFPhulGMNVw70z738NtpIiCr0W8q4Kr4Ggg30i+AaVAjViYLm56pSMXXpomu9CYJ/sY6ijQn48IQ==", + "requires": { + "@injectivelabs/grpc-web": "^0.0.1", + "@injectivelabs/ts-types": "^1.14.6", "http-status-codes": "^2.2.0", "link-module-alias": "^1.2.0", "shx": "^0.3.2" @@ -13610,11 +17007,6 @@ "form-data": "^4.0.0" } }, - "bech32": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", - "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" - }, "cosmjs-types": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.7.2.tgz", @@ -13637,9 +17029,9 @@ } }, "@injectivelabs/test-utils": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@injectivelabs/test-utils/-/test-utils-1.11.0.tgz", - "integrity": "sha512-/KIPGeLFsjITs43yQG++SoOtDExZr+Pa3JVYIZEIMFUVG8a7z9Vi5m6a1kbowvozZbLG5KHuuUXF2SdfKSxznQ==", + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/@injectivelabs/test-utils/-/test-utils-1.14.4.tgz", + "integrity": "sha512-M7UoB5CIVVN7BtdmU26GwZsWKp0BQg9qV5a+YvcdhlwlSIkvt3gKVKBMq/vKClCakOu2AjhCVGDMZVnagIBogg==", "requires": { "axios": "^0.21.1", "bignumber.js": "^9.0.1", @@ -13660,14 +17052,14 @@ } }, "@injectivelabs/token-metadata": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@injectivelabs/token-metadata/-/token-metadata-1.11.0.tgz", - "integrity": "sha512-RzwJvnjDX8IwXYTvZDCMQcGxkN/0ZfXUEYTVMB0WMU0bRH7cV7WJ6Z9UDOijAehrJHu/fByDz2DuEOcktbwoIw==", + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/@injectivelabs/token-metadata/-/token-metadata-1.14.7.tgz", + "integrity": "sha512-RRRuyirzoThwQ5P8D3STH2YOavGsdnetQy6ZPQ8yA7VUavt00KBB26M92zSLbiUz5VrxhPHDCEEkuJVWx+xtmw==", "requires": { - "@injectivelabs/exceptions": "^1.11.0", - "@injectivelabs/networks": "^1.11.0", - "@injectivelabs/ts-types": "^1.11.0", - "@injectivelabs/utils": "^1.11.0", + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/networks": "^1.14.6", + "@injectivelabs/ts-types": "^1.14.6", + "@injectivelabs/utils": "^1.14.6", "@types/lodash.values": "^4.3.6", "copyfiles": "^2.4.1", "jsonschema": "^1.4.0", @@ -13678,24 +17070,24 @@ }, "dependencies": { "@injectivelabs/networks": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@injectivelabs/networks/-/networks-1.11.0.tgz", - "integrity": "sha512-0dtO/zZ8AzsxGInEWZ7tpOA0Q++M3FhAFxOWzhYC39ZeJlwHhEcYmvmhrGG5gRdus29XfFysRlaz3hyT3XH1Jg==", + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/@injectivelabs/networks/-/networks-1.14.6.tgz", + "integrity": "sha512-O1IkPFJl8ThNL6N+k/9OimrgCYsSWQ8A1FtVMXSQge+0QRZsDKSpRmQRwE601otXXauO31nOUct5AaiWPffXVQ==", "requires": { - "@injectivelabs/exceptions": "^1.11.0", - "@injectivelabs/ts-types": "^1.11.0", - "@injectivelabs/utils": "^1.11.0", + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/ts-types": "^1.14.6", + "@injectivelabs/utils": "^1.14.6", "link-module-alias": "^1.2.0", "shx": "^0.3.2" } }, "@injectivelabs/utils": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@injectivelabs/utils/-/utils-1.11.0.tgz", - "integrity": "sha512-KnUmt4vIvoBz6F3mQomy4GeTkpcHMYwju2AgiqzARrrqgF/2p1ZHfKBpr1ksj/jkl5X+irh3JVfbd/dFjwKi1g==", + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/@injectivelabs/utils/-/utils-1.14.6.tgz", + "integrity": "sha512-5I0h4GiLB5PPTl+g2lpevRP+WScvEbntdkoUQVtAdHewl4kutd5p1Kcnoi1Nvpq+sz5N/e9qtBIRuyxG38akOg==", "requires": { - "@injectivelabs/exceptions": "^1.11.0", - "@injectivelabs/ts-types": "^1.11.0", + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/ts-types": "^1.14.6", "axios": "^0.21.1", "bignumber.js": "^9.0.1", "http-status-codes": "^2.2.0", @@ -13716,9 +17108,9 @@ } }, "@injectivelabs/ts-types": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@injectivelabs/ts-types/-/ts-types-1.11.0.tgz", - "integrity": "sha512-3ZVRW1xMe3RHOxFblRC0LgQcU/rpxgZQZ+sISyRKFGcS/m2ApkdmcPvjMgd5TQe9AXW/6nnvmul3mST8iAaUJg==", + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/@injectivelabs/ts-types/-/ts-types-1.14.6.tgz", + "integrity": "sha512-/Ax5eCSfE9OhcyUc9wZk/LFKTYhIY9RJIaNT/n92rbHjXSfXRLSX+Bvk62vC9Ej+SEBPp77WYngtrePPA1HEgw==", "requires": { "link-module-alias": "^1.2.0", "shx": "^0.3.2" @@ -14125,38 +17517,34 @@ } }, "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" } }, "@jridgewell/resolve-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" }, "@jridgewell/set-array": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==" }, "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -14280,85 +17668,51 @@ }, "dependencies": { "@noble/hashes": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz", - "integrity": "sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==" }, "@scure/bip32": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.0.tgz", - "integrity": "sha512-bcKpo1oj54hGholplGLpqPHRbIsnbixFtc06nwuNM5/dwSXOq/AAYoIBRsBmnZJSdfeNW5rnff7NTAz3ZCqR9Q==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", "requires": { - "@noble/curves": "~1.0.0", - "@noble/hashes": "~1.3.0", - "@scure/base": "~1.1.0" + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" } }, "@scure/bip39": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.0.tgz", - "integrity": "sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", "requires": { - "@noble/hashes": "~1.3.0", - "@scure/base": "~1.1.0" - } - }, - "@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" - }, - "jayson": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.1.0.tgz", - "integrity": "sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==", - "requires": { - "@types/connect": "^3.4.33", - "@types/node": "^12.12.54", - "@types/ws": "^7.4.4", - "commander": "^2.20.3", - "delay": "^5.0.0", - "es6-promisify": "^5.0.0", - "eyes": "^0.1.8", - "isomorphic-ws": "^4.0.1", - "json-stringify-safe": "^5.0.1", - "JSONStream": "^1.3.5", - "uuid": "^8.3.2", - "ws": "^7.4.5" + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" } }, "superstruct": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.3.tgz", "integrity": "sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==" - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" } } }, "@noble/curves": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.0.0.tgz", - "integrity": "sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.0.tgz", + "integrity": "sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==", "requires": { - "@noble/hashes": "1.3.0" + "@noble/hashes": "1.4.0" }, "dependencies": { "@noble/hashes": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz", - "integrity": "sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==" } } }, - "@noble/ed25519": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.1.tgz", - "integrity": "sha512-Rk4SkJFaXZiznFyC/t77Q0NKS4FL7TLJJsVG2V2oiEq3kJVeTdxysEe/yRWSpnWMe808XRDJ+VFh5pt/FN5plw==" - }, "@noble/hashes": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.3.tgz", @@ -14367,7 +17721,8 @@ "@noble/secp256k1": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.6.3.tgz", - "integrity": "sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ==" + "integrity": "sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ==", + "dev": true }, "@osmonauts/helpers": { "version": "0.6.0", @@ -14558,6 +17913,11 @@ "follow-redirects": "^1.14.0" } }, + "bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, "cosmjs-types": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.5.1.tgz", @@ -14720,9 +18080,9 @@ "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" }, "@scure/base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", - "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==" + "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==" }, "@scure/bip32": { "version": "1.1.0", @@ -14773,6 +18133,11 @@ "bech32": "^1.1.4", "readonly-date": "^1.0.0" } + }, + "bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" } } }, @@ -14809,6 +18174,11 @@ "bech32": "^1.1.4", "readonly-date": "^1.0.0" } + }, + "bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" } } }, @@ -14818,6 +18188,11 @@ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "dev": true }, + "@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" + }, "@sinonjs/commons": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", @@ -14837,22 +18212,11 @@ } }, "@solana/buffer-layout": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.0.tgz", - "integrity": "sha512-lR0EMP2HC3+Mxwd4YcnZb0smnaDw7Bl2IQWZiTevRH5ZZBZn6VRWn3/92E3qdU4SSImJkA6IDHawOHAnx/qUvQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz", + "integrity": "sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==", "requires": { "buffer": "~6.0.3" - }, - "dependencies": { - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - } } }, "@solana/buffer-layout-utils": { @@ -14867,46 +18231,55 @@ } }, "@solana/spl-token": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.3.5.tgz", - "integrity": "sha512-0bGC6n415lGjKu02gkLOIpP1wzndSP0SHwN9PefJ+wKAhmfU1rl3AV1Pa41uap2kzSCD6F9642ngNO8KXPvh/g==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.3.9.tgz", + "integrity": "sha512-1EXHxKICMnab35MvvY/5DBc/K/uQAOJCYnDZXw83McCAYUAfi+rwq6qfd6MmITmSTEhcfBcl/zYxmW/OSN0RmA==", "requires": { "@solana/buffer-layout": "^4.0.0", "@solana/buffer-layout-utils": "^0.2.0", "buffer": "^6.0.3" - }, - "dependencies": { - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - } } }, "@solana/web3.js": { - "version": "1.66.2", - "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.66.2.tgz", - "integrity": "sha512-RyaHMR2jGmaesnYP045VLeBGfR/gAW3cvZHzMFGg7bkO+WOYOYp1nEllf0/la4U4qsYGKCsO9eEevR5fhHiVHg==", + "version": "1.91.7", + "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.91.7.tgz", + "integrity": "sha512-HqljZKDwk6Z4TajKRGhGLlRsbGK4S8EY27DA7v1z6yakewiUY3J7ZKDZRxcqz2MYV/ZXRrJ6wnnpiHFkPdv0WA==", "requires": { - "@babel/runtime": "^7.12.5", - "@noble/ed25519": "^1.7.0", - "@noble/hashes": "^1.1.2", - "@noble/secp256k1": "^1.6.3", - "@solana/buffer-layout": "^4.0.0", + "@babel/runtime": "^7.23.4", + "@noble/curves": "^1.4.0", + "@noble/hashes": "^1.3.3", + "@solana/buffer-layout": "^4.0.1", + "agentkeepalive": "^4.5.0", "bigint-buffer": "^1.1.5", - "bn.js": "^5.0.0", + "bn.js": "^5.2.1", "borsh": "^0.7.0", "bs58": "^4.0.1", - "buffer": "6.0.1", + "buffer": "6.0.3", "fast-stable-stringify": "^1.0.0", - "jayson": "^3.4.4", - "node-fetch": "2", - "rpc-websockets": "^7.5.0", + "jayson": "^4.1.0", + "node-fetch": "^2.7.0", + "rpc-websockets": "^7.5.1", "superstruct": "^0.14.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", + "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==" + }, + "regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + } } }, "@suchipi/femver": { @@ -14914,6 +18287,14 @@ "resolved": "https://registry.npmjs.org/@suchipi/femver/-/femver-1.0.0.tgz", "integrity": "sha512-bprE8+K5V+DPX7q2e2K57ImqNBdfGHDIWaGI5xHxZoxbKOuQZn4wzPiUxOAHnsUr3w3xHrWXwN7gnG/iIuEMIg==" }, + "@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "requires": { + "defer-to-connect": "^2.0.0" + } + }, "@terra-money/legacy.proto": { "version": "npm:@terra-money/terra.proto@0.1.7", "resolved": "https://registry.npmjs.org/@terra-money/terra.proto/-/terra.proto-0.1.7.tgz", @@ -14954,11 +18335,6 @@ "form-data": "^4.0.0" } }, - "bech32": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", - "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" - }, "form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -15074,6 +18450,17 @@ "base-x": "^3.0.6" } }, + "@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "requires": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, "@types/config": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/@types/config/-/config-3.3.0.tgz", @@ -15085,13 +18472,11 @@ "@types/node": "*" } }, - "@types/express-serve-static-core": { - "version": "4.17.24", - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } + "@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "peer": true }, "@types/graceful-fs": { "version": "4.1.9", @@ -15102,6 +18487,11 @@ "@types/node": "*" } }, + "@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" + }, "@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", @@ -15136,6 +18526,14 @@ "pretty-format": "^29.0.0" } }, + "@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "requires": { + "@types/node": "*" + } + }, "@types/lodash": { "version": "4.14.171" }, @@ -15153,9 +18551,12 @@ "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" }, "@types/node": { - "version": "18.7.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.6.tgz", - "integrity": "sha512-EdxgKRXgYsNITy5mjjXjVE/CS8YENSdhiagGrLqjG0pvA2owgJ6i4l7wy/PFZGC0B1/H20lWKN7ONVDNYDZm7A==" + "version": "20.12.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", + "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", + "requires": { + "undici-types": "~5.26.4" + } }, "@types/node-fetch": { "version": "2.6.3", @@ -15188,11 +18589,13 @@ "@types/node": "*" } }, - "@types/qs": { - "version": "6.9.7" - }, - "@types/range-parser": { - "version": "1.2.4" + "@types/responselike": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "requires": { + "@types/node": "*" + } }, "@types/secp256k1": { "version": "4.0.3", @@ -15229,6 +18632,2205 @@ "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", "dev": true }, + "@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==", + "requires": { + "@volar/source-map": "2.2.5" + } + }, + "@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==", + "requires": { + "muggle-string": "^0.4.0" + } + }, + "@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==", + "requires": { + "@babel/parser": "^7.24.4", + "@vue/shared": "3.4.27", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "@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==", + "requires": { + "@vue/compiler-core": "3.4.27", + "@vue/shared": "3.4.27" + } + }, + "@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==", + "requires": { + "@volar/language-core": "~2.2.4", + "@vue/compiler-dom": "^3.4.0", + "@vue/shared": "^3.4.0", + "computeds": "^0.0.1", + "minimatch": "^9.0.3", + "path-browserify": "^1.0.1", + "vue-template-compiler": "^2.7.14" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "@vue/shared": { + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.27.tgz", + "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==" + }, + "@wormhole-foundation/sdk": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk/-/sdk-0.7.0-beta.5.tgz", + "integrity": "sha512-0IM8xngEghx5Uf3/SnzQeBrOHBONj92GJ6/RETzuvmCx3YkZpy9gFo1ctvD9Ey4MrWbTdQk7qMnpCZOwpldWWw==", + "requires": { + "@wormhole-foundation/sdk-algorand": "0.7.0-beta.5", + "@wormhole-foundation/sdk-algorand-core": "0.7.0-beta.5", + "@wormhole-foundation/sdk-algorand-tokenbridge": "0.7.0-beta.5", + "@wormhole-foundation/sdk-aptos": "0.7.0-beta.5", + "@wormhole-foundation/sdk-aptos-core": "0.7.0-beta.5", + "@wormhole-foundation/sdk-aptos-tokenbridge": "0.7.0-beta.5", + "@wormhole-foundation/sdk-base": "0.7.0-beta.5", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "@wormhole-foundation/sdk-cosmwasm": "0.7.0-beta.5", + "@wormhole-foundation/sdk-cosmwasm-core": "0.7.0-beta.5", + "@wormhole-foundation/sdk-cosmwasm-ibc": "0.7.0-beta.5", + "@wormhole-foundation/sdk-cosmwasm-tokenbridge": "0.7.0-beta.5", + "@wormhole-foundation/sdk-definitions": "0.7.0-beta.5", + "@wormhole-foundation/sdk-evm": "0.7.0-beta.5", + "@wormhole-foundation/sdk-evm-cctp": "0.7.0-beta.5", + "@wormhole-foundation/sdk-evm-core": "0.7.0-beta.5", + "@wormhole-foundation/sdk-evm-portico": "0.7.0-beta.5", + "@wormhole-foundation/sdk-evm-tokenbridge": "0.7.0-beta.5", + "@wormhole-foundation/sdk-solana": "0.7.0-beta.5", + "@wormhole-foundation/sdk-solana-cctp": "0.7.0-beta.5", + "@wormhole-foundation/sdk-solana-core": "0.7.0-beta.5", + "@wormhole-foundation/sdk-solana-tokenbridge": "0.7.0-beta.5", + "@wormhole-foundation/sdk-sui": "0.7.0-beta.5", + "@wormhole-foundation/sdk-sui-core": "0.7.0-beta.5", + "@wormhole-foundation/sdk-sui-tokenbridge": "0.7.0-beta.5" + } + }, + "@wormhole-foundation/sdk-algorand": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-algorand/-/sdk-algorand-0.7.0-beta.5.tgz", + "integrity": "sha512-DYhinpe/41b8nu+xS9I1KmzUMUIicZYmKWH7Ea5/5KTA6pB8tM3AHTKa54cqb5g6n14VQmfbnHFbGVAUjqSL6g==", + "requires": { + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "algosdk": "2.7.0" + } + }, + "@wormhole-foundation/sdk-algorand-core": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-algorand-core/-/sdk-algorand-core-0.7.0-beta.5.tgz", + "integrity": "sha512-AJQEaXIViwwmg/oyn0QjgJEwv2pPbup7qb2C0KTJIPXwx40Cr4Z6jrBrgE387+svJ63+WNNBhJnC5YRl93AuKg==", + "requires": { + "@wormhole-foundation/sdk-algorand": "0.7.0-beta.5", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5" + } + }, + "@wormhole-foundation/sdk-algorand-tokenbridge": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-algorand-tokenbridge/-/sdk-algorand-tokenbridge-0.7.0-beta.5.tgz", + "integrity": "sha512-ZozYoS948Aa+iVZWtq3b+xQMSWyh9uEklsQTfDlNLi+72P5Wz6amrweBNnSErxrpG+y/zXa9XqwVBN6grjc2gg==", + "requires": { + "@wormhole-foundation/sdk-algorand": "0.7.0-beta.5", + "@wormhole-foundation/sdk-algorand-core": "0.7.0-beta.5", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5" + } + }, + "@wormhole-foundation/sdk-aptos": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-aptos/-/sdk-aptos-0.7.0-beta.5.tgz", + "integrity": "sha512-QhCNBzoqZueTO3g8mYAszm3pogX7LUxl/STfw3xIc1xkxUzyk1Tw1UEzih3r6hObDU4C3S1g7zXM2QS5JMjK1g==", + "requires": { + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "aptos": "1.21.0" + }, + "dependencies": { + "@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==" + }, + "@scure/bip39": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", + "requires": { + "@noble/hashes": "~1.3.0", + "@scure/base": "~1.1.0" + } + }, + "aptos": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/aptos/-/aptos-1.21.0.tgz", + "integrity": "sha512-PRKjoFgL8tVEc9+oS7eJUv8GNxx8n3+0byH2+m7CP3raYOD6yFKOecuwjVMIJmgfpjp6xH0P0HDMGZAXmSyU0Q==", + "requires": { + "@aptos-labs/aptos-client": "^0.1.0", + "@noble/hashes": "1.3.3", + "@scure/bip39": "1.2.1", + "eventemitter3": "^5.0.1", + "form-data": "4.0.0", + "tweetnacl": "1.0.3" + } + }, + "eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, + "@wormhole-foundation/sdk-aptos-core": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-aptos-core/-/sdk-aptos-core-0.7.0-beta.5.tgz", + "integrity": "sha512-MjO/YULiKGUApDOxd7Ru5qR/D1g3Tx/Y0PAfCfBFaW1COCSeGNnnmUzTmVjE4pWlErvexiRfePZeM5a0FIjNRg==", + "requires": { + "@wormhole-foundation/sdk-aptos": "0.7.0-beta.5", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5" + } + }, + "@wormhole-foundation/sdk-aptos-tokenbridge": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-aptos-tokenbridge/-/sdk-aptos-tokenbridge-0.7.0-beta.5.tgz", + "integrity": "sha512-xHPeQeUQzTN8ErnNGACsE2JuZ+l0NHB6zvvk6ufc+Hsi7tLqpBf7iqI8MqsP+FbFOoMJnWukw1FkKO8G4Y/TgQ==", + "requires": { + "@wormhole-foundation/sdk-aptos": "0.7.0-beta.5", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5" + } + }, + "@wormhole-foundation/sdk-base": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-base/-/sdk-base-0.7.0-beta.5.tgz", + "integrity": "sha512-QMyfGmgg+5V0Qd2SLLXAqSE7nYr2+n/Q/qyuNGmR4vLrTxYR/FdVdyRfQU3rW0Dm1cxIUYt8lUQoW/nsAebIqg==", + "requires": { + "@scure/base": "^1.1.3" + } + }, + "@wormhole-foundation/sdk-connect": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-connect/-/sdk-connect-0.7.0-beta.5.tgz", + "integrity": "sha512-aIzo1o5RRX9asiI4pmMTX4NJCSP+iQHd8ZOr6WH2aW80WpnptnKUIL8p3uKEFZiBFobstvWVW3dvgPioUzBmYw==", + "requires": { + "@wormhole-foundation/sdk-base": "0.7.0-beta.5", + "@wormhole-foundation/sdk-definitions": "0.7.0-beta.5", + "axios": "^1.4.0" + }, + "dependencies": { + "axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "requires": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, + "@wormhole-foundation/sdk-cosmwasm": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm/-/sdk-cosmwasm-0.7.0-beta.5.tgz", + "integrity": "sha512-wYlHA0O/UmBET70JmAl95Tt4BZq0pZdG+rtWoxg2nnM0v7Qhk7B91/9YjR+e/dljHqG1y26UiZ6eLYaIoUpJKw==", + "requires": { + "@cosmjs/cosmwasm-stargate": "^0.32.0", + "@cosmjs/proto-signing": "^0.32.0", + "@cosmjs/stargate": "^0.32.0", + "@injectivelabs/sdk-ts": "^1.14.4", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "cosmjs-types": "^0.9.0" + }, + "dependencies": { + "@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==", + "requires": { + "@cosmjs/crypto": "^0.32.3", + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/utils": "^0.32.3" + } + }, + "@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==", + "requires": { + "@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", + "cosmjs-types": "^0.9.0", + "pako": "^2.0.2" + } + }, + "@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==", + "requires": { + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/utils": "^0.32.3", + "@noble/hashes": "^1", + "bn.js": "^5.2.0", + "elliptic": "^6.5.4", + "libsodium-wrappers-sumo": "^0.7.11" + } + }, + "@cosmjs/encoding": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.32.3.tgz", + "integrity": "sha512-p4KF7hhv8jBQX3MkB3Defuhz/W0l3PwWVYU2vkVuBJ13bJcXyhU9nJjiMkaIv+XP+W2QgRceqNNgFUC5chNR7w==", + "requires": { + "base64-js": "^1.3.0", + "bech32": "^1.1.4", + "readonly-date": "^1.0.0" + }, + "dependencies": { + "bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + } + } + }, + "@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==", + "requires": { + "@cosmjs/stream": "^0.32.3", + "xstream": "^11.14.0" + } + }, + "@cosmjs/math": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.32.3.tgz", + "integrity": "sha512-amumUtZs8hCCnV+lSBaJIiZkGabQm22QGg/IotYrhcmoOEOjt82n7hMNlNXRs7V6WLMidGrGYcswB5zcmp0Meg==", + "requires": { + "bn.js": "^5.2.0" + } + }, + "@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==", + "requires": { + "@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", + "cosmjs-types": "^0.9.0" + } + }, + "@cosmjs/socket": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.32.3.tgz", + "integrity": "sha512-F2WwNmaUPdZ4SsH6Uyreq3wQk7jpaEkb3wfOP951f5Jt6HCW/PxbxhKzHkAAf6+Sqks6SPhkbWoE8XaZpjL2KA==", + "requires": { + "@cosmjs/stream": "^0.32.3", + "isomorphic-ws": "^4.0.1", + "ws": "^7", + "xstream": "^11.14.0" + } + }, + "@cosmjs/stargate": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.32.3.tgz", + "integrity": "sha512-OQWzO9YWKerUinPIxrO1MARbe84XkeXJAW0lyMIjXIEikajuXZ+PwftiKA5yA+8OyditVmHVLtPud6Pjna2s5w==", + "requires": { + "@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-types": "^0.9.0", + "xstream": "^11.14.0" + } + }, + "@cosmjs/stream": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.32.3.tgz", + "integrity": "sha512-J2zVWDojkynYifAUcRmVczzmp6STEpyiAARq0rSsviqjreGIfspfuws/8rmkPa6qQBZvpQOBQCm2HyZZwYplIw==", + "requires": { + "xstream": "^11.14.0" + } + }, + "@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==", + "requires": { + "@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", + "axios": "^1.6.0", + "readonly-date": "^1.0.0", + "xstream": "^11.14.0" + } + }, + "@cosmjs/utils": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.32.3.tgz", + "integrity": "sha512-WCZK4yksj2hBDz4w7xFZQTRZQ/RJhBX26uFHmmQFIcNUUVAihrLO+RerqJgk0dZqC42wstM9pEUQGtPmLcIYvg==" + }, + "@injectivelabs/core-proto-ts": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@injectivelabs/core-proto-ts/-/core-proto-ts-0.0.21.tgz", + "integrity": "sha512-RBxSkRBCty60R/l55/D1jsSW0Aof5dyGFhCFdN3A010KjMv/SzZGGr+6DZPY/hflyFeaJzDv/VTopCymKNRBvQ==", + "requires": { + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + } + }, + "@injectivelabs/indexer-proto-ts": { + "version": "1.11.36", + "resolved": "https://registry.npmjs.org/@injectivelabs/indexer-proto-ts/-/indexer-proto-ts-1.11.36.tgz", + "integrity": "sha512-s7E3Y28JrkylDwRVfF/AvcPy/zPgz52W+XbQ0FOcsqPof78xp8FvnM3ubVZi0Dad39LgDB5eeiMFPmeuLp8Uew==", + "requires": { + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + } + }, + "@injectivelabs/mito-proto-ts": { + "version": "1.0.62", + "resolved": "https://registry.npmjs.org/@injectivelabs/mito-proto-ts/-/mito-proto-ts-1.0.62.tgz", + "integrity": "sha512-WtoO80Y597nZiAuE4H+L208I0i3ByWytR+HqABdCaA26uJ7F1LhXw8YXxh3pP9z0LAeW31T+N7bwtOMlVR4riA==", + "requires": { + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + } + }, + "@injectivelabs/networks": { + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/@injectivelabs/networks/-/networks-1.14.6.tgz", + "integrity": "sha512-O1IkPFJl8ThNL6N+k/9OimrgCYsSWQ8A1FtVMXSQge+0QRZsDKSpRmQRwE601otXXauO31nOUct5AaiWPffXVQ==", + "requires": { + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/ts-types": "^1.14.6", + "@injectivelabs/utils": "^1.14.6", + "link-module-alias": "^1.2.0", + "shx": "^0.3.2" + } + }, + "@injectivelabs/sdk-ts": { + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/@injectivelabs/sdk-ts/-/sdk-ts-1.14.7.tgz", + "integrity": "sha512-Qm8y8jKCMyNfYZGZVI+p0SIGJPtP5M9/DPFyPK+JSR2OOU0J4MX2yS/tQB5ViC/3Bt7yQhw/l3Rop93e7pTZEg==", + "requires": { + "@apollo/client": "^3.5.8", + "@cosmjs/amino": "^0.32.2", + "@cosmjs/proto-signing": "^0.32.2", + "@cosmjs/stargate": "^0.32.2", + "@ensdomains/ens-validation": "^0.1.0", + "@ensdomains/eth-ens-namehash": "^2.0.15", + "@ethersproject/bytes": "^5.7.0", + "@injectivelabs/core-proto-ts": "^0.0.21", + "@injectivelabs/dmm-proto-ts": "1.0.19", + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/grpc-web": "^0.0.1", + "@injectivelabs/grpc-web-node-http-transport": "^0.0.2", + "@injectivelabs/grpc-web-react-native-transport": "^0.0.2", + "@injectivelabs/indexer-proto-ts": "1.11.36", + "@injectivelabs/mito-proto-ts": "1.0.62", + "@injectivelabs/networks": "^1.14.6", + "@injectivelabs/test-utils": "^1.14.3", + "@injectivelabs/token-metadata": "^1.14.7", + "@injectivelabs/ts-types": "^1.14.6", + "@injectivelabs/utils": "^1.14.6", + "@metamask/eth-sig-util": "^4.0.0", + "axios": "^0.27.2", + "bech32": "^2.0.0", + "bip39": "^3.0.4", + "cosmjs-types": "^0.9.0", + "ethereumjs-util": "^7.1.4", + "ethers": "^5.7.2", + "google-protobuf": "^3.21.0", + "graphql": "^16.3.0", + "http-status-codes": "^2.2.0", + "js-sha3": "^0.8.0", + "jscrypto": "^1.0.3", + "keccak256": "^1.0.6", + "link-module-alias": "^1.2.0", + "secp256k1": "^4.0.3", + "shx": "^0.3.2", + "snakecase-keys": "^5.4.1" + }, + "dependencies": { + "axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "requires": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + } + } + }, + "@injectivelabs/utils": { + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/@injectivelabs/utils/-/utils-1.14.6.tgz", + "integrity": "sha512-5I0h4GiLB5PPTl+g2lpevRP+WScvEbntdkoUQVtAdHewl4kutd5p1Kcnoi1Nvpq+sz5N/e9qtBIRuyxG38akOg==", + "requires": { + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/ts-types": "^1.14.6", + "axios": "^0.21.1", + "bignumber.js": "^9.0.1", + "http-status-codes": "^2.2.0", + "link-module-alias": "^1.2.0", + "shx": "^0.3.2", + "snakecase-keys": "^5.1.2", + "store2": "^2.12.0" + }, + "dependencies": { + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "requires": { + "follow-redirects": "^1.14.0" + } + } + } + }, + "axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "requires": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "cosmjs-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.9.0.tgz", + "integrity": "sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==" + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + }, + "protobufjs": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz", + "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + } + } + } + }, + "@wormhole-foundation/sdk-cosmwasm-core": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm-core/-/sdk-cosmwasm-core-0.7.0-beta.5.tgz", + "integrity": "sha512-i64jPprNhZXvrstk+pekj4Wakj21mbz0TUaPReJXy9hSuoWCbDmnG9Zud+JdAnBy55ckckJ4nWgTxXAygQ/80Q==", + "requires": { + "@cosmjs/cosmwasm-stargate": "^0.32.0", + "@cosmjs/stargate": "^0.32.0", + "@injectivelabs/sdk-ts": "^1.14.4", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "@wormhole-foundation/sdk-cosmwasm": "0.7.0-beta.5" + }, + "dependencies": { + "@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==", + "requires": { + "@cosmjs/crypto": "^0.32.3", + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/utils": "^0.32.3" + } + }, + "@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==", + "requires": { + "@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", + "cosmjs-types": "^0.9.0", + "pako": "^2.0.2" + } + }, + "@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==", + "requires": { + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/utils": "^0.32.3", + "@noble/hashes": "^1", + "bn.js": "^5.2.0", + "elliptic": "^6.5.4", + "libsodium-wrappers-sumo": "^0.7.11" + } + }, + "@cosmjs/encoding": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.32.3.tgz", + "integrity": "sha512-p4KF7hhv8jBQX3MkB3Defuhz/W0l3PwWVYU2vkVuBJ13bJcXyhU9nJjiMkaIv+XP+W2QgRceqNNgFUC5chNR7w==", + "requires": { + "base64-js": "^1.3.0", + "bech32": "^1.1.4", + "readonly-date": "^1.0.0" + }, + "dependencies": { + "bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + } + } + }, + "@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==", + "requires": { + "@cosmjs/stream": "^0.32.3", + "xstream": "^11.14.0" + } + }, + "@cosmjs/math": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.32.3.tgz", + "integrity": "sha512-amumUtZs8hCCnV+lSBaJIiZkGabQm22QGg/IotYrhcmoOEOjt82n7hMNlNXRs7V6WLMidGrGYcswB5zcmp0Meg==", + "requires": { + "bn.js": "^5.2.0" + } + }, + "@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==", + "requires": { + "@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", + "cosmjs-types": "^0.9.0" + } + }, + "@cosmjs/socket": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.32.3.tgz", + "integrity": "sha512-F2WwNmaUPdZ4SsH6Uyreq3wQk7jpaEkb3wfOP951f5Jt6HCW/PxbxhKzHkAAf6+Sqks6SPhkbWoE8XaZpjL2KA==", + "requires": { + "@cosmjs/stream": "^0.32.3", + "isomorphic-ws": "^4.0.1", + "ws": "^7", + "xstream": "^11.14.0" + } + }, + "@cosmjs/stargate": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.32.3.tgz", + "integrity": "sha512-OQWzO9YWKerUinPIxrO1MARbe84XkeXJAW0lyMIjXIEikajuXZ+PwftiKA5yA+8OyditVmHVLtPud6Pjna2s5w==", + "requires": { + "@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-types": "^0.9.0", + "xstream": "^11.14.0" + } + }, + "@cosmjs/stream": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.32.3.tgz", + "integrity": "sha512-J2zVWDojkynYifAUcRmVczzmp6STEpyiAARq0rSsviqjreGIfspfuws/8rmkPa6qQBZvpQOBQCm2HyZZwYplIw==", + "requires": { + "xstream": "^11.14.0" + } + }, + "@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==", + "requires": { + "@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", + "axios": "^1.6.0", + "readonly-date": "^1.0.0", + "xstream": "^11.14.0" + } + }, + "@cosmjs/utils": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.32.3.tgz", + "integrity": "sha512-WCZK4yksj2hBDz4w7xFZQTRZQ/RJhBX26uFHmmQFIcNUUVAihrLO+RerqJgk0dZqC42wstM9pEUQGtPmLcIYvg==" + }, + "@injectivelabs/core-proto-ts": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@injectivelabs/core-proto-ts/-/core-proto-ts-0.0.21.tgz", + "integrity": "sha512-RBxSkRBCty60R/l55/D1jsSW0Aof5dyGFhCFdN3A010KjMv/SzZGGr+6DZPY/hflyFeaJzDv/VTopCymKNRBvQ==", + "requires": { + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + } + }, + "@injectivelabs/indexer-proto-ts": { + "version": "1.11.36", + "resolved": "https://registry.npmjs.org/@injectivelabs/indexer-proto-ts/-/indexer-proto-ts-1.11.36.tgz", + "integrity": "sha512-s7E3Y28JrkylDwRVfF/AvcPy/zPgz52W+XbQ0FOcsqPof78xp8FvnM3ubVZi0Dad39LgDB5eeiMFPmeuLp8Uew==", + "requires": { + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + } + }, + "@injectivelabs/mito-proto-ts": { + "version": "1.0.62", + "resolved": "https://registry.npmjs.org/@injectivelabs/mito-proto-ts/-/mito-proto-ts-1.0.62.tgz", + "integrity": "sha512-WtoO80Y597nZiAuE4H+L208I0i3ByWytR+HqABdCaA26uJ7F1LhXw8YXxh3pP9z0LAeW31T+N7bwtOMlVR4riA==", + "requires": { + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + } + }, + "@injectivelabs/networks": { + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/@injectivelabs/networks/-/networks-1.14.6.tgz", + "integrity": "sha512-O1IkPFJl8ThNL6N+k/9OimrgCYsSWQ8A1FtVMXSQge+0QRZsDKSpRmQRwE601otXXauO31nOUct5AaiWPffXVQ==", + "requires": { + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/ts-types": "^1.14.6", + "@injectivelabs/utils": "^1.14.6", + "link-module-alias": "^1.2.0", + "shx": "^0.3.2" + } + }, + "@injectivelabs/sdk-ts": { + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/@injectivelabs/sdk-ts/-/sdk-ts-1.14.7.tgz", + "integrity": "sha512-Qm8y8jKCMyNfYZGZVI+p0SIGJPtP5M9/DPFyPK+JSR2OOU0J4MX2yS/tQB5ViC/3Bt7yQhw/l3Rop93e7pTZEg==", + "requires": { + "@apollo/client": "^3.5.8", + "@cosmjs/amino": "^0.32.2", + "@cosmjs/proto-signing": "^0.32.2", + "@cosmjs/stargate": "^0.32.2", + "@ensdomains/ens-validation": "^0.1.0", + "@ensdomains/eth-ens-namehash": "^2.0.15", + "@ethersproject/bytes": "^5.7.0", + "@injectivelabs/core-proto-ts": "^0.0.21", + "@injectivelabs/dmm-proto-ts": "1.0.19", + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/grpc-web": "^0.0.1", + "@injectivelabs/grpc-web-node-http-transport": "^0.0.2", + "@injectivelabs/grpc-web-react-native-transport": "^0.0.2", + "@injectivelabs/indexer-proto-ts": "1.11.36", + "@injectivelabs/mito-proto-ts": "1.0.62", + "@injectivelabs/networks": "^1.14.6", + "@injectivelabs/test-utils": "^1.14.3", + "@injectivelabs/token-metadata": "^1.14.7", + "@injectivelabs/ts-types": "^1.14.6", + "@injectivelabs/utils": "^1.14.6", + "@metamask/eth-sig-util": "^4.0.0", + "axios": "^0.27.2", + "bech32": "^2.0.0", + "bip39": "^3.0.4", + "cosmjs-types": "^0.9.0", + "ethereumjs-util": "^7.1.4", + "ethers": "^5.7.2", + "google-protobuf": "^3.21.0", + "graphql": "^16.3.0", + "http-status-codes": "^2.2.0", + "js-sha3": "^0.8.0", + "jscrypto": "^1.0.3", + "keccak256": "^1.0.6", + "link-module-alias": "^1.2.0", + "secp256k1": "^4.0.3", + "shx": "^0.3.2", + "snakecase-keys": "^5.4.1" + }, + "dependencies": { + "axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "requires": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + } + } + }, + "@injectivelabs/utils": { + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/@injectivelabs/utils/-/utils-1.14.6.tgz", + "integrity": "sha512-5I0h4GiLB5PPTl+g2lpevRP+WScvEbntdkoUQVtAdHewl4kutd5p1Kcnoi1Nvpq+sz5N/e9qtBIRuyxG38akOg==", + "requires": { + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/ts-types": "^1.14.6", + "axios": "^0.21.1", + "bignumber.js": "^9.0.1", + "http-status-codes": "^2.2.0", + "link-module-alias": "^1.2.0", + "shx": "^0.3.2", + "snakecase-keys": "^5.1.2", + "store2": "^2.12.0" + }, + "dependencies": { + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "requires": { + "follow-redirects": "^1.14.0" + } + } + } + }, + "axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "requires": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "cosmjs-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.9.0.tgz", + "integrity": "sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==" + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + }, + "protobufjs": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz", + "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + } + } + } + }, + "@wormhole-foundation/sdk-cosmwasm-ibc": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm-ibc/-/sdk-cosmwasm-ibc-0.7.0-beta.5.tgz", + "integrity": "sha512-R6VOGrMGyLqDvuAh9KZrwNjx5aK1aeHt36/zcWC5ZrToILjxE5h7jmUpK4dHpe6dgfh2ryZ1F7B54DdvbpS/hA==", + "requires": { + "@cosmjs/cosmwasm-stargate": "^0.32.0", + "@cosmjs/stargate": "^0.32.0", + "@injectivelabs/sdk-ts": "^1.14.4", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "@wormhole-foundation/sdk-cosmwasm": "0.7.0-beta.5", + "@wormhole-foundation/sdk-cosmwasm-core": "0.7.0-beta.5", + "cosmjs-types": "^0.9.0" + }, + "dependencies": { + "@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==", + "requires": { + "@cosmjs/crypto": "^0.32.3", + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/utils": "^0.32.3" + } + }, + "@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==", + "requires": { + "@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", + "cosmjs-types": "^0.9.0", + "pako": "^2.0.2" + } + }, + "@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==", + "requires": { + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/utils": "^0.32.3", + "@noble/hashes": "^1", + "bn.js": "^5.2.0", + "elliptic": "^6.5.4", + "libsodium-wrappers-sumo": "^0.7.11" + } + }, + "@cosmjs/encoding": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.32.3.tgz", + "integrity": "sha512-p4KF7hhv8jBQX3MkB3Defuhz/W0l3PwWVYU2vkVuBJ13bJcXyhU9nJjiMkaIv+XP+W2QgRceqNNgFUC5chNR7w==", + "requires": { + "base64-js": "^1.3.0", + "bech32": "^1.1.4", + "readonly-date": "^1.0.0" + }, + "dependencies": { + "bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + } + } + }, + "@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==", + "requires": { + "@cosmjs/stream": "^0.32.3", + "xstream": "^11.14.0" + } + }, + "@cosmjs/math": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.32.3.tgz", + "integrity": "sha512-amumUtZs8hCCnV+lSBaJIiZkGabQm22QGg/IotYrhcmoOEOjt82n7hMNlNXRs7V6WLMidGrGYcswB5zcmp0Meg==", + "requires": { + "bn.js": "^5.2.0" + } + }, + "@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==", + "requires": { + "@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", + "cosmjs-types": "^0.9.0" + } + }, + "@cosmjs/socket": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.32.3.tgz", + "integrity": "sha512-F2WwNmaUPdZ4SsH6Uyreq3wQk7jpaEkb3wfOP951f5Jt6HCW/PxbxhKzHkAAf6+Sqks6SPhkbWoE8XaZpjL2KA==", + "requires": { + "@cosmjs/stream": "^0.32.3", + "isomorphic-ws": "^4.0.1", + "ws": "^7", + "xstream": "^11.14.0" + } + }, + "@cosmjs/stargate": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.32.3.tgz", + "integrity": "sha512-OQWzO9YWKerUinPIxrO1MARbe84XkeXJAW0lyMIjXIEikajuXZ+PwftiKA5yA+8OyditVmHVLtPud6Pjna2s5w==", + "requires": { + "@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-types": "^0.9.0", + "xstream": "^11.14.0" + } + }, + "@cosmjs/stream": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.32.3.tgz", + "integrity": "sha512-J2zVWDojkynYifAUcRmVczzmp6STEpyiAARq0rSsviqjreGIfspfuws/8rmkPa6qQBZvpQOBQCm2HyZZwYplIw==", + "requires": { + "xstream": "^11.14.0" + } + }, + "@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==", + "requires": { + "@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", + "axios": "^1.6.0", + "readonly-date": "^1.0.0", + "xstream": "^11.14.0" + } + }, + "@cosmjs/utils": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.32.3.tgz", + "integrity": "sha512-WCZK4yksj2hBDz4w7xFZQTRZQ/RJhBX26uFHmmQFIcNUUVAihrLO+RerqJgk0dZqC42wstM9pEUQGtPmLcIYvg==" + }, + "@injectivelabs/core-proto-ts": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@injectivelabs/core-proto-ts/-/core-proto-ts-0.0.21.tgz", + "integrity": "sha512-RBxSkRBCty60R/l55/D1jsSW0Aof5dyGFhCFdN3A010KjMv/SzZGGr+6DZPY/hflyFeaJzDv/VTopCymKNRBvQ==", + "requires": { + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + } + }, + "@injectivelabs/indexer-proto-ts": { + "version": "1.11.36", + "resolved": "https://registry.npmjs.org/@injectivelabs/indexer-proto-ts/-/indexer-proto-ts-1.11.36.tgz", + "integrity": "sha512-s7E3Y28JrkylDwRVfF/AvcPy/zPgz52W+XbQ0FOcsqPof78xp8FvnM3ubVZi0Dad39LgDB5eeiMFPmeuLp8Uew==", + "requires": { + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + } + }, + "@injectivelabs/mito-proto-ts": { + "version": "1.0.62", + "resolved": "https://registry.npmjs.org/@injectivelabs/mito-proto-ts/-/mito-proto-ts-1.0.62.tgz", + "integrity": "sha512-WtoO80Y597nZiAuE4H+L208I0i3ByWytR+HqABdCaA26uJ7F1LhXw8YXxh3pP9z0LAeW31T+N7bwtOMlVR4riA==", + "requires": { + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + } + }, + "@injectivelabs/networks": { + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/@injectivelabs/networks/-/networks-1.14.6.tgz", + "integrity": "sha512-O1IkPFJl8ThNL6N+k/9OimrgCYsSWQ8A1FtVMXSQge+0QRZsDKSpRmQRwE601otXXauO31nOUct5AaiWPffXVQ==", + "requires": { + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/ts-types": "^1.14.6", + "@injectivelabs/utils": "^1.14.6", + "link-module-alias": "^1.2.0", + "shx": "^0.3.2" + } + }, + "@injectivelabs/sdk-ts": { + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/@injectivelabs/sdk-ts/-/sdk-ts-1.14.7.tgz", + "integrity": "sha512-Qm8y8jKCMyNfYZGZVI+p0SIGJPtP5M9/DPFyPK+JSR2OOU0J4MX2yS/tQB5ViC/3Bt7yQhw/l3Rop93e7pTZEg==", + "requires": { + "@apollo/client": "^3.5.8", + "@cosmjs/amino": "^0.32.2", + "@cosmjs/proto-signing": "^0.32.2", + "@cosmjs/stargate": "^0.32.2", + "@ensdomains/ens-validation": "^0.1.0", + "@ensdomains/eth-ens-namehash": "^2.0.15", + "@ethersproject/bytes": "^5.7.0", + "@injectivelabs/core-proto-ts": "^0.0.21", + "@injectivelabs/dmm-proto-ts": "1.0.19", + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/grpc-web": "^0.0.1", + "@injectivelabs/grpc-web-node-http-transport": "^0.0.2", + "@injectivelabs/grpc-web-react-native-transport": "^0.0.2", + "@injectivelabs/indexer-proto-ts": "1.11.36", + "@injectivelabs/mito-proto-ts": "1.0.62", + "@injectivelabs/networks": "^1.14.6", + "@injectivelabs/test-utils": "^1.14.3", + "@injectivelabs/token-metadata": "^1.14.7", + "@injectivelabs/ts-types": "^1.14.6", + "@injectivelabs/utils": "^1.14.6", + "@metamask/eth-sig-util": "^4.0.0", + "axios": "^0.27.2", + "bech32": "^2.0.0", + "bip39": "^3.0.4", + "cosmjs-types": "^0.9.0", + "ethereumjs-util": "^7.1.4", + "ethers": "^5.7.2", + "google-protobuf": "^3.21.0", + "graphql": "^16.3.0", + "http-status-codes": "^2.2.0", + "js-sha3": "^0.8.0", + "jscrypto": "^1.0.3", + "keccak256": "^1.0.6", + "link-module-alias": "^1.2.0", + "secp256k1": "^4.0.3", + "shx": "^0.3.2", + "snakecase-keys": "^5.4.1" + }, + "dependencies": { + "axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "requires": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + } + } + }, + "@injectivelabs/utils": { + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/@injectivelabs/utils/-/utils-1.14.6.tgz", + "integrity": "sha512-5I0h4GiLB5PPTl+g2lpevRP+WScvEbntdkoUQVtAdHewl4kutd5p1Kcnoi1Nvpq+sz5N/e9qtBIRuyxG38akOg==", + "requires": { + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/ts-types": "^1.14.6", + "axios": "^0.21.1", + "bignumber.js": "^9.0.1", + "http-status-codes": "^2.2.0", + "link-module-alias": "^1.2.0", + "shx": "^0.3.2", + "snakecase-keys": "^5.1.2", + "store2": "^2.12.0" + }, + "dependencies": { + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "requires": { + "follow-redirects": "^1.14.0" + } + } + } + }, + "axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "requires": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "cosmjs-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.9.0.tgz", + "integrity": "sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==" + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + }, + "protobufjs": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz", + "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + } + } + } + }, + "@wormhole-foundation/sdk-cosmwasm-tokenbridge": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-cosmwasm-tokenbridge/-/sdk-cosmwasm-tokenbridge-0.7.0-beta.5.tgz", + "integrity": "sha512-/jUqme2Ajy80JyLQuUYDwhufGWjqqwJTJNvBptjDo0dBdmgiLBKIxINXS84rkykyCmkeSCzwRPreH5lLB7kvwg==", + "requires": { + "@cosmjs/cosmwasm-stargate": "^0.32.0", + "@injectivelabs/sdk-ts": "^1.14.4", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "@wormhole-foundation/sdk-cosmwasm": "0.7.0-beta.5" + }, + "dependencies": { + "@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==", + "requires": { + "@cosmjs/crypto": "^0.32.3", + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/utils": "^0.32.3" + } + }, + "@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==", + "requires": { + "@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", + "cosmjs-types": "^0.9.0", + "pako": "^2.0.2" + } + }, + "@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==", + "requires": { + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/utils": "^0.32.3", + "@noble/hashes": "^1", + "bn.js": "^5.2.0", + "elliptic": "^6.5.4", + "libsodium-wrappers-sumo": "^0.7.11" + } + }, + "@cosmjs/encoding": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.32.3.tgz", + "integrity": "sha512-p4KF7hhv8jBQX3MkB3Defuhz/W0l3PwWVYU2vkVuBJ13bJcXyhU9nJjiMkaIv+XP+W2QgRceqNNgFUC5chNR7w==", + "requires": { + "base64-js": "^1.3.0", + "bech32": "^1.1.4", + "readonly-date": "^1.0.0" + }, + "dependencies": { + "bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + } + } + }, + "@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==", + "requires": { + "@cosmjs/stream": "^0.32.3", + "xstream": "^11.14.0" + } + }, + "@cosmjs/math": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.32.3.tgz", + "integrity": "sha512-amumUtZs8hCCnV+lSBaJIiZkGabQm22QGg/IotYrhcmoOEOjt82n7hMNlNXRs7V6WLMidGrGYcswB5zcmp0Meg==", + "requires": { + "bn.js": "^5.2.0" + } + }, + "@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==", + "requires": { + "@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", + "cosmjs-types": "^0.9.0" + } + }, + "@cosmjs/socket": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.32.3.tgz", + "integrity": "sha512-F2WwNmaUPdZ4SsH6Uyreq3wQk7jpaEkb3wfOP951f5Jt6HCW/PxbxhKzHkAAf6+Sqks6SPhkbWoE8XaZpjL2KA==", + "requires": { + "@cosmjs/stream": "^0.32.3", + "isomorphic-ws": "^4.0.1", + "ws": "^7", + "xstream": "^11.14.0" + } + }, + "@cosmjs/stargate": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.32.3.tgz", + "integrity": "sha512-OQWzO9YWKerUinPIxrO1MARbe84XkeXJAW0lyMIjXIEikajuXZ+PwftiKA5yA+8OyditVmHVLtPud6Pjna2s5w==", + "requires": { + "@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-types": "^0.9.0", + "xstream": "^11.14.0" + } + }, + "@cosmjs/stream": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.32.3.tgz", + "integrity": "sha512-J2zVWDojkynYifAUcRmVczzmp6STEpyiAARq0rSsviqjreGIfspfuws/8rmkPa6qQBZvpQOBQCm2HyZZwYplIw==", + "requires": { + "xstream": "^11.14.0" + } + }, + "@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==", + "requires": { + "@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", + "axios": "^1.6.0", + "readonly-date": "^1.0.0", + "xstream": "^11.14.0" + } + }, + "@cosmjs/utils": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.32.3.tgz", + "integrity": "sha512-WCZK4yksj2hBDz4w7xFZQTRZQ/RJhBX26uFHmmQFIcNUUVAihrLO+RerqJgk0dZqC42wstM9pEUQGtPmLcIYvg==" + }, + "@injectivelabs/core-proto-ts": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@injectivelabs/core-proto-ts/-/core-proto-ts-0.0.21.tgz", + "integrity": "sha512-RBxSkRBCty60R/l55/D1jsSW0Aof5dyGFhCFdN3A010KjMv/SzZGGr+6DZPY/hflyFeaJzDv/VTopCymKNRBvQ==", + "requires": { + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + } + }, + "@injectivelabs/indexer-proto-ts": { + "version": "1.11.36", + "resolved": "https://registry.npmjs.org/@injectivelabs/indexer-proto-ts/-/indexer-proto-ts-1.11.36.tgz", + "integrity": "sha512-s7E3Y28JrkylDwRVfF/AvcPy/zPgz52W+XbQ0FOcsqPof78xp8FvnM3ubVZi0Dad39LgDB5eeiMFPmeuLp8Uew==", + "requires": { + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + } + }, + "@injectivelabs/mito-proto-ts": { + "version": "1.0.62", + "resolved": "https://registry.npmjs.org/@injectivelabs/mito-proto-ts/-/mito-proto-ts-1.0.62.tgz", + "integrity": "sha512-WtoO80Y597nZiAuE4H+L208I0i3ByWytR+HqABdCaA26uJ7F1LhXw8YXxh3pP9z0LAeW31T+N7bwtOMlVR4riA==", + "requires": { + "@injectivelabs/grpc-web": "^0.0.1", + "google-protobuf": "^3.14.0", + "protobufjs": "^7.0.0", + "rxjs": "^7.4.0" + } + }, + "@injectivelabs/networks": { + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/@injectivelabs/networks/-/networks-1.14.6.tgz", + "integrity": "sha512-O1IkPFJl8ThNL6N+k/9OimrgCYsSWQ8A1FtVMXSQge+0QRZsDKSpRmQRwE601otXXauO31nOUct5AaiWPffXVQ==", + "requires": { + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/ts-types": "^1.14.6", + "@injectivelabs/utils": "^1.14.6", + "link-module-alias": "^1.2.0", + "shx": "^0.3.2" + } + }, + "@injectivelabs/sdk-ts": { + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/@injectivelabs/sdk-ts/-/sdk-ts-1.14.7.tgz", + "integrity": "sha512-Qm8y8jKCMyNfYZGZVI+p0SIGJPtP5M9/DPFyPK+JSR2OOU0J4MX2yS/tQB5ViC/3Bt7yQhw/l3Rop93e7pTZEg==", + "requires": { + "@apollo/client": "^3.5.8", + "@cosmjs/amino": "^0.32.2", + "@cosmjs/proto-signing": "^0.32.2", + "@cosmjs/stargate": "^0.32.2", + "@ensdomains/ens-validation": "^0.1.0", + "@ensdomains/eth-ens-namehash": "^2.0.15", + "@ethersproject/bytes": "^5.7.0", + "@injectivelabs/core-proto-ts": "^0.0.21", + "@injectivelabs/dmm-proto-ts": "1.0.19", + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/grpc-web": "^0.0.1", + "@injectivelabs/grpc-web-node-http-transport": "^0.0.2", + "@injectivelabs/grpc-web-react-native-transport": "^0.0.2", + "@injectivelabs/indexer-proto-ts": "1.11.36", + "@injectivelabs/mito-proto-ts": "1.0.62", + "@injectivelabs/networks": "^1.14.6", + "@injectivelabs/test-utils": "^1.14.3", + "@injectivelabs/token-metadata": "^1.14.7", + "@injectivelabs/ts-types": "^1.14.6", + "@injectivelabs/utils": "^1.14.6", + "@metamask/eth-sig-util": "^4.0.0", + "axios": "^0.27.2", + "bech32": "^2.0.0", + "bip39": "^3.0.4", + "cosmjs-types": "^0.9.0", + "ethereumjs-util": "^7.1.4", + "ethers": "^5.7.2", + "google-protobuf": "^3.21.0", + "graphql": "^16.3.0", + "http-status-codes": "^2.2.0", + "js-sha3": "^0.8.0", + "jscrypto": "^1.0.3", + "keccak256": "^1.0.6", + "link-module-alias": "^1.2.0", + "secp256k1": "^4.0.3", + "shx": "^0.3.2", + "snakecase-keys": "^5.4.1" + }, + "dependencies": { + "axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "requires": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + } + } + }, + "@injectivelabs/utils": { + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/@injectivelabs/utils/-/utils-1.14.6.tgz", + "integrity": "sha512-5I0h4GiLB5PPTl+g2lpevRP+WScvEbntdkoUQVtAdHewl4kutd5p1Kcnoi1Nvpq+sz5N/e9qtBIRuyxG38akOg==", + "requires": { + "@injectivelabs/exceptions": "^1.14.6", + "@injectivelabs/ts-types": "^1.14.6", + "axios": "^0.21.1", + "bignumber.js": "^9.0.1", + "http-status-codes": "^2.2.0", + "link-module-alias": "^1.2.0", + "shx": "^0.3.2", + "snakecase-keys": "^5.1.2", + "store2": "^2.12.0" + }, + "dependencies": { + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "requires": { + "follow-redirects": "^1.14.0" + } + } + } + }, + "axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "requires": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "cosmjs-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.9.0.tgz", + "integrity": "sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==" + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + }, + "protobufjs": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz", + "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + } + } + } + }, + "@wormhole-foundation/sdk-definitions": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-definitions/-/sdk-definitions-0.7.0-beta.5.tgz", + "integrity": "sha512-ctkcGU4M/U5O0M/rn27KwJWs2hJdbcst/T/ybQQbeBdd4HApKJvHTDGi7sZ9ARgJAAhgmyYwvUCoHaiHFfqMXQ==", + "requires": { + "@noble/curves": "^1.4.0", + "@noble/hashes": "^1.3.1", + "@wormhole-foundation/sdk-base": "0.7.0-beta.5" + }, + "dependencies": { + "@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==" + } + } + }, + "@wormhole-foundation/sdk-evm": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm/-/sdk-evm-0.7.0-beta.5.tgz", + "integrity": "sha512-tJGuoCSRCMUvwrpktKw5cXRZO/iuRAP8Ip5HNBN6ZcLtbJjaw+7b/wP6Mj+o3rNTxGdSDN594K1mlNvAqgjGNA==", + "requires": { + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "ethers": "^6.5.1" + }, + "dependencies": { + "@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "requires": { + "@noble/hashes": "1.3.2" + } + }, + "@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==" + }, + "@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" + }, + "aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==" + }, + "ethers": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.12.1.tgz", + "integrity": "sha512-j6wcVoZf06nqEcBbDWkKg8Fp895SS96dSnTCjiXT+8vt2o02raTn4Lo9ERUuIVU5bAjoPYeA+7ytQFexFmLuVw==", + "requires": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" + } + }, + "ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "requires": {} + } + } + }, + "@wormhole-foundation/sdk-evm-cctp": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-cctp/-/sdk-evm-cctp-0.7.0-beta.5.tgz", + "integrity": "sha512-42Qc1I6ztaYxQfUCUtQ6QIiGkaM3gqyy+rAhXH2+IUSUeDl11RM8MKjyu6NMwwzCGn8bkXMRKWl8UMXUJVX6UQ==", + "requires": { + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "@wormhole-foundation/sdk-evm": "0.7.0-beta.5", + "ethers": "^6.5.1" + }, + "dependencies": { + "@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "requires": { + "@noble/hashes": "1.3.2" + } + }, + "@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==" + }, + "@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" + }, + "aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==" + }, + "ethers": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.12.1.tgz", + "integrity": "sha512-j6wcVoZf06nqEcBbDWkKg8Fp895SS96dSnTCjiXT+8vt2o02raTn4Lo9ERUuIVU5bAjoPYeA+7ytQFexFmLuVw==", + "requires": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" + } + }, + "ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "requires": {} + } + } + }, + "@wormhole-foundation/sdk-evm-core": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-core/-/sdk-evm-core-0.7.0-beta.5.tgz", + "integrity": "sha512-3YYRf+5pFMJ4lzfdvkkCzmDrQgP4HGS1r1RqJvfA96Wb9AitqDmx+ZmrzVbrMlycDmbX8S4S1Yblg63M2kW1Fw==", + "requires": { + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "@wormhole-foundation/sdk-evm": "0.7.0-beta.5", + "ethers": "^6.5.1" + }, + "dependencies": { + "@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "requires": { + "@noble/hashes": "1.3.2" + } + }, + "@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==" + }, + "@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" + }, + "aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==" + }, + "ethers": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.12.1.tgz", + "integrity": "sha512-j6wcVoZf06nqEcBbDWkKg8Fp895SS96dSnTCjiXT+8vt2o02raTn4Lo9ERUuIVU5bAjoPYeA+7ytQFexFmLuVw==", + "requires": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" + } + }, + "ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "requires": {} + } + } + }, + "@wormhole-foundation/sdk-evm-portico": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-portico/-/sdk-evm-portico-0.7.0-beta.5.tgz", + "integrity": "sha512-gvFHRxsg8i7vT3bPR11DVy0PNIAGLDEWCpt74KP9HFFWf6xzsEA8+qN302U6ZcXXBxojY1GtaQUcdNN++7i36Q==", + "requires": { + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "@wormhole-foundation/sdk-evm": "0.7.0-beta.5", + "@wormhole-foundation/sdk-evm-core": "0.7.0-beta.5", + "@wormhole-foundation/sdk-evm-tokenbridge": "0.7.0-beta.5", + "ethers": "^6.5.1" + }, + "dependencies": { + "@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "requires": { + "@noble/hashes": "1.3.2" + } + }, + "@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==" + }, + "@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" + }, + "aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==" + }, + "ethers": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.12.1.tgz", + "integrity": "sha512-j6wcVoZf06nqEcBbDWkKg8Fp895SS96dSnTCjiXT+8vt2o02raTn4Lo9ERUuIVU5bAjoPYeA+7ytQFexFmLuVw==", + "requires": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" + } + }, + "ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "requires": {} + } + } + }, + "@wormhole-foundation/sdk-evm-tokenbridge": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-evm-tokenbridge/-/sdk-evm-tokenbridge-0.7.0-beta.5.tgz", + "integrity": "sha512-Aay8UdcjCwmkibsJLhZyy037dQTn6lli8eDnpAd9gRj9rhfCrEmqQvnCDOPMk/tE0thOeCEjxBSPxtd2IQ9EoA==", + "requires": { + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "@wormhole-foundation/sdk-evm": "0.7.0-beta.5", + "@wormhole-foundation/sdk-evm-core": "0.7.0-beta.5", + "ethers": "^6.5.1" + }, + "dependencies": { + "@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "requires": { + "@noble/hashes": "1.3.2" + } + }, + "@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==" + }, + "@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" + }, + "aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==" + }, + "ethers": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.12.1.tgz", + "integrity": "sha512-j6wcVoZf06nqEcBbDWkKg8Fp895SS96dSnTCjiXT+8vt2o02raTn4Lo9ERUuIVU5bAjoPYeA+7ytQFexFmLuVw==", + "requires": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" + } + }, + "ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "requires": {} + } + } + }, + "@wormhole-foundation/sdk-solana": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana/-/sdk-solana-0.7.0-beta.5.tgz", + "integrity": "sha512-s2JReAgr7zVlmoG7RlAwCriHSh4gfRxNhm7c0K0oIwu2KW0RD06K1NAxu3twoBgeRGfiY0IKYR/Ovu1LA4uRgg==", + "requires": { + "@coral-xyz/anchor": "0.29.0", + "@coral-xyz/borsh": "0.29.0", + "@solana/spl-token": "0.3.9", + "@solana/web3.js": "1.91.7", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5" + }, + "dependencies": { + "@coral-xyz/borsh": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.29.0.tgz", + "integrity": "sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ==", + "requires": { + "bn.js": "^5.1.2", + "buffer-layout": "^1.2.0" + } + } + } + }, + "@wormhole-foundation/sdk-solana-cctp": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana-cctp/-/sdk-solana-cctp-0.7.0-beta.5.tgz", + "integrity": "sha512-XJMY6XBJf1LHhw5owEZEXigXV7jmJpU3lw3xCiJL+LyHexfnnvfw2gdEEY5Un3xOIIzCaLz1+oEkQBk8yVn8zg==", + "requires": { + "@coral-xyz/anchor": "0.29.0", + "@solana/spl-token": "0.3.9", + "@solana/web3.js": "1.91.7", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "@wormhole-foundation/sdk-solana": "0.7.0-beta.5" + } + }, + "@wormhole-foundation/sdk-solana-core": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana-core/-/sdk-solana-core-0.7.0-beta.5.tgz", + "integrity": "sha512-9GmktW8suxGX1O0vTBAoAnRTNdIMNgaaNOqEhDR8Ugots0+A3b+QbtWj7Tpg3uVjLE/pO0fFII0ge+ntdHglXA==", + "requires": { + "@coral-xyz/anchor": "0.29.0", + "@coral-xyz/borsh": "0.29.0", + "@solana/web3.js": "1.91.7", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "@wormhole-foundation/sdk-solana": "0.7.0-beta.5" + }, + "dependencies": { + "@coral-xyz/borsh": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/@coral-xyz/borsh/-/borsh-0.29.0.tgz", + "integrity": "sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ==", + "requires": { + "bn.js": "^5.1.2", + "buffer-layout": "^1.2.0" + } + } + } + }, + "@wormhole-foundation/sdk-solana-tokenbridge": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-solana-tokenbridge/-/sdk-solana-tokenbridge-0.7.0-beta.5.tgz", + "integrity": "sha512-rXQZuLZXvxpDvCcBoXeMaGCNq6kzfofY0B3IjR03uqHPz3fIsSfA5RCWGF0ZadCn4Fi2+hm3hShxC0WVImNMtw==", + "requires": { + "@coral-xyz/anchor": "0.29.0", + "@solana/spl-token": "0.3.9", + "@solana/web3.js": "1.91.7", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "@wormhole-foundation/sdk-solana": "0.7.0-beta.5", + "@wormhole-foundation/sdk-solana-core": "0.7.0-beta.5" + } + }, + "@wormhole-foundation/sdk-sui": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-sui/-/sdk-sui-0.7.0-beta.5.tgz", + "integrity": "sha512-fbZPJZOU0gDYkxyx3eBKuNoK7zN3hkodA6gS6imH+/U7zCjXzTzMiH/wTlTgN38uYhmxyUF5RIlFBr4jj/opQw==", + "requires": { + "@mysten/sui.js": "^0.50.1", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5" + }, + "dependencies": { + "@mysten/bcs": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/@mysten/bcs/-/bcs-0.11.1.tgz", + "integrity": "sha512-xP85isNSYUCHd3O/g+TmZYmg4wK6cU8q/n/MebkIGP4CYVJZz2wU/G24xIZ3wI+0iTop4dfgA5kYrg/DQKCUzA==", + "requires": { + "bs58": "^5.0.0" + } + }, + "@mysten/sui.js": { + "version": "0.50.1", + "resolved": "https://registry.npmjs.org/@mysten/sui.js/-/sui.js-0.50.1.tgz", + "integrity": "sha512-AY0wb4n6PMTRsDGygzrrTHUK/m5KwKZ4aQcN9cayiwsq2iIhfjGo7uuqMA7Y5UiqvLCoF+z7Ig14Q5qejQ/S/w==", + "requires": { + "@graphql-typed-document-node/core": "^3.2.0", + "@mysten/bcs": "0.11.1", + "@noble/curves": "^1.1.0", + "@noble/hashes": "^1.3.1", + "@scure/bip32": "^1.3.1", + "@scure/bip39": "^1.2.1", + "@suchipi/femver": "^1.0.0", + "bech32": "^2.0.0", + "gql.tada": "^1.2.0", + "graphql": "^16.8.1", + "superstruct": "^1.0.3", + "tweetnacl": "^1.0.3" + } + }, + "@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==" + }, + "@scure/bip32": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", + "requires": { + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + } + }, + "@scure/bip39": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", + "requires": { + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + } + }, + "base-x": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" + }, + "bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "requires": { + "base-x": "^4.0.0" + } + }, + "superstruct": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.4.tgz", + "integrity": "sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==" + } + } + }, + "@wormhole-foundation/sdk-sui-core": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-sui-core/-/sdk-sui-core-0.7.0-beta.5.tgz", + "integrity": "sha512-0De9UjMPQ4lp0P+3Kpr/4iHFn/HVt5Nj00zdG0dhz2Msjxlkz3SqA26rZOECuvF7fmyoQkQKCPowMBfNnmyJJQ==", + "requires": { + "@mysten/sui.js": "^0.50.1", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "@wormhole-foundation/sdk-sui": "0.7.0-beta.5" + }, + "dependencies": { + "@mysten/bcs": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/@mysten/bcs/-/bcs-0.11.1.tgz", + "integrity": "sha512-xP85isNSYUCHd3O/g+TmZYmg4wK6cU8q/n/MebkIGP4CYVJZz2wU/G24xIZ3wI+0iTop4dfgA5kYrg/DQKCUzA==", + "requires": { + "bs58": "^5.0.0" + } + }, + "@mysten/sui.js": { + "version": "0.50.1", + "resolved": "https://registry.npmjs.org/@mysten/sui.js/-/sui.js-0.50.1.tgz", + "integrity": "sha512-AY0wb4n6PMTRsDGygzrrTHUK/m5KwKZ4aQcN9cayiwsq2iIhfjGo7uuqMA7Y5UiqvLCoF+z7Ig14Q5qejQ/S/w==", + "requires": { + "@graphql-typed-document-node/core": "^3.2.0", + "@mysten/bcs": "0.11.1", + "@noble/curves": "^1.1.0", + "@noble/hashes": "^1.3.1", + "@scure/bip32": "^1.3.1", + "@scure/bip39": "^1.2.1", + "@suchipi/femver": "^1.0.0", + "bech32": "^2.0.0", + "gql.tada": "^1.2.0", + "graphql": "^16.8.1", + "superstruct": "^1.0.3", + "tweetnacl": "^1.0.3" + } + }, + "@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==" + }, + "@scure/bip32": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", + "requires": { + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + } + }, + "@scure/bip39": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", + "requires": { + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + } + }, + "base-x": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" + }, + "bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "requires": { + "base-x": "^4.0.0" + } + }, + "superstruct": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.4.tgz", + "integrity": "sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==" + } + } + }, + "@wormhole-foundation/sdk-sui-tokenbridge": { + "version": "0.7.0-beta.5", + "resolved": "https://registry.npmjs.org/@wormhole-foundation/sdk-sui-tokenbridge/-/sdk-sui-tokenbridge-0.7.0-beta.5.tgz", + "integrity": "sha512-YUYrvZu6yFAULA8V/RygbQflHlDU4aB2Kx5aVqWV1qWFH4Ixfq2RUrZPCVDeDGTnnlO1otauSHfCCyAOKhTy4g==", + "requires": { + "@mysten/sui.js": "^0.50.1", + "@wormhole-foundation/sdk-connect": "0.7.0-beta.5", + "@wormhole-foundation/sdk-sui": "0.7.0-beta.5", + "@wormhole-foundation/sdk-sui-core": "0.7.0-beta.5" + }, + "dependencies": { + "@mysten/bcs": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/@mysten/bcs/-/bcs-0.11.1.tgz", + "integrity": "sha512-xP85isNSYUCHd3O/g+TmZYmg4wK6cU8q/n/MebkIGP4CYVJZz2wU/G24xIZ3wI+0iTop4dfgA5kYrg/DQKCUzA==", + "requires": { + "bs58": "^5.0.0" + } + }, + "@mysten/sui.js": { + "version": "0.50.1", + "resolved": "https://registry.npmjs.org/@mysten/sui.js/-/sui.js-0.50.1.tgz", + "integrity": "sha512-AY0wb4n6PMTRsDGygzrrTHUK/m5KwKZ4aQcN9cayiwsq2iIhfjGo7uuqMA7Y5UiqvLCoF+z7Ig14Q5qejQ/S/w==", + "requires": { + "@graphql-typed-document-node/core": "^3.2.0", + "@mysten/bcs": "0.11.1", + "@noble/curves": "^1.1.0", + "@noble/hashes": "^1.3.1", + "@scure/bip32": "^1.3.1", + "@scure/bip39": "^1.2.1", + "@suchipi/femver": "^1.0.0", + "bech32": "^2.0.0", + "gql.tada": "^1.2.0", + "graphql": "^16.8.1", + "superstruct": "^1.0.3", + "tweetnacl": "^1.0.3" + } + }, + "@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==" + }, + "@scure/bip32": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", + "requires": { + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + } + }, + "@scure/bip39": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", + "requires": { + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + } + }, + "base-x": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" + }, + "bs58": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "requires": { + "base-x": "^4.0.0" + } + }, + "superstruct": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.4.tgz", + "integrity": "sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==" + } + } + }, "@wry/context": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.7.0.tgz", @@ -15287,11 +20889,6 @@ "requires": { "follow-redirects": "^1.14.8" } - }, - "bech32": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", - "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" } } }, @@ -15304,11 +20901,25 @@ "xtend": "~4.0.0" } }, + "acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "peer": true + }, "aes-js": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" }, + "agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "requires": { + "humanize-ms": "^1.2.1" + } + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -15327,13 +20938,12 @@ "integrity": "sha512-F1tGh056XczEaEAqu7s+hlZUDWwOBT70Eq0lfMpBP2YguSQVyxRbprLq5rELXKQOyOaixTWYhMeMQMzP0U5FoQ==" }, "algosdk": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/algosdk/-/algosdk-2.4.0.tgz", - "integrity": "sha512-sENe6IyUqvhQprfS/7gJAkPC5sX2LI5uc+gXaKNgzKp72UEyXYSoN3h4MZkOlCrOcTSWTJW7605tYgg8nFkflw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/algosdk/-/algosdk-2.7.0.tgz", + "integrity": "sha512-sBE9lpV7bup3rZ+q2j3JQaFAE9JwZvjWKX00vPlG8e9txctXbgLL56jZhSWZndqhDI9oI+0P4NldkuQIWdrUyg==", "requires": { "algo-msgpack-with-bigint": "^2.1.1", "buffer": "^6.0.3", - "cross-fetch": "^3.1.5", "hi-base32": "^0.5.1", "js-sha256": "^0.9.0", "js-sha3": "^0.8.0", @@ -15341,25 +20951,6 @@ "json-bigint": "^1.0.0", "tweetnacl": "^1.0.3", "vlq": "^2.0.4" - }, - "dependencies": { - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "cross-fetch": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", - "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", - "requires": { - "node-fetch": "^2.6.12" - } - } } }, "ansi-escapes": { @@ -15444,6 +21035,15 @@ "sprintf-js": "~1.0.2" } }, + "aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "peer": true, + "requires": { + "dequal": "^2.0.3" + } + }, "asn1": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", @@ -15517,6 +21117,15 @@ "follow-redirects": "^1.14.4" } }, + "axobject-query": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", + "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", + "peer": true, + "requires": { + "dequal": "^2.0.3" + } + }, "babel-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", @@ -15705,9 +21314,9 @@ } }, "bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", + "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" }, "big-integer": { "version": "1.6.36", @@ -15909,7 +21518,9 @@ "dev": true }, "buffer": { - "version": "6.0.1", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "requires": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -15935,6 +21546,35 @@ "node-gyp-build": "^4.2.0" } }, + "cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" + }, + "cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + } + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -16048,12 +21688,44 @@ "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", "dev": true }, + "clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "requires": { + "mimic-response": "^1.0.0" + } + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true }, + "code-red": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", + "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", + "peer": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.15", + "@types/estree": "^1.0.1", + "acorn": "^8.10.0", + "estree-walker": "^3.0.3", + "periscopic": "^3.1.0" + }, + "dependencies": { + "estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "peer": true, + "requires": { + "@types/estree": "^1.0.0" + } + } + } + }, "collect-v8-coverage": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", @@ -16084,6 +21756,11 @@ "commander": { "version": "2.20.3" }, + "computeds": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", + "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==" + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -16278,6 +21955,16 @@ "resolved": "https://registry.npmjs.org/crypto-hash/-/crypto-hash-1.3.0.tgz", "integrity": "sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==" }, + "css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "peer": true, + "requires": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + } + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -16287,6 +21974,11 @@ "assert-plus": "^1.0.0" } }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==" + }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -16301,6 +21993,21 @@ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "requires": { + "mimic-response": "^3.1.0" + }, + "dependencies": { + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + } + } + }, "dedent": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", @@ -16308,12 +22015,22 @@ "dev": true, "requires": {} }, + "dedent-js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dedent-js/-/dedent-js-1.0.1.tgz", + "integrity": "sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==" + }, "deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true }, + "defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" + }, "deferred-leveldown": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz", @@ -16345,6 +22062,12 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" }, + "dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "peer": true + }, "detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -16500,6 +22223,19 @@ } } }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" + }, "errno": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", @@ -16582,6 +22318,11 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, "eth-block-tracker": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz", @@ -17282,9 +23023,9 @@ } }, "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" }, "forever-agent": { "version": "0.6.1", @@ -17419,6 +23160,34 @@ "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.2.tgz", "integrity": "sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==" }, + "got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "requires": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + } + }, + "gql.tada": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/gql.tada/-/gql.tada-1.7.5.tgz", + "integrity": "sha512-GepPTee+FWSVVZQ7GiJHzsGNo7gOb59kcn4mUPYLlkbpeJfOUwpuoB05ZNaXG0W4qZVPd1I7R2UgMHBjY1lGlQ==", + "requires": { + "@0no-co/graphql.web": "^1.0.5", + "@gql.tada/cli-utils": "1.3.9", + "@gql.tada/internal": "1.0.0" + } + }, "graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -17426,9 +23195,9 @@ "dev": true }, "graphql": { - "version": "16.6.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz", - "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==" + "version": "16.8.1", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz", + "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==" }, "graphql-tag": { "version": "2.12.6", @@ -17497,6 +23266,11 @@ "minimalistic-assert": "^1.0.1" } }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, "hi-base32": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/hi-base32/-/hi-base32-0.5.1.tgz", @@ -17524,6 +23298,11 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, + "http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, "http-errors": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", @@ -17559,12 +23338,29 @@ "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.2.0.tgz", "integrity": "sha512-feERVo9iWxvnejp3SEfm/+oNG517npqL2/PIA8ORjyOZjGC7TwCRQsZylciLS64i6pJ0wRYz3rkXLRwbtFa8Ng==" }, + "http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + } + }, "human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "requires": { + "ms": "^2.0.0" + } + }, "ieee754": { "version": "1.2.1" }, @@ -17655,6 +23451,15 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-reference": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", + "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", + "peer": true, + "requires": { + "@types/estree": "*" + } + }, "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -17783,11 +23588,11 @@ } }, "jayson": { - "version": "3.6.4", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.1.0.tgz", + "integrity": "sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==", "requires": { "@types/connect": "^3.4.33", - "@types/express-serve-static-core": "^4.17.9", - "@types/lodash": "^4.14.159", "@types/node": "^12.12.54", "@types/ws": "^7.4.4", "commander": "^2.20.3", @@ -17797,13 +23602,19 @@ "isomorphic-ws": "^4.0.1", "json-stringify-safe": "^5.0.1", "JSONStream": "^1.3.5", - "lodash": "^4.17.20", - "uuid": "^3.4.0", + "uuid": "^8.3.2", "ws": "^7.4.5" }, "dependencies": { "@types/node": { - "version": "12.20.16" + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" } } }, @@ -18697,6 +24508,11 @@ "bignumber.js": "^9.0.0" } }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, "json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -18810,17 +24626,14 @@ "bn.js": "^5.2.0", "buffer": "^6.0.3", "keccak": "^3.0.2" - }, - "dependencies": { - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - } + } + }, + "keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "requires": { + "json-buffer": "3.0.1" } }, "kleur": { @@ -18955,6 +24768,11 @@ "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.10.tgz", "integrity": "sha512-eY+z7hDrDKxkAK+QKZVNv92A5KYkxfvIshtBJkmg5TSiCnYqZP3i9OO9whE79Pwgm4jGaoHgkM4ao/b9Cyu4zQ==" }, + "libsodium-sumo": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/libsodium-sumo/-/libsodium-sumo-0.7.13.tgz", + "integrity": "sha512-zTGdLu4b9zSNLfovImpBCbdAA4xkpkZbMnSQjP8HShyOutnGjRHmSOKlsylh1okao6QhLiz7nG98EGn+04cZjQ==" + }, "libsodium-wrappers": { "version": "0.7.10", "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.10.tgz", @@ -18963,6 +24781,14 @@ "libsodium": "^0.7.0" } }, + "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==", + "requires": { + "libsodium-sumo": "^0.7.13" + } + }, "lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -18977,6 +24803,12 @@ "chalk": "^2.4.1" } }, + "locate-character": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", + "peer": true + }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -19027,6 +24859,11 @@ "tslib": "^2.0.3" } }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -19042,6 +24879,15 @@ "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", "dev": true }, + "magic-string": { + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "peer": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, "make-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", @@ -19107,6 +24953,12 @@ "safe-buffer": "^5.1.2" } }, + "mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "peer": true + }, "memdown": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", @@ -19254,6 +25106,11 @@ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, "min-document": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", @@ -19290,8 +25147,12 @@ "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 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "muggle-string": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==" }, "mustache": { "version": "4.2.0", @@ -19441,6 +25302,11 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + }, "npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -19510,6 +25376,11 @@ } } }, + "p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" + }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -19568,6 +25439,20 @@ "lines-and-columns": "^1.1.6" } }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -19608,6 +25493,28 @@ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", "dev": true }, + "periscopic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", + "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", + "peer": true, + "requires": { + "@types/estree": "^1.0.0", + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + }, + "dependencies": { + "estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "peer": true, + "requires": { + "@types/estree": "^1.0.0" + } + } + } + }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -19738,6 +25645,11 @@ "long": "^4.0.0" } }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -19750,6 +25662,15 @@ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -19768,6 +25689,11 @@ "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -19851,6 +25777,11 @@ "path-parse": "^1.0.6" } }, + "resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, "resolve-cwd": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", @@ -19883,6 +25814,14 @@ "resolved": "https://registry.npmjs.org/response-iterator/-/response-iterator-0.2.6.tgz", "integrity": "sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw==" }, + "responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "requires": { + "lowercase-keys": "^2.0.0" + } + }, "ripemd160": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", @@ -20026,17 +25965,6 @@ "integrity": "sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==", "requires": { "buffer": "6.0.3" - }, - "dependencies": { - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - } } }, "shebang-command": { @@ -20116,6 +26044,11 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, + "source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==" + }, "source-map-support": { "version": "0.5.13", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", @@ -20257,6 +26190,48 @@ "has-flag": "^3.0.0" } }, + "svelte": { + "version": "4.2.17", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.17.tgz", + "integrity": "sha512-N7m1YnoXtRf5wya5Gyx3TWuTddI4nAyayyIWFojiWV5IayDYNV5i2mRp/7qNGol4DtxEYxljmrbgp1HM6hUbmQ==", + "peer": true, + "requires": { + "@ampproject/remapping": "^2.2.1", + "@jridgewell/sourcemap-codec": "^1.4.15", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/estree": "^1.0.1", + "acorn": "^8.9.0", + "aria-query": "^5.3.0", + "axobject-query": "^4.0.0", + "code-red": "^1.0.3", + "css-tree": "^2.3.1", + "estree-walker": "^3.0.3", + "is-reference": "^3.0.1", + "locate-character": "^3.0.0", + "magic-string": "^0.30.4", + "periscopic": "^3.1.0" + }, + "dependencies": { + "estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "peer": true, + "requires": { + "@types/estree": "^1.0.0" + } + } + } + }, + "svelte2tsx": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/svelte2tsx/-/svelte2tsx-0.7.9.tgz", + "integrity": "sha512-Rm+0LAwg9wT4H2IsR8EaM9EWErTzi9LmuZKxkH5b1ua94XjQmwHstBP4VabLgA9AE6XmwBg+xK7Cjzwfm6ustQ==", + "requires": { + "dedent-js": "^1.0.1", + "pascal-case": "^3.1.1" + } + }, "symbol-observable": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", @@ -20698,16 +26673,20 @@ "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==" }, "typescript": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", - "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", - "dev": true + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==" }, "u3": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/u3/-/u3-0.1.1.tgz", "integrity": "sha512-+J5D5ir763y+Am/QY6hXNRlwljIeRMZMGs0cT6qqZVVzzT3X3nFPXVyPOFRMOR4kupB0T8JnCdpWdp6Q/iXn3w==" }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "untildify": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", @@ -20750,7 +26729,8 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "uuid": { - "version": "3.4.0" + "version": "3.4.0", + "dev": true }, "v8-to-istanbul": { "version": "9.2.0", @@ -20779,6 +26759,15 @@ "resolved": "https://registry.npmjs.org/vlq/-/vlq-2.0.4.tgz", "integrity": "sha512-aodjPa2wPQFkra1G8CzJBTHXhgk3EVSwxSWXNPr1fgdFLUb8kvLV1iEb6rFgasIsjP82HWI6dsb5Io26DDnasA==" }, + "vue-template-compiler": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz", + "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==", + "requires": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, "walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", diff --git a/clients/js/package.json b/clients/js/package.json index 4bb6b15a4..a350d7827 100644 --- a/clients/js/package.json +++ b/clients/js/package.json @@ -42,11 +42,13 @@ "@solana/web3.js": "^1.22.0", "@terra-money/terra.js": "^3.1.9", "@types/config": "^3.3.0", + "@wormhole-foundation/sdk": "^0.7.0-beta.5", "@xpla/xpla.js": "^0.2.1", "algosdk": "^2.4.0", "aptos": "^1.3.16", "axios": "^0.24.0", "base-64": "^1.0.0", + "bech32": "^2.0.0", "binary-parser": "^2.0.2", "bn.js": "^5.2.0", "bs58": "^4.0.1", @@ -65,12 +67,13 @@ "@types/bn.js": "^5.1.0", "@types/bs58": "^4.0.1", "@types/jest": "^29.5.12", + "@types/node": "^20.12.12", "@types/node-fetch": "^2.6.3", "@types/yargs": "^17.0.24", "copy-dir": "^1.3.0", "jest": "^29.7.0", "ts-jest": "^29.1.2", "tsx": "^4.12.0", - "typescript": "^4.6" + "typescript": "^5.4.5" } } diff --git a/clients/js/src/algorand.ts b/clients/js/src/algorand.ts index e66ef2906..75a208aa7 100644 --- a/clients/js/src/algorand.ts +++ b/clients/js/src/algorand.ts @@ -2,24 +2,26 @@ import { _submitVAAAlgorand, signSendAndConfirmAlgorand, } from "@certusone/wormhole-sdk/lib/esm/algorand"; -import { - CONTRACTS, - ChainName, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import { Account, Algodv2, mnemonicToSecretKey } from "algosdk"; import { NETWORKS } from "./consts"; -import { Network } from "./utils"; import { Payload, impossible } from "./vaa"; import { transferFromAlgorand } from "@certusone/wormhole-sdk/lib/esm/token_bridge/transfer"; -import { tryNativeToHexString } from "@certusone/wormhole-sdk/lib/esm/utils"; +import { tryNativeToHexString } from "./sdk/array"; +import { + Chain, + chainToChainId, + contracts, + Network, + toChainId, +} from "@wormhole-foundation/sdk-base"; export async function execute_algorand( payload: Payload, vaa: Uint8Array, network: Network ) { - const chainName = "algorand"; - const { key, rpc } = NETWORKS[network][chainName]; + const chain: Chain = "Algorand"; + const { key, rpc } = NETWORKS[network][chain]; if (!key) { throw Error(`No ${network} key defined for Algorand`); } @@ -28,19 +30,19 @@ export async function execute_algorand( throw Error(`No ${network} rpc defined for Algorand`); } - const contracts = CONTRACTS[network][chainName]; + const coreContract = contracts.coreBridge(network, chain); console.log("contracts", contracts); let target_contract: string; switch (payload.module) { case "Core": { - if (!contracts.core) { + if (!coreContract) { throw new Error( `Core bridge address not defined for Algorand ${network}` ); } - target_contract = contracts.core; + target_contract = coreContract; switch (payload.type) { case "GuardianSetUpgrade": console.log("Submitting new guardian set"); @@ -57,14 +59,12 @@ export async function execute_algorand( break; } case "NFTBridge": { - if (!contracts.nft_bridge) { - // NOTE: this code can safely be removed once the algorand NFT bridge is - // released, but it's fine for it to stay, as the condition will just be - // skipped once 'contracts.nft_bridge' is defined + const nftContract = contracts.nftBridge.get(network, chain); + if (!nftContract) { throw new Error("NFT bridge not supported yet for Algorand"); } - target_contract = contracts.nft_bridge; + target_contract = nftContract; switch (payload.type) { case "ContractUpgrade": console.log("Upgrading contract"); @@ -84,13 +84,14 @@ export async function execute_algorand( break; } case "TokenBridge": { - if (!contracts.token_bridge) { + const tbContract = contracts.tokenBridge(network, chain); + if (!tbContract) { throw new Error( `Token bridge address not defined for Algorand ${network}` ); } - target_contract = contracts.token_bridge; + target_contract = tbContract; switch (payload.type) { case "ContractUpgrade": console.log("Upgrading contract"); @@ -121,7 +122,7 @@ export async function execute_algorand( } const target = BigInt(parseInt(target_contract)); - const CORE_ID = BigInt(parseInt(contracts.core)); + const CORE_ID = BigInt(parseInt(coreContract)); const algodClient = getClient(network, rpc); const algoWallet: Account = mnemonicToSecretKey(key); @@ -140,27 +141,29 @@ export async function execute_algorand( } export async function transferAlgorand( - dstChain: ChainName, + dstChain: Chain, dstAddress: string, tokenAddress: string, amount: string, network: Network, rpc: string ) { - const { key } = NETWORKS[network].algorand; + const { key } = NETWORKS[network].Algorand; if (!key) { throw Error(`No ${network} key defined for Algorand`); } - const contracts = CONTRACTS[network].algorand; const client = getClient(network, rpc); const wallet: Account = mnemonicToSecretKey(key); - const CORE_ID = BigInt(parseInt(contracts.core)); - const TOKEN_BRIDGE_ID = BigInt(parseInt(contracts.token_bridge)); - const recipient = tryNativeToHexString(dstAddress, dstChain); + const CORE_ID = BigInt(parseInt(contracts.coreBridge(network, "Algorand"))); + const TOKEN_BRIDGE_ID = BigInt( + parseInt(contracts.tokenBridge(network, "Algorand")) + ); + const recipient = tryNativeToHexString(dstAddress, chainToChainId(dstChain)); if (!recipient) { throw new Error("Failed to convert recipient address"); } const assetId = tokenAddress === "native" ? BigInt(0) : BigInt(tokenAddress); + const txs = await transferFromAlgorand( client, TOKEN_BRIDGE_ID, @@ -169,7 +172,7 @@ export async function transferAlgorand( assetId, BigInt(amount), recipient, - dstChain, + toChainId(dstChain), BigInt(0) ); const result = await signSendAndConfirmAlgorand(client, txs, wallet); @@ -182,7 +185,7 @@ function getClient(network: Network, rpc: string) { algodServer: rpc, algodPort: "", }; - if (network === "DEVNET") { + if (network === "Devnet") { ALGORAND_HOST.algodToken = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; ALGORAND_HOST.algodPort = "4001"; diff --git a/clients/js/src/aptos.ts b/clients/js/src/aptos.ts index 9b3c2bf4d..f7e9dab71 100644 --- a/clients/js/src/aptos.ts +++ b/clients/js/src/aptos.ts @@ -1,22 +1,21 @@ -import { - CONTRACTS, - ChainId, - ChainName, - assertChain, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import { transferFromAptos } from "@certusone/wormhole-sdk/lib/esm/token_bridge/transfer"; import { AptosAccount, AptosClient, BCS, TxnBuilderTypes, Types } from "aptos"; import { ethers } from "ethers"; import { sha3_256 } from "js-sha3"; import { NETWORKS } from "./consts"; -import { Network } from "./utils"; import { Payload, impossible } from "./vaa"; import { CHAINS, ensureHexPrefix } from "@certusone/wormhole-sdk"; import { TokenBridgeState } from "@certusone/wormhole-sdk/lib/esm/aptos/types"; +import { generateSignAndSubmitEntryFunction } from "@certusone/wormhole-sdk/lib/esm/utils"; import { - generateSignAndSubmitEntryFunction, - tryNativeToUint8Array, -} from "@certusone/wormhole-sdk/lib/esm/utils"; + Chain, + ChainId, + Network, + assertChainId, + contracts, + toChainId, +} from "@wormhole-foundation/sdk-base"; +import { tryNativeToUint8Array } from "./sdk/array"; export async function execute_aptos( payload: Payload, @@ -25,7 +24,7 @@ export async function execute_aptos( contract: string | undefined, rpc: string | undefined ) { - const chain = "aptos"; + const chain: Chain = "Aptos"; // turn VAA bytes into BCS format. That is, add a length prefix const serializer = new BCS.Serializer(); @@ -34,7 +33,7 @@ export async function execute_aptos( switch (payload.module) { case "Core": { - contract = contract ?? CONTRACTS[network][chain]["core"]; + contract = contract ?? contracts.coreBridge(network, chain); if (contract === undefined) { throw Error("core bridge contract is undefined"); } @@ -71,7 +70,7 @@ export async function execute_aptos( break; } case "NFTBridge": { - contract = contract ?? CONTRACTS[network][chain]["nft_bridge"]; + contract = contract ?? contracts.nftBridge(network, chain); if (contract === undefined) { throw Error("nft bridge contract is undefined"); } @@ -120,7 +119,7 @@ export async function execute_aptos( break; } case "TokenBridge": { - contract = contract ?? CONTRACTS[network][chain]["token_bridge"]; + contract = contract ?? contracts.tokenBridge(network, chain); if (contract === undefined) { throw Error("token bridge contract is undefined"); } @@ -180,7 +179,7 @@ export async function execute_aptos( // offline: const tokenAddress = payload.tokenAddress; const tokenChain = payload.tokenChain; - assertChain(tokenChain); + assertChainId(tokenChain); let wrappedContract = deriveWrappedAssetAddress( hex(contract), tokenChain, @@ -208,7 +207,7 @@ export async function execute_aptos( // TODO: only handles wrapped assets for now const tokenAddress = payload.tokenAddress; const tokenChain = payload.tokenChain; - assertChain(tokenChain); + assertChainId(tokenChain); let wrappedContract = deriveWrappedAssetAddress( hex(contract), tokenChain, @@ -243,22 +242,22 @@ export async function execute_aptos( } export async function transferAptos( - dstChain: ChainName, + dstChain: Chain, dstAddress: string, tokenAddress: string, amount: string, network: Network, rpc: string ) { - const { key } = NETWORKS[network].aptos; + const { key } = NETWORKS[network].Aptos; if (!key) { throw new Error("No key for aptos"); } - rpc = rpc ?? NETWORKS[network].aptos.rpc; + rpc = rpc ?? NETWORKS[network].Aptos.rpc; if (!rpc) { throw new Error("No rpc for aptos"); } - const { token_bridge } = CONTRACTS[network].aptos; + const token_bridge = contracts.tokenBridge(network, "Aptos"); if (!token_bridge) { throw new Error("token bridge contract is undefined"); } @@ -268,8 +267,8 @@ export async function transferAptos( token_bridge, tokenAddress === "native" ? "0x1::aptos_coin::AptosCoin" : tokenAddress, amount, - dstChain, - tryNativeToUint8Array(dstAddress, dstChain) + toChainId(dstChain), + tryNativeToUint8Array(dstAddress, toChainId(dstChain)) ); const tx = (await generateSignAndSubmitEntryFunction( client, @@ -321,14 +320,14 @@ export function deriveResourceAccount( } export async function callEntryFunc( - network: "MAINNET" | "TESTNET" | "DEVNET", + network: Network, rpc: string | undefined, module: string, func: string, ty_args: BCS.Seq, args: BCS.Seq ): Promise { - let key: string | undefined = NETWORKS[network]["aptos"].key; + let key: string | undefined = NETWORKS[network]["Aptos"].key; if (key === undefined) { throw new Error("No key for aptos"); } @@ -338,7 +337,7 @@ export async function callEntryFunc( if (typeof rpc != "undefined") { client = new AptosClient(rpc); } else { - client = new AptosClient(NETWORKS[network]["aptos"].rpc); + client = new AptosClient(NETWORKS[network]["Aptos"].rpc); } const [{ sequence_number: sequenceNumber }, chainId] = await Promise.all([ client.getAccount(accountFrom.address()), @@ -388,14 +387,13 @@ export async function queryRegistrationsAptos( network: Network, module: "Core" | "NFTBridge" | "TokenBridge" ): Promise { - const n = NETWORKS[network]["aptos"]; + const n = NETWORKS[network]["Aptos"]; const client = new AptosClient(n.rpc); - const contracts = CONTRACTS[network]["aptos"]; let stateObjectId: string | undefined; switch (module) { case "TokenBridge": - stateObjectId = contracts.token_bridge; + stateObjectId = contracts.tokenBridge(network, "Aptos"); if (stateObjectId === undefined) { throw Error(`Unknown token bridge contract on ${network} for Aptos`); } diff --git a/clients/js/src/chains/generic/getOriginalAsset.ts b/clients/js/src/chains/generic/getOriginalAsset.ts index 2bd7141ce..f1bfee610 100644 --- a/clients/js/src/chains/generic/getOriginalAsset.ts +++ b/clients/js/src/chains/generic/getOriginalAsset.ts @@ -10,25 +10,38 @@ import { getOriginalAssetXpla, } from "@certusone/wormhole-sdk/lib/esm/token_bridge/getOriginalAsset"; import { getOriginalAssetInjective } from "@certusone/wormhole-sdk/lib/esm/token_bridge/injective"; -import { - ChainId, - ChainName, - coalesceChainName, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; -import { CONTRACTS } from "../../consts"; -import { Network } from "../../utils"; import { impossible } from "../../vaa"; import { getOriginalAssetSei } from "../sei/sdk"; import { getProviderForChain } from "./provider"; +import { + Chain, + ChainId, + Network, + chainToPlatform, + contracts, + toChain, +} from "@wormhole-foundation/sdk-base"; +import { + TokenId, + Wormhole, + toChainId, + wormhole, +} from "@wormhole-foundation/sdk"; +import evm from "@wormhole-foundation/sdk/evm"; +import solana from "@wormhole-foundation/sdk/solana"; +import algorand from "@wormhole-foundation/sdk/algorand"; +import aptos from "@wormhole-foundation/sdk/aptos"; +import cosmwasm from "@wormhole-foundation/sdk/cosmwasm"; +import sui from "@wormhole-foundation/sdk/sui"; export const getOriginalAsset = async ( - chain: ChainId | ChainName, + chain: ChainId | Chain, network: Network, assetAddress: string, rpc?: string ): Promise => { - const chainName = coalesceChainName(chain); - const tokenBridgeAddress = CONTRACTS[network][chainName].token_bridge; + const chainName = toChain(chain); + const tokenBridgeAddress = contracts.tokenBridge.get(network, chainName); if (!tokenBridgeAddress) { throw new Error( `Token bridge address not defined for ${chainName} ${network}` @@ -36,69 +49,66 @@ export const getOriginalAsset = async ( } switch (chainName) { - case "unset": - throw new Error("Chain not set"); - case "solana": { + case "Solana": { const provider = getProviderForChain(chainName, network, { rpc }); return getOriginalAssetSolana(provider, tokenBridgeAddress, assetAddress); } - case "acala": - case "arbitrum": - case "aurora": - case "avalanche": - case "base": - case "bsc": - case "celo": - case "ethereum": - case "fantom": - case "gnosis": - case "karura": - case "klaytn": - case "moonbeam": - case "neon": - case "oasis": - case "optimism": - case "polygon": - // case "rootstock": - case "scroll": - case "mantle": - case "blast": - case "xlayer": - case "linea": - case "berachain": - case "seievm": - case "sepolia": - case "arbitrum_sepolia": - case "base_sepolia": - case "optimism_sepolia": - case "polygon_sepolia": - case "holesky": { + case "Acala": + case "Arbitrum": + case "Aurora": + case "Avalanche": + case "Base": + case "Bsc": + case "Celo": + case "Ethereum": + case "Fantom": + case "Gnosis": + case "Karura": + case "Klaytn": + case "Moonbeam": + case "Neon": + case "Oasis": + case "Optimism": + case "Polygon": + case "Scroll": + case "Mantle": + case "Blast": + case "Xlayer": + case "Linea": + case "Berachain": + case "Seievm": + case "Sepolia": + case "ArbitrumSepolia": + case "BaseSepolia": + case "OptimismSepolia": + case "PolygonSepolia": + case "Holesky": { const provider = getProviderForChain(chainName, network, { rpc }); return getOriginalAssetEth( tokenBridgeAddress, provider, assetAddress, - chain + toChainId(chain) ); } - case "terra": - case "terra2": { + case "Terra": + case "Terra2": { const provider = getProviderForChain(chainName, network, { rpc }); return getOriginalAssetTerra(provider, assetAddress); } - case "injective": { + case "Injective": { const provider = getProviderForChain(chainName, network, { rpc }); return getOriginalAssetInjective(assetAddress, provider); } - case "sei": { + case "Sei": { const provider = await getProviderForChain(chainName, network, { rpc }); return getOriginalAssetSei(assetAddress, provider); } - case "xpla": { + case "Xpla": { const provider = getProviderForChain(chainName, network, { rpc }); return getOriginalAssetXpla(provider, assetAddress); } - case "algorand": { + case "Algorand": { const provider = getProviderForChain(chainName, network, { rpc }); return getOriginalAssetAlgorand( provider, @@ -106,32 +116,32 @@ export const getOriginalAsset = async ( BigInt(assetAddress) ); } - case "near": { + case "Near": { const provider = await getProviderForChain(chainName, network, { rpc }); return getOriginalAssetNear(provider, tokenBridgeAddress, assetAddress); } - case "aptos": { + case "Aptos": { const provider = getProviderForChain(chainName, network, { rpc }); return getOriginalAssetAptos(provider, tokenBridgeAddress, assetAddress); } - case "sui": { + case "Sui": { const provider = getProviderForChain(chainName, network, { rpc }); return getOriginalAssetSui(provider, tokenBridgeAddress, assetAddress); } - case "btc": - case "osmosis": - case "pythnet": - case "wormchain": - case "cosmoshub": - case "evmos": - case "kujira": - case "neutron": - case "celestia": - case "stargaze": - case "seda": - case "dymension": - case "provenance": - case "rootstock": + case "Btc": + case "Osmosis": + case "Pythnet": + case "Wormchain": + case "Cosmoshub": + case "Evmos": + case "Kujira": + case "Neutron": + case "Celestia": + case "Stargaze": + case "Seda": + case "Dymension": + case "Provenance": + case "Rootstock": throw new Error(`${chainName} not supported`); default: impossible(chainName); diff --git a/clients/js/src/chains/generic/getWrappedAssetAddress.ts b/clients/js/src/chains/generic/getWrappedAssetAddress.ts index 1d752d580..9d79784d8 100644 --- a/clients/js/src/chains/generic/getWrappedAssetAddress.ts +++ b/clients/js/src/chains/generic/getWrappedAssetAddress.ts @@ -9,31 +9,32 @@ import { getForeignAssetXpla, } from "@certusone/wormhole-sdk/lib/esm/token_bridge/getForeignAsset"; import { getForeignAssetInjective } from "@certusone/wormhole-sdk/lib/esm/token_bridge/injective"; -import { tryNativeToUint8Array } from "@certusone/wormhole-sdk/lib/esm/utils/array"; -import { - ChainId, - ChainName, - coalesceChainName, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; -import { CONTRACTS } from "../../consts"; -import { Network } from "../../utils"; import { impossible } from "../../vaa"; import { getForeignAssetSei } from "../sei/sdk"; import { getProviderForChain } from "./provider"; +import { + Chain, + ChainId, + Network, + contracts, + toChain, + toChainId, +} from "@wormhole-foundation/sdk-base"; +import { tryNativeToUint8Array } from "../../sdk/array"; export const getWrappedAssetAddress = async ( - chain: ChainId | ChainName, + chain: ChainId | Chain, network: Network, - originChain: ChainId | ChainName, + originChain: ChainId | Chain, originAddress: string, rpc?: string ): Promise => { - const chainName = coalesceChainName(chain); + const chainName = toChain(chain); const originAddressUint8Array = tryNativeToUint8Array( originAddress, originChain ); - const tokenBridgeAddress = CONTRACTS[network][chainName].token_bridge; + const tokenBridgeAddress = contracts.tokenBridge.get(network, chainName); if (!tokenBridgeAddress) { throw new Error( `Token bridge address not defined for ${chainName} ${network}` @@ -41,143 +42,141 @@ export const getWrappedAssetAddress = async ( } switch (chainName) { - case "unset": - throw new Error("Chain not set"); - case "solana": { + case "Solana": { const provider = getProviderForChain(chainName, network, { rpc }); return getForeignAssetSolana( provider, tokenBridgeAddress, - originChain, + toChainId(originChain), originAddressUint8Array ); } - case "acala": - case "arbitrum": - case "aurora": - case "avalanche": - case "base": - case "bsc": - case "celo": - case "ethereum": - case "fantom": - case "gnosis": - case "karura": - case "klaytn": - case "moonbeam": - case "neon": - case "oasis": - case "optimism": - case "polygon": - // case "rootstock": - case "scroll": - case "mantle": - case "blast": - case "xlayer": - case "linea": - case "berachain": - case "seievm": - case "sepolia": - case "arbitrum_sepolia": - case "base_sepolia": - case "optimism_sepolia": - case "polygon_sepolia": - case "holesky": { + case "Acala": + case "Arbitrum": + case "Aurora": + case "Avalanche": + case "Base": + case "Bsc": + case "Celo": + case "Ethereum": + case "Fantom": + case "Gnosis": + case "Karura": + case "Klaytn": + case "Moonbeam": + case "Neon": + case "Oasis": + case "Optimism": + case "Polygon": + // case "Rootstock": + case "Scroll": + case "Mantle": + case "Blast": + case "Xlayer": + case "Linea": + case "Berachain": + case "Seievm": + case "Sepolia": + case "ArbitrumSepolia": + case "BaseSepolia": + case "OptimismSepolia": + case "PolygonSepolia": + case "Holesky": { const provider = getProviderForChain(chainName, network, { rpc }); return getForeignAssetEth( tokenBridgeAddress, provider, - originChain, + toChainId(originChain), originAddressUint8Array ); } - case "terra": - case "terra2": { + case "Terra": + case "Terra2": { const provider = getProviderForChain(chainName, network, { rpc }); return getForeignAssetTerra( tokenBridgeAddress, provider, - originChain, + toChainId(originChain), originAddressUint8Array ); } - case "injective": { + case "Injective": { const provider = getProviderForChain(chainName, network, { rpc }); return getForeignAssetInjective( tokenBridgeAddress, provider, - originChain, + toChainId(originChain), originAddressUint8Array ); } - case "sei": { + case "Sei": { const provider = await getProviderForChain(chainName, network, { rpc }); return getForeignAssetSei( tokenBridgeAddress, provider, - originChain, + toChainId(originChain), originAddressUint8Array ); } - case "xpla": { + case "Xpla": { const provider = getProviderForChain(chainName, network, { rpc }); return getForeignAssetXpla( tokenBridgeAddress, provider, - originChain, + toChainId(originChain), originAddressUint8Array ); } - case "algorand": { + case "Algorand": { const provider = getProviderForChain(chainName, network, { rpc }); return getForeignAssetAlgorand( provider, BigInt(tokenBridgeAddress), - originChain, + toChainId(originChain), originAddress ).then((x) => x?.toString() ?? null); } - case "near": { + case "Near": { const provider = await getProviderForChain(chainName, network, { rpc }); return getForeignAssetNear( provider, tokenBridgeAddress, - originChain, + toChainId(originChain), originAddress ); } - case "aptos": { + case "Aptos": { const provider = getProviderForChain(chainName, network, { rpc }); return getForeignAssetAptos( provider, tokenBridgeAddress, - originChain, + toChainId(originChain), originAddress ); } - case "sui": { + case "Sui": { const provider = getProviderForChain(chainName, network, { rpc }); return getForeignAssetSui( provider, tokenBridgeAddress, - originChain, + toChainId(originChain), originAddressUint8Array ); } - case "btc": - case "osmosis": - case "pythnet": - case "wormchain": - case "cosmoshub": - case "evmos": - case "kujira": - case "neutron": - case "celestia": - case "rootstock": - case "stargaze": - case "seda": - case "dymension": - case "provenance": + case "Btc": + case "Osmosis": + case "Pythnet": + case "Wormchain": + case "Cosmoshub": + case "Evmos": + case "Kujira": + case "Neutron": + case "Celestia": + case "Rootstock": + case "Stargaze": + case "Seda": + case "Dymension": + case "Provenance": throw new Error(`${chainName} not supported`); default: impossible(chainName); diff --git a/clients/js/src/chains/generic/provider.ts b/clients/js/src/chains/generic/provider.ts index 1594f5dc8..ba4987728 100644 --- a/clients/js/src/chains/generic/provider.ts +++ b/clients/js/src/chains/generic/provider.ts @@ -1,20 +1,3 @@ -import { - CHAIN_ID_ALGORAND, - CHAIN_ID_APTOS, - CHAIN_ID_INJECTIVE, - CHAIN_ID_NEAR, - CHAIN_ID_SEI, - CHAIN_ID_SOLANA, - CHAIN_ID_SUI, - CHAIN_ID_TERRA, - CHAIN_ID_TERRA2, - CHAIN_ID_XPLA, - ChainId, - ChainName, - EVMChainId, - EVMChainName, - coalesceChainName, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import { CosmWasmClient } from "@cosmjs/cosmwasm-stargate"; import { Network as InjectiveNetwork, @@ -32,104 +15,107 @@ import { ethers } from "ethers"; import { connect } from "near-api-js"; import { Provider as NearProvider } from "near-api-js/lib/providers"; import { NETWORKS } from "../../consts"; -import { Network } from "../../utils"; import { impossible } from "../../vaa"; +import { + Chain, + ChainId, + Network, + PlatformToChains, + chainIds, + toChain, + toChainId, +} from "@wormhole-foundation/sdk-base"; -export type ChainProvider = T extends - | "algorand" - | typeof CHAIN_ID_ALGORAND +export type ChainProvider = T extends "Algorand" ? Algodv2 - : T extends "aptos" | typeof CHAIN_ID_APTOS + : T extends "Aptos" ? AptosClient - : T extends EVMChainName | EVMChainId + : T extends PlatformToChains<"Evm"> ? ethers.providers.JsonRpcProvider - : T extends "injective" | typeof CHAIN_ID_INJECTIVE + : T extends "Injective" ? ChainGrpcWasmApi - : T extends "near" | typeof CHAIN_ID_NEAR + : T extends "Near" ? Promise - : T extends - | "terra" - | "terra2" - | typeof CHAIN_ID_TERRA - | typeof CHAIN_ID_TERRA2 + : T extends "Terra" | "Terra2" ? TerraLCDClient - : T extends "sei" | typeof CHAIN_ID_SEI + : T extends "Sei" ? Promise - : T extends "solana" | typeof CHAIN_ID_SOLANA + : T extends "Solana" ? SolanaConnection - : T extends "sui" | typeof CHAIN_ID_SUI + : T extends "Sui" ? JsonRpcProvider - : T extends "xpla" | typeof CHAIN_ID_XPLA + : T extends "Xpla" ? XplaLCDClient : never; -export const getProviderForChain = ( +export const getProviderForChain = ( chain: T, network: Network, options?: { rpc?: string; [opt: string]: any } ): ChainProvider => { - const chainName = coalesceChainName(chain); - const rpc = options?.rpc ?? NETWORKS[network][chainName].rpc; + const rpc = options?.rpc ?? NETWORKS[network][chain].rpc; if (!rpc) { - throw new Error(`No ${network} rpc defined for ${chainName}`); + throw new Error(`No ${network} rpc defined for ${chain}`); } - switch (chainName) { - case "unset": - throw new Error("Chain not set"); - case "solana": + switch (chain) { + case "Solana": return new SolanaConnection(rpc, "confirmed") as ChainProvider; - case "acala": - case "arbitrum": - case "aurora": - case "avalanche": - case "base": - case "bsc": - case "celo": - case "ethereum": - case "fantom": - case "gnosis": - case "karura": - case "klaytn": - case "moonbeam": - case "neon": - case "oasis": - case "optimism": - case "polygon": - // case "rootstock": - case "scroll": - case "mantle": - case "blast": - case "xlayer": - case "linea": - case "berachain": - case "seievm": - case "sepolia": - case "arbitrum_sepolia": - case "base_sepolia": - case "optimism_sepolia": - case "polygon_sepolia": - case "holesky": + case "Acala": + case "Arbitrum": + case "Aurora": + case "Avalanche": + case "Base": + case "Bsc": + case "Celo": + case "Ethereum": + case "Fantom": + case "Gnosis": + case "Karura": + case "Klaytn": + case "Moonbeam": + case "Neon": + case "Oasis": + case "Optimism": + case "Polygon": + // case "Rootstock": + case "Scroll": + case "Mantle": + case "Blast": + case "Xlayer": + case "Linea": + case "Berachain": + case "Seievm": + case "Sepolia": + case "ArbitrumSepolia": + case "BaseSepolia": + case "OptimismSepolia": + case "PolygonSepolia": + case "Holesky": return new ethers.providers.JsonRpcProvider(rpc) as ChainProvider; - case "terra": - case "terra2": + case "Terra": + case "Terra2": + const chain_id = + chain === "Terra" + ? NETWORKS[network].Terra.chain_id + : NETWORKS[network].Terra2.chain_id; return new TerraLCDClient({ URL: rpc, - chainID: NETWORKS[network][chainName].chain_id, - isClassic: chainName === "terra", + chainID: chain_id, + isClassic: chain === "Terra", }) as ChainProvider; - case "injective": { + case "Injective": { const endpoints = getNetworkEndpoints( - network === "MAINNET" + network === "Mainnet" ? InjectiveNetwork.MainnetK8s : InjectiveNetwork.TestnetK8s ); return new ChainGrpcWasmApi(endpoints.grpc) as ChainProvider; } - case "sei": + case "Sei": return getCosmWasmClient(rpc) as ChainProvider; - case "xpla": { - const chainId = NETWORKS[network].xpla.chain_id; + case "Xpla": { + const chainId = NETWORKS[network].Xpla.chain_id; if (!chainId) { throw new Error(`No ${network} chain ID defined for XPLA.`); } @@ -139,7 +125,7 @@ export const getProviderForChain = ( chainID: chainId, }) as ChainProvider; } - case "algorand": { + case "Algorand": { const { token, port } = { ...{ token: @@ -150,34 +136,34 @@ export const getProviderForChain = ( }; return new Algodv2(token, rpc, port) as ChainProvider; } - case "near": + case "Near": return connect({ - networkId: NETWORKS[network].near.networkId, + networkId: NETWORKS[network].Near.networkId, nodeUrl: rpc, headers: {}, }).then(({ connection }) => connection.provider) as ChainProvider; - case "aptos": + case "Aptos": return new AptosClient(rpc) as ChainProvider; - case "sui": + case "Sui": return new JsonRpcProvider( new SuiConnection({ fullnode: rpc }) ) as ChainProvider; - case "btc": - case "osmosis": - case "pythnet": - case "wormchain": - case "cosmoshub": - case "evmos": - case "kujira": - case "neutron": - case "celestia": - case "stargaze": - case "seda": - case "dymension": - case "provenance": - case "rootstock": - throw new Error(`${chainName} not supported`); + case "Btc": + case "Osmosis": + case "Pythnet": + case "Wormchain": + case "Cosmoshub": + case "Evmos": + case "Kujira": + case "Neutron": + case "Celestia": + case "Stargaze": + case "Seda": + case "Dymension": + case "Provenance": + case "Rootstock": + throw new Error(`${chain} not supported`); default: - impossible(chainName); + impossible(chain); } }; diff --git a/clients/js/src/chains/sei/registrations.ts b/clients/js/src/chains/sei/registrations.ts index 124da327a..0abfa9e50 100644 --- a/clients/js/src/chains/sei/registrations.ts +++ b/clients/js/src/chains/sei/registrations.ts @@ -1,28 +1,22 @@ import { getCosmWasmClient } from "@sei-js/core"; -import { - ChainName, - CHAINS, - CONTRACTS, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import { NETWORKS } from "../../consts/networks"; -import { Network } from "../../utils"; +import { Chain, Network, chains, contracts } from "@wormhole-foundation/sdk"; export async function queryRegistrationsSei( network: Network, module: "Core" | "NFTBridge" | "TokenBridge" ): Promise { - const chain = "sei" as ChainName; + const chain: Chain = "Sei"; const n = NETWORKS[network][chain]; - const contracts = CONTRACTS[network][chain]; let target_contract: string | undefined; switch (module) { case "TokenBridge": - target_contract = contracts.token_bridge; + target_contract = contracts.tokenBridge.get(network, chain); break; case "NFTBridge": - target_contract = contracts.nft_bridge; + target_contract = contracts.nftBridge.get(network, chain); break; default: throw new Error(`Invalid module: ${module}`); @@ -41,14 +35,14 @@ export async function queryRegistrationsSei( // Query the bridge registration for all the chains in parallel. const registrations = await Promise.all( - Object.entries(CHAINS) - .filter(([c_name, _]) => c_name !== chain && c_name !== "unset") - .map(async ([c_name, c_id]) => [ + chains + .filter((c_name) => c_name !== chain) + .map(async (c_name) => [ c_name, await (async () => { let query_msg = { chain_registration: { - chain: c_id, + chain: c_name, }, }; diff --git a/clients/js/src/chains/sei/sdk.ts b/clients/js/src/chains/sei/sdk.ts index 43729a59d..0a2fc2e72 100644 --- a/clients/js/src/chains/sei/sdk.ts +++ b/clients/js/src/chains/sei/sdk.ts @@ -5,13 +5,13 @@ import { } from "@certusone/wormhole-sdk/lib/esm/cosmwasm/address"; import { WormholeWrappedInfo } from "@certusone/wormhole-sdk/lib/esm/token_bridge/getOriginalAsset"; import { hexToUint8Array } from "@certusone/wormhole-sdk/lib/esm/utils/array"; -import { - CHAIN_ID_SEI, - ChainId, - ChainName, - coalesceChainId, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import { CosmWasmClient } from "@cosmjs/cosmwasm-stargate"; +import { + Chain, + ChainId, + chainToChainId, + toChainId, +} from "@wormhole-foundation/sdk"; import { fromUint8Array } from "js-base64"; /** @@ -25,7 +25,7 @@ import { fromUint8Array } from "js-base64"; export async function getForeignAssetSei( tokenBridgeAddress: string, cosmwasmClient: CosmWasmClient, - originChain: ChainId | ChainName, + originChain: ChainId | Chain, originAsset: Uint8Array ): Promise { try { @@ -33,7 +33,7 @@ export async function getForeignAssetSei( tokenBridgeAddress, { wrapped_registry: { - chain: coalesceChainId(originChain), + chain: toChainId(originChain), address: fromUint8Array(originAsset), }, } @@ -74,7 +74,7 @@ export async function getOriginalAssetSei( wrappedAddress: string, client: CosmWasmClient ): Promise { - const chainId = CHAIN_ID_SEI; + const chainId = chainToChainId("Sei"); if (isNativeCosmWasmDenom(chainId, wrappedAddress)) { return { isWrapped: false, diff --git a/clients/js/src/chains/sei/submit.ts b/clients/js/src/chains/sei/submit.ts index 676a40130..cf99549dc 100644 --- a/clients/js/src/chains/sei/submit.ts +++ b/clients/js/src/chains/sei/submit.ts @@ -5,10 +5,9 @@ import { toUtf8 } from "@cosmjs/encoding"; import { MsgExecuteContract } from "cosmjs-types/cosmwasm/wasm/v1/tx"; import { getSigningCosmWasmClient } from "@sei-js/core"; -import { CONTRACTS } from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import { NETWORKS } from "../../consts"; -import { Network } from "../../utils"; import { impossible, Payload } from "../../vaa"; +import { contracts, Network } from "@wormhole-foundation/sdk"; export const submit = async ( payload: Payload, @@ -16,8 +15,7 @@ export const submit = async ( network: Network, rpc?: string ) => { - const contracts = CONTRACTS[network].sei; - const networkInfo = NETWORKS[network].sei; + const networkInfo = NETWORKS[network].Sei; rpc = rpc || networkInfo.rpc; const key = networkInfo.key; if (!key) { @@ -32,12 +30,12 @@ export const submit = async ( let execute_msg: object; switch (payload.module) { case "Core": { - if (!contracts.core) { + const core = contracts.coreBridge.get(network, "Sei"); + if (!core) { throw new Error(`Core bridge address not defined for Sei ${network}`); } - target_contract = contracts.core; - // sigh... + target_contract = core; execute_msg = { submit_v_a_a: { vaa: vaa.toString("base64"), @@ -59,14 +57,12 @@ export const submit = async ( break; } case "NFTBridge": { - if (!contracts.nft_bridge) { - // NOTE: this code can safely be removed once the sei NFT bridge is - // released, but it's fine for it to stay, as the condition will just be - // skipped once 'contracts.nft_bridge' is defined + const nft = contracts.nftBridge.get(network, "Sei"); + if (!nft) { throw new Error("NFT bridge not supported yet for Sei"); } - target_contract = contracts.nft_bridge; + target_contract = nft; execute_msg = { submit_vaa: { data: vaa.toString("base64"), @@ -91,11 +87,12 @@ export const submit = async ( break; } case "TokenBridge": { - if (!contracts.token_bridge) { + const tb = contracts.tokenBridge.get(network, "Sei"); + if (!tb) { throw new Error(`Token bridge address not defined for Sei ${network}`); } - target_contract = contracts.token_bridge; + target_contract = tb; execute_msg = { submit_vaa: { data: vaa.toString("base64"), diff --git a/clients/js/src/chains/sui/buildCoin.ts b/clients/js/src/chains/sui/buildCoin.ts index bc74e46b8..6e5adb82f 100644 --- a/clients/js/src/chains/sui/buildCoin.ts +++ b/clients/js/src/chains/sui/buildCoin.ts @@ -1,6 +1,5 @@ import { JsonRpcProvider } from "@mysten/sui.js"; import fs from "fs"; -import { Network } from "../../utils"; import { MoveToml } from "./MoveToml"; import { buildPackage, @@ -12,6 +11,7 @@ import { } from "./publish"; import { SuiBuildOutput } from "./types"; import { getPackageId } from "./utils"; +import { Network } from "@wormhole-foundation/sdk"; export const buildCoin = async ( provider: JsonRpcProvider, @@ -93,8 +93,8 @@ const setupCoin = ( for (const dependencyPath of paths) { // todo(aki): the 4th param is a hack that makes this work, but doesn't // necessarily make sense. We should probably revisit this later. - setupMainToml(dependencyPath, network, false, network !== "DEVNET"); - if (network === "DEVNET") { + setupMainToml(dependencyPath, network, false, network !== "Devnet"); + if (network === "Devnet") { const dependencyToml = new MoveToml(getDefaultTomlPath(dependencyPath)); switch (getPackageNameFromPath(dependencyPath)) { case "wormhole": diff --git a/clients/js/src/chains/sui/publish.ts b/clients/js/src/chains/sui/publish.ts index 6f5595550..4976b4613 100644 --- a/clients/js/src/chains/sui/publish.ts +++ b/clients/js/src/chains/sui/publish.ts @@ -8,10 +8,10 @@ import { import { execSync } from "child_process"; import fs from "fs"; import { resolve } from "path"; -import { Network } from "../../utils"; import { MoveToml } from "./MoveToml"; import { SuiBuildOutput } from "./types"; import { executeTransactionBlock } from "./utils"; +import { Network } from "@wormhole-foundation/sdk"; export const buildPackage = (packagePath: string): SuiBuildOutput => { if (!fs.existsSync(packagePath)) { @@ -76,7 +76,7 @@ export const publishPackage = async ( // Publish contracts const tx = new TransactionBlock(); - if (network === "DEVNET") { + if (network === "Devnet") { // Avoid Error checking transaction input objects: GasBudgetTooHigh { gas_budget: 50000000000, max_budget: 10000000000 } tx.setGasBudget(10000000000); } @@ -186,7 +186,7 @@ export const setupMainToml = ( // don't have to manually reset them repeatedly during local development. // This is not recursive because we assume that packages are deployed bottom // up. - if (!isDependency && network === "DEVNET") { + if (!isDependency && network === "Devnet") { resetNetworkToml(packagePath, network); } diff --git a/clients/js/src/chains/sui/registrations.ts b/clients/js/src/chains/sui/registrations.ts index 500c206ae..ec2b27599 100644 --- a/clients/js/src/chains/sui/registrations.ts +++ b/clients/js/src/chains/sui/registrations.ts @@ -1,25 +1,24 @@ import { getObjectFields } from "@certusone/wormhole-sdk/lib/esm/sui"; -import { - CHAIN_ID_TO_NAME, - CONTRACTS, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import { NETWORKS } from "../../consts/networks"; -import { Network } from "../../utils"; import { getProvider } from "./utils"; -import { ChainId } from "@certusone/wormhole-sdk"; +import { + ChainId, + Network, + chainIdToChain, + contracts, +} from "@wormhole-foundation/sdk"; export async function queryRegistrationsSui( network: Network, module: "Core" | "NFTBridge" | "TokenBridge" ): Promise { - const n = NETWORKS[network]["sui"]; + const n = NETWORKS[network]["Sui"]; const provider = getProvider(network, n.rpc); - const contracts = CONTRACTS[network]["sui"]; let state_object_id: string; switch (module) { case "TokenBridge": - state_object_id = contracts.token_bridge; + state_object_id = contracts.tokenBridge(network, "Sui"); if (state_object_id === undefined) { throw Error(`Unknown token bridge contract on ${network} for Sui`); } @@ -49,7 +48,7 @@ export async function queryRegistrationsSui( const emitterAddress: Uint8Array = emitter.data?.content?.fields.value.fields.value.fields.data; const emitterAddrStr = Buffer.from(emitterAddress).toString("hex"); - results[CHAIN_ID_TO_NAME[chainId]] = emitterAddrStr; + results[chainIdToChain(chainId)] = emitterAddrStr; } } diff --git a/clients/js/src/chains/sui/submit.ts b/clients/js/src/chains/sui/submit.ts index efcd6cc19..b9e17d3b8 100644 --- a/clients/js/src/chains/sui/submit.ts +++ b/clients/js/src/chains/sui/submit.ts @@ -6,16 +6,7 @@ import { createWrappedOnSui, createWrappedOnSuiPrepare, } from "@certusone/wormhole-sdk/lib/esm/token_bridge/createWrapped"; -import { getForeignAssetSui } from "@certusone/wormhole-sdk/lib/esm/token_bridge/getForeignAsset"; -import { - CHAIN_ID_SUI, - CHAIN_ID_TO_NAME, - CONTRACTS, - assertChain, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; -import { parseAttestMetaVaa } from "@certusone/wormhole-sdk/lib/esm/vaa/tokenBridge"; import { SUI_CLOCK_OBJECT_ID, TransactionBlock } from "@mysten/sui.js"; -import { Network } from "../../utils"; import { Payload, impossible } from "../../vaa"; import { assertSuccess, @@ -28,6 +19,15 @@ import { registerChain, setMaxGasBudgetDevnet, } from "./utils"; +import { + Chain, + Network, + VAA, + assertChain, + contracts, + deserialize, +} from "@wormhole-foundation/sdk"; +import { getForeignAssetSui } from "../../sdk/sui"; export const submit = async ( payload: Payload, @@ -39,13 +39,13 @@ export const submit = async ( const consoleWarnTemp = console.warn; console.warn = () => {}; - const chain = CHAIN_ID_TO_NAME[CHAIN_ID_SUI]; + const chain: Chain = "Sui"; const provider = getProvider(network, rpc); const signer = getSigner(provider, network, privateKey); switch (payload.module) { case "Core": { - const coreObjectId = CONTRACTS[network][chain].core; + const coreObjectId = contracts.coreBridge(network, chain); if (!coreObjectId) { throw Error("Core bridge object ID is undefined"); } @@ -103,12 +103,12 @@ export const submit = async ( throw new Error("NFT bridge not supported on Sui"); } case "TokenBridge": { - const coreBridgeStateObjectId = CONTRACTS[network][chain].core; + const coreBridgeStateObjectId = contracts.coreBridge(network, chain); if (!coreBridgeStateObjectId) { throw Error("Core bridge object ID is undefined"); } - const tokenBridgeStateObjectId = CONTRACTS[network][chain].token_bridge; + const tokenBridgeStateObjectId = contracts.tokenBridge(network, chain); if (!tokenBridgeStateObjectId) { throw Error("Token bridge object ID is undefined"); } @@ -116,13 +116,19 @@ export const submit = async ( switch (payload.type) { case "AttestMeta": { // Test attest VAA: 01000000000100d87023087588d8a482d6082c57f3c93649c9a61a98848fc3a0b271f4041394ff7b28abefc8e5e19b83f45243d073d677e122e41425c2dbae3eb5ae1c7c0ac0ee01000000c056a8000000020000000000000000000000000290fb167208af455bb137780163b7b7a9a10c16000000000000000001020000000000000000000000002d8be6bf0baa74e0a907016679cae9190e80dd0a000212544b4e0000000000000000000000000000000000000000000000000000000000457468657265756d205465737420546f6b656e00000000000000000000000000 - const { tokenChain, tokenAddress } = parseAttestMetaVaa(vaa); + const parsedAttest: VAA<"TokenBridge:AttestMeta"> = deserialize( + "TokenBridge:AttestMeta", + vaa + ); + const tokenChain = parsedAttest.payload.token.chain; assertChain(tokenChain); + const tokenAddress = parsedAttest.payload.token.address; + const decimals = parsedAttest.payload.decimals; const coinType = await getForeignAssetSui( provider, tokenBridgeStateObjectId, tokenChain, - tokenAddress + tokenAddress.toUint8Array() ); if (coinType) { // Coin already exists, so we update it @@ -135,7 +141,7 @@ export const submit = async ( provider, coreBridgeStateObjectId, tokenBridgeStateObjectId, - parseAttestMetaVaa(vaa).decimals, + decimals, await signer.getAddress() ); setMaxGasBudgetDevnet(network, prepareTx); @@ -153,7 +159,7 @@ export const submit = async ( console.log(` Published to ${coinPackageId}`); console.log(` Type ${getWrappedCoinType(coinPackageId)}`); - if (!rpc && network !== "DEVNET") { + if (!rpc && network !== "Devnet") { // Wait for wrapped asset creation to be propagated to other // nodes in case this complete registration call is load balanced // to another node. diff --git a/clients/js/src/chains/sui/transfer.ts b/clients/js/src/chains/sui/transfer.ts index 848aafc9b..d66615658 100644 --- a/clients/js/src/chains/sui/transfer.ts +++ b/clients/js/src/chains/sui/transfer.ts @@ -6,24 +6,26 @@ import { setMaxGasBudgetDevnet, } from "./utils"; import { - CONTRACTS, - ChainName, + Chain, Network, - tryNativeToUint8Array, -} from "@certusone/wormhole-sdk/lib/esm/utils"; + chainToChainId, + contracts, +} from "@wormhole-foundation/sdk-base"; +import { tryNativeToUint8Array } from "../../sdk/array"; export async function transferSui( - dstChain: ChainName, + dstChain: Chain, dstAddress: string, tokenAddress: string, amount: string, network: Network, rpc: string ) { - const { core, token_bridge } = CONTRACTS[network]["sui"]; + const core = contracts.coreBridge(network, "Sui"); if (!core) { throw Error("Core bridge object ID is undefined"); } + const token_bridge = contracts.tokenBridge.get(network, "Sui"); if (!token_bridge) { throw new Error("Token bridge object ID is undefined"); } @@ -44,8 +46,8 @@ export async function transferSui( coins, coinType, BigInt(amount), - dstChain, - tryNativeToUint8Array(dstAddress, dstChain) + chainToChainId(dstChain), + tryNativeToUint8Array(dstAddress, chainToChainId(dstChain)) ); setMaxGasBudgetDevnet(network, tx); const result = await executeTransactionBlock(signer, tx); diff --git a/clients/js/src/chains/sui/utils.ts b/clients/js/src/chains/sui/utils.ts index bd4a9ca52..79f533873 100644 --- a/clients/js/src/chains/sui/utils.ts +++ b/clients/js/src/chains/sui/utils.ts @@ -13,9 +13,10 @@ import { } from "@mysten/sui.js"; import { DynamicFieldPage } from "@mysten/sui.js/dist/types/dynamic_fields"; import { NETWORKS } from "../../consts"; -import { Network } from "../../utils"; import { Payload, VAA, parse, serialiseVAA } from "../../vaa"; import { SuiRpcValidationError } from "./error"; +import { Network } from "@wormhole-foundation/sdk"; +import { isValidSuiAddress } from "../../sdk/sui"; const UPGRADE_CAP_TYPE = "0x2::package::UpgradeCap"; @@ -207,7 +208,7 @@ export const getProvider = ( throw new Error("Must provide network or RPC to initialize provider"); } - rpc = rpc || NETWORKS[network!].sui.rpc; + rpc = rpc || NETWORKS[network!].Sui.rpc; if (!rpc) { throw new Error(`No default RPC found for Sui ${network}`); } @@ -235,7 +236,7 @@ export const getSigner = ( customPrivateKey?: string ): RawSigner => { const privateKey: string | undefined = - customPrivateKey || NETWORKS[network].sui.key; + customPrivateKey || NETWORKS[network].Sui.key; if (!privateKey) { throw new Error(`No private key found for Sui ${network}`); } @@ -323,9 +324,6 @@ export const isSuiPublishEvent = < event: T ): event is K => event?.type === "published"; -export const isValidSuiAddress = (objectId: string): boolean => - /^(0x)?[0-9a-f]{1,64}$/.test(objectId); - // todo(aki): this needs to correctly handle types such as // 0x2::dynamic_field::Field<0x3c6d386861470e6f9cb35f3c91f69e6c1f1737bd5d217ca06a15f582e1dc1ce3::state::MigrationControl, bool> export const normalizeSuiType = (type: string): string => { @@ -345,7 +343,7 @@ export const registerChain = async ( tokenBridgeStateObjectId: string, transactionBlock?: TransactionBlock ): Promise => { - if (network === "DEVNET") { + if (network === "Devnet") { // Modify the VAA to only have 1 guardian signature // TODO: remove this when we can deploy the devnet core contract // deterministically with multiple guardians in the initial guardian set @@ -418,7 +416,7 @@ export const setMaxGasBudgetDevnet = ( network: Network, tx: TransactionBlock ) => { - if (network === "DEVNET") { + if (network === "Devnet") { // Avoid Error checking transaction input objects: GasBudgetTooHigh { gas_budget: 50000000000, max_budget: 10000000000 } tx.setGasBudget(10000000000); } diff --git a/clients/js/src/cmds/aptos.ts b/clients/js/src/cmds/aptos.ts index 7f0384d16..b1d326ff5 100644 --- a/clients/js/src/cmds/aptos.ts +++ b/clients/js/src/cmds/aptos.ts @@ -1,10 +1,3 @@ -import { APTOS_DEPLOYER_ADDRESS_DEVNET } from "@certusone/wormhole-sdk"; -import { - assertChain, - CHAIN_ID_APTOS, - coalesceChainId, - CONTRACTS, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import { BCS, FaucetClient } from "aptos"; import { spawnSync } from "child_process"; import fs from "fs"; @@ -25,13 +18,23 @@ import { RPC_OPTIONS, } from "../consts"; import { runCommand, VALIDATOR_OPTIONS } from "../startValidator"; -import { assertNetwork, checkBinary, evm_address, hex } from "../utils"; +import { checkBinary, evm_address, getNetwork, hex } from "../utils"; +import { + assertChain, + chainToChainId, + contracts, + toChain, + toChainId, +} from "@wormhole-foundation/sdk-base"; const APTOS_NODE_URL = "http://0.0.0.0:8080/v1"; const APTOS_FAUCET_URL = "http://0.0.0.0:8081"; const README_URL = "https://github.com/wormhole-foundation/wormhole/blob/main/aptos/README.md"; +export const APTOS_DEPLOYER_ADDRESS_DEVNET = + "277fa055b6a73c42c0662d5236c65c864ccbf2d4abd21f174a30c8b786eab84b"; + interface Package { meta_file: string; mv_files: string[]; @@ -56,12 +59,11 @@ export const builder = (y: typeof yargs) => (yargs) => yargs.option("network", NETWORK_OPTIONS).option("rpc", RPC_OPTIONS), async (argv) => { - const network = argv.network.toUpperCase(); - assertNetwork(network); + const network = getNetwork(argv.network); const contract_address = evm_address( - CONTRACTS[network].aptos.token_bridge + contracts.tokenBridge(network, "Aptos") ); - const rpc = argv.rpc ?? NETWORKS[network].aptos.rpc; + const rpc = argv.rpc ?? NETWORKS[network].Aptos.rpc; await callEntryFunc( network, rpc, @@ -82,7 +84,7 @@ export const builder = (y: typeof yargs) => .option("chain-id", { describe: "Chain id", type: "number", - default: CHAIN_ID_APTOS, + default: chainToChainId("Aptos"), demandOption: false, }) .option("governance-chain-id", { @@ -104,10 +106,11 @@ export const builder = (y: typeof yargs) => type: "string", }), async (argv) => { - const network = argv.network.toUpperCase(); - assertNetwork(network); + const network = getNetwork(argv.network); - const contract_address = evm_address(CONTRACTS[network].aptos.core); + const contract_address = evm_address( + contracts.coreBridge(network, "Aptos") + ); const guardian_addresses = argv["guardian-address"] .split(",") .map((address) => evm_address(address).substring(24)); @@ -127,7 +130,7 @@ export const builder = (y: typeof yargs) => BCS.bcsSerializeBytes(Buffer.from(governance_address, "hex")), guardians_serializer.getBytes(), ]; - const rpc = argv.rpc ?? NETWORKS[network].aptos.rpc; + const rpc = argv.rpc ?? NETWORKS[network].Aptos.rpc; await callEntryFunc( network, rpc, @@ -152,12 +155,11 @@ export const builder = (y: typeof yargs) => .option("rpc", RPC_OPTIONS) .option("named-addresses", NAMED_ADDRESSES_OPTIONS), async (argv) => { - const network = argv.network.toUpperCase(); - assertNetwork(network); + const network = getNetwork(argv.network); checkBinary("aptos", README_URL); const p = buildPackage(argv["package-dir"], argv["named-addresses"]); const b = serializePackage(p); - const rpc = argv.rpc ?? NETWORKS[network].aptos.rpc; + const rpc = argv.rpc ?? NETWORKS[network].Aptos.rpc; await callEntryFunc( network, rpc, @@ -188,21 +190,18 @@ export const builder = (y: typeof yargs) => .option("rpc", RPC_OPTIONS) .option("named-addresses", NAMED_ADDRESSES_OPTIONS), async (argv) => { - const network = argv.network.toUpperCase(); - assertNetwork(network); + const network = getNetwork(argv.network); checkBinary("aptos", README_URL); const p = buildPackage(argv["package-dir"], argv["named-addresses"]); const b = serializePackage(p); const seed = Buffer.from(argv["seed"], "ascii"); - // TODO(csongor): use deployer address from sdk (when it's there) - let module_name = - "0x277fa055b6a73c42c0662d5236c65c864ccbf2d4abd21f174a30c8b786eab84b::deployer"; - if (network == "TESTNET" || network == "MAINNET") { + let module_name = APTOS_DEPLOYER_ADDRESS_DEVNET + "::deployer"; + if (network == "Testnet" || network == "Mainnet") { module_name = "0x0108bc32f7de18a5f6e1e7d6ee7aff9f5fc858d0d87ac0da94dd8d2a5d267d6b::deployer"; } - const rpc = argv.rpc ?? NETWORKS[network].aptos.rpc; + const rpc = argv.rpc ?? NETWORKS[network].Aptos.rpc; await callEntryFunc( network, rpc, @@ -226,13 +225,10 @@ export const builder = (y: typeof yargs) => }) .option("network", NETWORK_OPTIONS), async (argv) => { - const network = argv.network.toUpperCase(); - assertNetwork(network); - const rpc = NETWORKS[network].aptos.rpc; - // TODO(csongor): use sdk address - let module_name = - "0x277fa055b6a73c42c0662d5236c65c864ccbf2d4abd21f174a30c8b786eab84b::sender"; - if (network == "TESTNET" || network == "MAINNET") { + const network = getNetwork(argv.network); + const rpc = NETWORKS[network].Aptos.rpc; + let module_name = APTOS_DEPLOYER_ADDRESS_DEVNET + "::sender"; + if (network == "Testnet" || network == "Mainnet") { module_name = "0x0108bc32f7de18a5f6e1e7d6ee7aff9f5fc858d0d87ac0da94dd8d2a5d267d6b::sender"; } @@ -287,13 +283,12 @@ export const builder = (y: typeof yargs) => }) .option("network", NETWORK_OPTIONS), async (argv) => { - const network = argv.network.toUpperCase(); - assertNetwork(network); - let address = CONTRACTS[network].aptos.token_bridge; + const network = getNetwork(argv.network); + let address: string = contracts.tokenBridge(network, "Aptos"); if (address.startsWith("0x")) address = address.substring(2); const token_bridge_address = Buffer.from(address, "hex"); - assertChain(argv.chain); - const chain = coalesceChainId(argv.chain); + assertChain(toChain(argv.chain)); + const chain = toChainId(argv.chain); const origin_address = Buffer.from( evm_address(argv["origin-address"]), "hex" @@ -343,12 +338,11 @@ export const builder = (y: typeof yargs) => .option("rpc", RPC_OPTIONS) .option("named-addresses", NAMED_ADDRESSES_OPTIONS), async (argv) => { - const network = argv.network.toUpperCase(); - assertNetwork(network); + const network = getNetwork(argv.network); checkBinary("aptos", README_URL); const p = buildPackage(argv["package-dir"], argv["named-addresses"]); const b = serializePackage(p); - const rpc = argv.rpc ?? NETWORKS[network].aptos.rpc; + const rpc = argv.rpc ?? NETWORKS[network].Aptos.rpc; // TODO(csongor): use deployer address from sdk (when it's there) const hash = await callEntryFunc( network, @@ -378,10 +372,9 @@ export const builder = (y: typeof yargs) => .option("network", NETWORK_OPTIONS) .option("rpc", RPC_OPTIONS), async (argv) => { - const network = argv.network.toUpperCase(); - assertNetwork(network); + const network = getNetwork(argv.network); checkBinary("aptos", README_URL); - const rpc = argv.rpc ?? NETWORKS[network].aptos.rpc; + const rpc = argv.rpc ?? NETWORKS[network].Aptos.rpc; // TODO(csongor): use deployer address from sdk (when it's there) const hash = await callEntryFunc( network, diff --git a/clients/js/src/cmds/editVaa.ts b/clients/js/src/cmds/editVaa.ts index 8c93ff76d..5d5da9111 100644 --- a/clients/js/src/cmds/editVaa.ts +++ b/clients/js/src/cmds/editVaa.ts @@ -17,14 +17,14 @@ // import { Implementation__factory } from "@certusone/wormhole-sdk/lib/esm/ethers-contracts"; -import { CONTRACTS } from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import { Other } from "@certusone/wormhole-sdk/lib/esm/vaa"; import axios from "axios"; import { ethers } from "ethers"; import yargs from "yargs"; import { NETWORK_OPTIONS, NETWORKS } from "../consts"; -import { assertNetwork, Network } from "../utils"; import { parse, Payload, serialiseVAA, sign, Signature, VAA } from "../vaa"; +import { contracts, Network } from "@wormhole-foundation/sdk-base"; +import { getNetwork } from "../utils"; export const command = "edit-vaa"; export const desc = "Edits or generates a VAA"; @@ -102,8 +102,7 @@ export const builder = (y: typeof yargs) => export const handler = async ( argv: Awaited["argv"]> ) => { - const network = argv.network.toUpperCase(); - assertNetwork(network); + const network = getNetwork(argv.network); let numSigs = 0; if (argv.signatures) { @@ -235,8 +234,8 @@ const getGuardianSet = async ( network: Network, guardianSetIndex: number ): Promise => { - let n = NETWORKS[network].ethereum; - let contract_address = CONTRACTS[network].ethereum.core; + let n = NETWORKS[network].Ethereum; + let contract_address = contracts.coreBridge(network, "Ethereum"); if (contract_address === undefined) { throw Error(`Unknown core contract on ${network} for ethereum`); } diff --git a/clients/js/src/cmds/evm.ts b/clients/js/src/cmds/evm.ts index 50133acbb..dbc5e2cc2 100644 --- a/clients/js/src/cmds/evm.ts +++ b/clients/js/src/cmds/evm.ts @@ -1,12 +1,3 @@ -import { - assertChain, - assertEVMChain, - ChainName, - CHAINS, - CONTRACTS, - isEVMChain, - toChainName, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import { ethers } from "ethers"; import { homedir } from "os"; import yargs from "yargs"; @@ -18,7 +9,18 @@ import { setStorageAt, } from "../evm"; import { runCommand, VALIDATOR_OPTIONS } from "../startValidator"; -import { assertNetwork, evm_address } from "../utils"; +import { + assertEVMChain, + chainToChain, + evm_address, + getNetwork, +} from "../utils"; +import { + assertChain, + chains, + contracts, + platformToChains, +} from "@wormhole-foundation/sdk-base"; export const command = "evm"; export const desc = "EVM utilities"; @@ -81,12 +83,7 @@ export const builder = function (y: typeof yargs) { } ) .command("chains", "Return all EVM chains", async (_) => { - console.log( - Object.values(CHAINS) - .map((id) => toChainName(id)) - .filter((name) => isEVMChain(name)) - .join(" ") - ); + console.log(...platformToChains("Evm")); }) .command( "info", @@ -96,7 +93,7 @@ export const builder = function (y: typeof yargs) { .option("chain", { alias: "c", describe: "Chain to query", - choices: Object.keys(CHAINS) as ChainName[], + type: "string", demandOption: true, } as const) .option("module", { @@ -120,11 +117,9 @@ export const builder = function (y: typeof yargs) { demandOption: false, }), async (argv) => { - const chain = argv.chain; - assertChain(chain); + const chain = chainToChain(argv.chain); assertEVMChain(chain); - const network = argv.network.toUpperCase(); - assertNetwork(network); + const network = getNetwork(argv.network); const module = argv.module; const rpc = argv.rpc ?? NETWORKS[network][chain].rpc; if (argv["implementation-only"]) { @@ -163,7 +158,7 @@ export const builder = function (y: typeof yargs) { alias: "a", describe: "Core contract address", type: "string", - default: CONTRACTS.MAINNET.ethereum.core, + default: contracts.coreBridge("Mainnet", "Ethereum"), }) .option("guardian-address", { alias: "g", @@ -180,7 +175,7 @@ export const builder = function (y: typeof yargs) { }), async (argv) => { const guardian_addresses = argv["guardian-address"].split(","); - let rpc = argv.rpc ?? NETWORKS.DEVNET.ethereum.rpc; + let rpc = argv.rpc ?? NETWORKS.Devnet.Ethereum.rpc; await hijack_evm( rpc, argv["core-contract-address"], diff --git a/clients/js/src/cmds/generate.ts b/clients/js/src/cmds/generate.ts index e59530660..2c35d6627 100644 --- a/clients/js/src/cmds/generate.ts +++ b/clients/js/src/cmds/generate.ts @@ -1,21 +1,11 @@ -import { tryNativeToHexString } from "@certusone/wormhole-sdk/lib/esm/utils/array"; -import { - assertChain, - ChainName, - CHAINS, - isCosmWasmChain, - isEVMChain, - toChainId, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import { fromBech32, toHex } from "@cosmjs/encoding"; import base58 from "bs58"; import { sha3_256 } from "js-sha3"; import yargs from "yargs"; import { GOVERNANCE_CHAIN, GOVERNANCE_EMITTER } from "../consts"; -import { evm_address } from "../utils"; +import { chainToChain, evm_address } from "../utils"; import { ContractUpgrade, - impossible, Payload, PortalRegisterChain, RecoverChainId, @@ -25,6 +15,13 @@ import { VAA, WormholeRelayerSetDefaultDeliveryProvider, } from "../vaa"; +import { + Chain, + assertChain, + chainToPlatform, + chains, + toChainId, +} from "@wormhole-foundation/sdk-base"; function makeVAA( emitterChain: number, @@ -68,7 +65,7 @@ export const builder = function (y: typeof yargs) { .option("chain", { alias: "c", describe: "Chain to register", - choices: Object.keys(CHAINS) as ChainName[], + type: "string", demandOption: true, } as const) .option("contract-address", { @@ -85,13 +82,13 @@ export const builder = function (y: typeof yargs) { } as const), (argv) => { const module = argv["module"]; - assertChain(argv.chain); + const chain = chainToChain(argv.chain); const payload: PortalRegisterChain = { module, type: "RegisterChain", chain: 0, - emitterChain: toChainId(argv.chain), - emitterAddress: parseAddress(argv.chain, argv["contract-address"]), + emitterChain: toChainId(chain), + emitterAddress: parseAddress(chain, argv["contract-address"]), }; const vaa = makeVAA( GOVERNANCE_CHAIN, @@ -111,7 +108,7 @@ export const builder = function (y: typeof yargs) { .option("chain", { alias: "c", describe: "Chain to upgrade", - choices: Object.keys(CHAINS) as ChainName[], + type: "string", demandOption: true, } as const) .option("contract-address", { @@ -127,13 +124,13 @@ export const builder = function (y: typeof yargs) { demandOption: true, } as const), (argv) => { - assertChain(argv.chain); + const chain = chainToChain(argv.chain); const module = argv["module"]; const payload: ContractUpgrade = { module, type: "ContractUpgrade", - chain: toChainId(argv.chain), - address: parseCodeAddress(argv.chain, argv["contract-address"]), + chain: toChainId(chain), + address: parseCodeAddress(chain, argv["contract-address"]), }; const vaa = makeVAA( GOVERNANCE_CHAIN, @@ -152,7 +149,7 @@ export const builder = function (y: typeof yargs) { .option("emitter-chain", { alias: "e", describe: "Emitter chain of the VAA", - choices: Object.keys(CHAINS) as ChainName[], + type: "string", demandOption: true, } as const) .option("emitter-address", { @@ -164,7 +161,7 @@ export const builder = function (y: typeof yargs) { .option("chain", { alias: "c", describe: "Token's chain", - choices: Object.keys(CHAINS) as ChainName[], + type: "string", demandOption: true, } as const) .option("token-address", { @@ -192,15 +189,14 @@ export const builder = function (y: typeof yargs) { demandOption: true, }), (argv) => { - const emitter_chain = argv["emitter-chain"]; - assertChain(argv.chain); - assertChain(emitter_chain); + const emitter_chain = chainToChain(argv["emitter-chain"]); + const chain = chainToChain(argv.chain); const payload: TokenBridgeAttestMeta = { module: "TokenBridge", type: "AttestMeta", chain: 0, - tokenAddress: parseAddress(argv.chain, argv["token-address"]), - tokenChain: toChainId(argv.chain), + tokenAddress: parseAddress(chain, argv["token-address"]), + tokenChain: toChainId(chain), decimals: argv["decimals"], symbol: argv["symbol"], name: argv["name"], @@ -263,7 +259,7 @@ export const builder = function (y: typeof yargs) { .option("chain", { alias: "c", describe: "Chain of Wormhole Relayer contract", - choices: Object.keys(CHAINS), + type: "string", demandOption: true, } as const) .option("delivery-provider-address", { @@ -274,13 +270,13 @@ export const builder = function (y: typeof yargs) { }); }, (argv) => { - assertChain(argv.chain); + const chain = chainToChain(argv.chain); const payload: WormholeRelayerSetDefaultDeliveryProvider = { module: "WormholeRelayer", type: "SetDefaultDeliveryProvider", - chain: toChainId(argv["chain"]), + chain: toChainId(chain), relayProviderAddress: parseAddress( - argv["chain"], + chain, argv["delivery-provider-address"] ), }; @@ -297,45 +293,43 @@ export const builder = function (y: typeof yargs) { }; export const handler = () => {}; -function parseAddress(chain: ChainName, address: string): string { - if (chain === "unset") { - throw Error("Chain unset"); - } else if (isEVMChain(chain)) { +function parseAddress(chain: Chain, address: string): string { + if (chainToPlatform(chain) === "Evm") { return "0x" + evm_address(address); - } else if (isCosmWasmChain(chain)) { + } else if (chainToPlatform(chain) === "Cosmwasm") { return "0x" + toHex(fromBech32(address).data).padStart(64, "0"); - } else if (chain === "solana" || chain === "pythnet") { + } else if (chain === "Solana" || chain === "Pythnet") { return "0x" + toHex(base58.decode(address)).padStart(64, "0"); - } else if (chain === "algorand") { + } else if (chain === "Algorand") { // TODO: is there a better native format for algorand? return "0x" + evm_address(address); - } else if (chain === "near") { + } else if (chain === "Near") { return "0x" + evm_address(address); - } else if (chain === "sui") { + } else if (chain === "Sui") { return "0x" + evm_address(address); - } else if (chain === "aptos") { + } else if (chain === "Aptos") { if (/^(0x)?[0-9a-fA-F]+$/.test(address)) { return "0x" + evm_address(address); } return sha3_256(Buffer.from(address)); // address is hash of fully qualified type - } else if (chain === "btc") { + } else if (chain === "Btc") { throw Error("btc is not supported yet"); - } else if (chain === "cosmoshub") { + } else if (chain === "Cosmoshub") { throw Error("cosmoshub is not supported yet"); - } else if (chain === "evmos") { + } else if (chain === "Evmos") { throw Error("evmos is not supported yet"); - } else if (chain === "kujira") { + } else if (chain === "Kujira") { throw Error("kujira is not supported yet"); - } else if (chain === "rootstock") { + } else if (chain === "Rootstock") { throw Error("rootstock is not supported yet"); } else { - impossible(chain); + throw Error(`Unsupported chain: ${chain}`); } } -function parseCodeAddress(chain: ChainName, address: string): string { - if (isCosmWasmChain(chain)) { +function parseCodeAddress(chain: Chain, address: string): string { + if (chainToPlatform(chain) === "Cosmwasm") { return "0x" + parseInt(address, 10).toString(16).padStart(64, "0"); } else { return parseAddress(chain, address); diff --git a/clients/js/src/cmds/info/chainId.ts b/clients/js/src/cmds/info/chainId.ts index 2c76a6c3a..0c5ca4194 100644 --- a/clients/js/src/cmds/info/chainId.ts +++ b/clients/js/src/cmds/info/chainId.ts @@ -1,9 +1,6 @@ -import { - assertChain, - coalesceChainId, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import yargs from "yargs"; import { CHAIN_ID_OR_NAME_CHOICES } from "../../consts"; +import { assertChain, toChain } from "@wormhole-foundation/sdk-base"; export const command = "chain-id "; export const desc = @@ -16,6 +13,6 @@ export const builder = (y: typeof yargs) => { } as const); }; export const handler = (argv: Awaited["argv"]>) => { - assertChain(argv.chain); - console.log(coalesceChainId(argv.chain)); + assertChain(toChain(argv.chain)); + console.log(toChain(argv.chain)); }; diff --git a/clients/js/src/cmds/info/contract.ts b/clients/js/src/cmds/info/contract.ts index 36a914e31..3a32069b8 100644 --- a/clients/js/src/cmds/info/contract.ts +++ b/clients/js/src/cmds/info/contract.ts @@ -1,13 +1,7 @@ -import { - CHAINS, - ChainName, - assertChain, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; -import { relayer } from "@certusone/wormhole-sdk"; import yargs from "yargs"; -import { CONTRACTS } from "../../consts"; -import { assertNetwork } from "../../utils"; import { impossible } from "../../vaa"; +import { contracts } from "@wormhole-foundation/sdk-base"; +import { chainToChain, getNetwork } from "../../utils"; export const command = "contract "; export const desc = "Print contract address"; @@ -20,7 +14,7 @@ export const builder = (y: typeof yargs) => } as const) .positional("chain", { describe: "Chain to query", - choices: Object.keys(CHAINS) as ChainName[], + type: "string", demandOption: true, } as const) .positional("module", { @@ -31,30 +25,27 @@ export const builder = (y: typeof yargs) => export const handler = async ( argv: Awaited["argv"]> ) => { - const network = argv.network.toUpperCase(); - assertNetwork(network); - const chain = argv.chain; - assertChain(chain); + const network = getNetwork(argv.network); + const chain = chainToChain(argv.chain); const module = argv["module"]; let addr: string | undefined; switch (module) { case "Core": - addr = CONTRACTS[network][chain].core; + addr = contracts.coreBridge.get(network, chain); break; case "NFTBridge": - const addresses = CONTRACTS[network][chain]; - if (!("nft_bridge" in addresses)) { + addr = contracts.nftBridge.get(network, chain); + if (!addr) { throw new Error(`NFTBridge not deployed on ${chain}`); } - addr = addresses.nft_bridge; break; case "TokenBridge": - addr = CONTRACTS[network][chain].token_bridge; + addr = contracts.tokenBridge.get(network, chain); break; case "WormholeRelayer": - addr = relayer.RELAYER_CONTRACTS[network][chain]?.wormholeRelayerAddress; + addr = contracts.relayer.get(network, chain); break; default: impossible(module); diff --git a/clients/js/src/cmds/info/emitter.ts b/clients/js/src/cmds/info/emitter.ts index b8d1dc5f5..5754fff4c 100644 --- a/clients/js/src/cmds/info/emitter.ts +++ b/clients/js/src/cmds/info/emitter.ts @@ -1,10 +1,6 @@ -import { - CHAINS, - ChainName, - assertChain, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import yargs from "yargs"; import { getEmitterAddress } from "../../emitter"; +import { assertChain, chains } from "@wormhole-foundation/sdk-base"; export const command = "emitter
"; export const desc = "Print address in emitter address format"; @@ -13,7 +9,7 @@ export const builder = (y: typeof yargs) => .positional("chain", { describe: "Chain to query", type: "string", - choices: Object.keys(CHAINS) as ChainName[], + choices: chains, demandOption: true, } as const) .positional("address", { diff --git a/clients/js/src/cmds/info/origin.ts b/clients/js/src/cmds/info/origin.ts index a1cdfe772..e2ed9fbd8 100644 --- a/clients/js/src/cmds/info/origin.ts +++ b/clients/js/src/cmds/info/origin.ts @@ -1,8 +1,9 @@ -import { tryUint8ArrayToNative } from "@certusone/wormhole-sdk/lib/esm/utils"; import yargs from "yargs"; import { getOriginalAsset } from "../../chains/generic"; import { CHAIN_ID_OR_NAME_CHOICES, RPC_OPTIONS } from "../../consts"; -import { assertNetwork } from "../../utils"; +import { getNetwork } from "../../utils"; +import { tryUint8ArrayToNative } from "../../sdk/array"; +import { toChain } from "@wormhole-foundation/sdk-base"; export const command = "origin
"; export const desc = `Print the origin chain and address of the asset that corresponds to the given chain and address.`; @@ -32,12 +33,11 @@ export const handler = async ( const consoleWarnTemp = console.warn; console.warn = () => {}; - const network = argv.network.toUpperCase(); - assertNetwork(network); + const network = getNetwork(argv.network); const res = await getOriginalAsset(argv.chain, network, argv.address); console.log({ ...res, - assetAddress: tryUint8ArrayToNative(res.assetAddress, res.chainId), + assetAddress: tryUint8ArrayToNative(res.assetAddress, toChain(res.chainId)), }); console.warn = consoleWarnTemp; diff --git a/clients/js/src/cmds/info/registrations.ts b/clients/js/src/cmds/info/registrations.ts index eab567ce9..b35b69628 100644 --- a/clients/js/src/cmds/info/registrations.ts +++ b/clients/js/src/cmds/info/registrations.ts @@ -3,16 +3,17 @@ // is defined in the consts.ts file in the SDK (to verify that all chains // are properly registered.) import yargs from "yargs"; -import { - assertChain, - ChainName, - CHAINS, - Contracts, - CONTRACTS, - isEVMChain, - isTerraChain, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import { getEmitterAddress } from "../../emitter"; +import { + Network, + assertChain, + chainToPlatform, + chains, + contracts, + toChain, +} from "@wormhole-foundation/sdk-base"; +import { chainToChain, getNetwork } from "../../utils"; +import { Chain } from "@wormhole-foundation/sdk"; export const command = "registrations "; export const desc = "Print chain registrations"; @@ -25,7 +26,7 @@ export const builder = (y: typeof yargs) => { } as const) .positional("chain", { describe: "Chain to query", - choices: Object.keys(CHAINS) as ChainName[], + type: "string", demandOption: true, } as const) .positional("module", { @@ -45,43 +46,39 @@ export const builder = (y: typeof yargs) => { export const handler = async ( argv: Awaited["argv"]> ) => { - assertChain(argv.chain); - const chain = argv.chain; - const network = argv.network.toUpperCase(); - if (network !== "MAINNET" && network !== "TESTNET" && network !== "DEVNET") { - throw Error(`Unknown network: ${network}`); - } + const chain = chainToChain(argv.chain); + const network = getNetwork(argv.network); const module = argv.module; if (module !== "TokenBridge" && module !== "NFTBridge") { throw Error(`Module must be TokenBridge or NFTBridge`); } let results: object; - if (chain === "solana") { + if (chain === "Solana") { const solana = require("../../solana"); results = await solana.queryRegistrationsSolana(network, module); - } else if (isEVMChain(chain)) { + } else if (chainToPlatform(chain) === "Evm") { const evm = require("../../evm"); results = await evm.queryRegistrationsEvm(network, chain, module); - } else if (isTerraChain(chain) || chain === "xpla") { + } else if (chain === "Terra" || chain === "Terra2" || chain === "Xpla") { const terra = require("../../terra"); results = await terra.queryRegistrationsTerra(network, chain, module); - } else if (chain === "injective") { + } else if (chain === "Injective") { const injective = require("../../injective"); results = await injective.queryRegistrationsInjective(network, module); - } else if (chain === "sei") { + } else if (chain === "Sei") { const sei = require("../../chains/sei/registrations"); results = await sei.queryRegistrationsSei(network, module); - } else if (chain === "sui") { + } else if (chain === "Sui") { const sui = require("../../chains/sui/registrations"); results = await sui.queryRegistrationsSui(network, module); - } else if (chain === "aptos") { + } else if (chain === "Aptos") { const aptos = require("../../aptos"); results = await aptos.queryRegistrationsAptos(network, module); } else { throw Error(`Command not supported for chain ${chain}`); } if (argv["verify"]) { - verifyRegistrations(network, chain as string, module, results); + verifyRegistrations(network, chain, module, results); } else { console.log(results); } @@ -89,8 +86,8 @@ export const handler = async ( // verifyRegistrations takes the results returned above and verifies them against the expected values in the consts file. async function verifyRegistrations( - network: "MAINNET" | "TESTNET" | "DEVNET", - chain: string, + network: Network, + chain: Chain, module: "NFTBridge" | "TokenBridge", input: Object ) { @@ -104,25 +101,21 @@ async function verifyRegistrations( // Loop over the chains and make sure everything is in our input, and the values match. const results: { [key: string]: string } = {}; - for (const chainStr in CHAINS) { - const thisChain = chainStr as ChainName; - if (thisChain === "unset" || thisChain === chain) { + for (const chainStr of chains) { + const thisChain = toChain(chainStr); + if (thisChain === chain) { continue; } - const contracts: Contracts = CONTRACTS[network][thisChain]; let expectedAddr: string | undefined; if (module === "TokenBridge") { - expectedAddr = contracts.token_bridge; + expectedAddr = contracts.tokenBridge.get(network, thisChain); } else { - expectedAddr = contracts.nft_bridge; + expectedAddr = contracts.nftBridge.get(network, thisChain); } if (expectedAddr !== undefined) { - expectedAddr = await getEmitterAddress( - thisChain as ChainName, - expectedAddr - ); + expectedAddr = await getEmitterAddress(thisChain, expectedAddr); if (!expectedAddr.startsWith("0x")) { expectedAddr = "0x" + expectedAddr; } diff --git a/clients/js/src/cmds/info/rpc.ts b/clients/js/src/cmds/info/rpc.ts index 030c6585a..feabb7c60 100644 --- a/clients/js/src/cmds/info/rpc.ts +++ b/clients/js/src/cmds/info/rpc.ts @@ -1,11 +1,6 @@ -import { - CHAINS, - ChainName, - assertChain, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import yargs from "yargs"; import { NETWORKS } from "../../consts"; -import { assertNetwork } from "../../utils"; +import { chainToChain, getNetwork } from "../../utils"; export const command = "rpc "; export const desc = "Print RPC address"; @@ -18,14 +13,12 @@ export const builder = (y: typeof yargs) => } as const) .positional("chain", { describe: "Chain to query", - choices: Object.keys(CHAINS) as ChainName[], + type: "string", demandOption: true, } as const); export const handler = async ( argv: Awaited["argv"]> ) => { - assertChain(argv.chain); - const network = argv.network.toUpperCase(); - assertNetwork(network); - console.log(NETWORKS[network][argv.chain].rpc); + const network = getNetwork(argv.network); + console.log(NETWORKS[network][chainToChain(argv.chain)].rpc); }; diff --git a/clients/js/src/cmds/info/wrapped.ts b/clients/js/src/cmds/info/wrapped.ts index 5a96eb849..a496ab385 100644 --- a/clients/js/src/cmds/info/wrapped.ts +++ b/clients/js/src/cmds/info/wrapped.ts @@ -1,8 +1,8 @@ import { assertChain } from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import yargs from "yargs"; import { getWrappedAssetAddress } from "../../chains/generic/getWrappedAssetAddress"; -import { CHAIN_ID_OR_NAME_CHOICES, RPC_OPTIONS } from "../../consts"; -import { assertNetwork } from "../../utils"; +import { RPC_OPTIONS } from "../../consts"; +import { chainToChain, getNetwork } from "../../utils"; export const command = "wrapped "; export const desc = @@ -11,7 +11,7 @@ export const builder = (y: typeof yargs) => y .positional("origin-chain", { describe: "Chain that wrapped asset came from", - choices: CHAIN_ID_OR_NAME_CHOICES, + type: "string", demandOption: true, } as const) .positional("origin-address", { @@ -21,7 +21,7 @@ export const builder = (y: typeof yargs) => }) .positional("target-chain", { describe: "Chain to query for wrapped asset address", - choices: CHAIN_ID_OR_NAME_CHOICES, + type: "string", demandOption: true, } as const) .option("network", { @@ -42,14 +42,13 @@ export const handler = async ( const consoleWarnTemp = console.warn; console.warn = () => {}; - const originChain = argv["origin-chain"]; + const originChain = chainToChain(argv["origin-chain"]); const originAddress = argv["origin-address"]; - const targetChain = argv["target-chain"]; - const network = argv.network.toUpperCase(); + const targetChain = chainToChain(argv["target-chain"]); + const network = getNetwork(argv.network); assertChain(originChain); assertChain(targetChain); - assertNetwork(network); console.log( await getWrappedAssetAddress( diff --git a/clients/js/src/cmds/near.ts b/clients/js/src/cmds/near.ts index 2a05aef14..7d61cb97a 100644 --- a/clients/js/src/cmds/near.ts +++ b/clients/js/src/cmds/near.ts @@ -4,8 +4,9 @@ import { Account, KeyPair, connect } from "near-api-js"; import { InMemoryKeyStore } from "near-api-js/lib/key_stores"; import { parseSeedPhrase } from "near-seed-phrase"; import yargs from "yargs"; -import { CONTRACTS, NETWORKS, NETWORK_OPTIONS, RPC_OPTIONS } from "../consts"; -import { assertNetwork } from "../utils"; +import { NETWORKS, NETWORK_OPTIONS, RPC_OPTIONS } from "../consts"; +import { contracts } from "@wormhole-foundation/sdk-base"; +import { getNetwork } from "../utils"; // Near utilities export const command = "near"; @@ -55,14 +56,12 @@ export const builder = function (y: typeof yargs) { demandOption: true, }), async (argv) => { - const network = argv.network.toUpperCase(); - assertNetwork(network); - const contracts = CONTRACTS[network].near; + const network = getNetwork(argv.network); const { rpc: defaultRpc, key: defaultKey, networkId, - } = NETWORKS[network].near; + } = NETWORKS[network].Near; const key = argv.key ?? @@ -80,12 +79,12 @@ export const builder = function (y: typeof yargs) { let target = argv.target; if (!argv.target && argv.module) { if (argv.module === "Core") { - target = contracts.core; + target = contracts.coreBridge(network, "Near"); console.log("Setting target to core"); } if (argv.module === "TokenBridge") { - target = contracts.token_bridge; + target = contracts.tokenBridge(network, "Near"); console.log("Setting target to token_bridge"); } } @@ -125,14 +124,12 @@ export const builder = function (y: typeof yargs) { demandOption: true, }), async (argv) => { - const network = argv.network.toUpperCase(); - assertNetwork(network); - const contracts = CONTRACTS[network].near; + const network = getNetwork(argv.network); const { rpc: defaultRpc, key: defaultKey, networkId, - } = NETWORKS[network].near; + } = NETWORKS[network].Near; const key = argv.key ?? @@ -150,12 +147,12 @@ export const builder = function (y: typeof yargs) { let target = argv.target; if (!argv.target && argv.module) { if (argv.module === "Core") { - target = contracts.core; + target = contracts.coreBridge(network, "Near"); console.log("Setting target to core"); } if (argv.module === "TokenBridge") { - target = contracts.token_bridge; + target = contracts.tokenBridge(network, "Near"); console.log("Setting target to token_bridge"); } } diff --git a/clients/js/src/cmds/status.ts b/clients/js/src/cmds/status.ts index b9a4d45e8..45549cabb 100644 --- a/clients/js/src/cmds/status.ts +++ b/clients/js/src/cmds/status.ts @@ -1,14 +1,9 @@ -import { - CHAINS, - ChainName, - assertChain, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; -import { relayer, Network } from "@certusone/wormhole-sdk"; -import yargs, { string } from "yargs"; -import { CONTRACTS, NETWORKS } from "../consts"; -import { assertNetwork } from "../utils"; -import { impossible } from "../vaa"; +import yargs from "yargs"; import { ethers } from "ethers"; +import { NETWORKS } from "../consts"; +import { chainToChain, getNetwork } from "../utils"; +import { Chain, assertChain, contracts } from "@wormhole-foundation/sdk-base"; +import { relayer } from "@certusone/wormhole-sdk"; export const command = "status "; export const desc = @@ -22,7 +17,7 @@ export const builder = (y: typeof yargs) => } as const) .positional("chain", { describe: "Source chain", - choices: Object.keys(CHAINS) as ChainName[], + type: "string", demandOption: true, } as const) .positional("tx", { @@ -33,34 +28,32 @@ export const builder = (y: typeof yargs) => export const handler = async ( argv: Awaited["argv"]> ) => { - const network = argv.network.toUpperCase(); - assertNetwork(network); - const chain = argv.chain; + const network = getNetwork(argv.network); + const chain = chainToChain(argv.chain); assertChain(chain); - const addr = - relayer.RELAYER_CONTRACTS[network][chain]?.wormholeRelayerAddress; + const addr = contracts.relayer.get(network, chain); if (!addr) { throw new Error(`Wormhole Relayer not deployed on ${chain} in ${network}`); } - const sourceRPC = NETWORKS[network as Network][chain as ChainName].rpc; + const sourceRPC = NETWORKS[network][chain].rpc; const sourceChainProvider = new ethers.providers.JsonRpcProvider(sourceRPC); - const targetChainProviders = new Map(); + const targetChainProviders = new Map(); for (const key in NETWORKS[network]) { targetChainProviders.set( - key as ChainName, - new ethers.providers.JsonRpcProvider( - NETWORKS[network as Network][key as ChainName].rpc - ) + key as Chain, + new ethers.providers.JsonRpcProvider(NETWORKS[network][key as Chain].rpc) ); } - const info = await relayer.getWormholeRelayerInfo(chain, argv.tx, { - environment: network, - sourceChainProvider, - targetChainProviders, - }); + // TODO: Convert this over to sdkv2 + // const info = await relayer.getWormholeRelayerInfo(chain, argv.tx, { + // environment: network, + // sourceChainProvider, + // targetChainProviders, + // }); + // console.log(relayer.stringifyWormholeRelayerInfo(info)); - console.log(relayer.stringifyWormholeRelayerInfo(info)); + console.log("Not implemented"); }; diff --git a/clients/js/src/cmds/submit.ts b/clients/js/src/cmds/submit.ts index b85a1cb5e..2c19ba8b7 100644 --- a/clients/js/src/cmds/submit.ts +++ b/clients/js/src/cmds/submit.ts @@ -1,15 +1,3 @@ -import { - assertChain, - ChainId, - ChainName, - CHAINS, - coalesceChainName, - Contracts, - CONTRACTS, - isEVMChain, - isTerraChain, - toChainName, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import yargs from "yargs"; import { execute_algorand } from "../algorand"; import { execute_aptos } from "../aptos"; @@ -21,11 +9,22 @@ import { execute_injective } from "../injective"; import { execute_near } from "../near"; import { execute_solana } from "../solana"; import { execute_terra } from "../terra"; -import { assertNetwork } from "../utils"; import { assertKnownPayload, impossible, parse, Payload, VAA } from "../vaa"; import { execute_xpla } from "../xpla"; import { NETWORKS } from "../consts"; -import { Network } from "../utils"; +import { chainToChain, getNetwork } from "../utils"; +import { + Chain, + Network, + PlatformToChains, + assertChain, + assertChainId, + chainIdToChain, + chainToPlatform, + chains, + contracts, + toChain, +} from "@wormhole-foundation/sdk"; export const command = "submit "; export const desc = "Execute a VAA"; @@ -39,7 +38,7 @@ export const builder = (y: typeof yargs) => .option("chain", { alias: "c", describe: "chain name", - choices: Object.keys(CHAINS) as ChainName[], + type: "string", demandOption: false, } as const) .option("network", NETWORK_OPTIONS) @@ -72,8 +71,7 @@ export const handler = async ( assertKnownPayload(parsed_vaa); console.log(parsed_vaa.payload); - const network = argv.network.toUpperCase(); - assertNetwork(network); + const network = getNetwork(argv.network); if (argv["all-chains"]) { if (argv.rpc) { @@ -104,22 +102,34 @@ export const handler = async ( // get VAA chain const vaa_chain_id = "chain" in parsed_vaa.payload ? parsed_vaa.payload.chain : 0; - assertChain(vaa_chain_id); - const vaa_chain = toChainName(vaa_chain_id); + + // if vaa_chain_id is 0, it means the chain is not specified in the VAA. + // We don't have a notion of an unsupported chain, so we don't want to just assert. + let vaa_chain; + if (vaa_chain_id !== 0) { + assertChainId(vaa_chain_id); + vaa_chain = chainIdToChain(vaa_chain_id); + } // get chain from command line arg - const cli_chain = argv.chain; + const cli_chain = argv.chain ? chainToChain(argv.chain) : argv.chain; - let chain: ChainName; + let chain: Chain; if (cli_chain !== undefined) { assertChain(cli_chain); - if (vaa_chain !== "unset" && cli_chain !== vaa_chain) { + if (vaa_chain && cli_chain !== vaa_chain) { throw Error( `Specified target chain (${cli_chain}) does not match VAA target chain (${vaa_chain})` ); } - chain = coalesceChainName(cli_chain); + chain = toChain(cli_chain); } else { + if (!vaa_chain) { + throw Error( + `VAA does not specify a target chain and one was not provided, please specify one with --chain or -c` + ); + } + assertChain(vaa_chain); chain = vaa_chain; } @@ -139,75 +149,59 @@ async function executeSubmit( parsedVaa: VAA, buf: Buffer, network: Network, - chain: ChainName, + chain: Chain, rpc: string | undefined, contractAddress: string | undefined ) { - if (chain === "unset") { - throw Error( - "This VAA does not specify the target chain, please provide it by hand using the '--chain' flag." - ); - } else if (isEVMChain(chain)) { + if (chainToPlatform(chain) === "Evm") { await execute_evm( parsedVaa.payload, buf, network, - chain, + chain as PlatformToChains<"Evm">, contractAddress, rpc ); - } else if (isTerraChain(chain)) { + } else if (chain === "Terra" || chain === "Terra2") { await execute_terra(parsedVaa.payload, buf, network, chain); - } else if (chain === "solana" || chain === "pythnet") { + } else if (chain === "Solana" || chain === "Pythnet") { await execute_solana(parsedVaa, buf, network, chain); - } else if (chain === "algorand") { + } else if (chain === "Algorand") { await execute_algorand( parsedVaa.payload, new Uint8Array(Buffer.from(vaaHex, "hex")), network ); - } else if (chain === "near") { + } else if (chain === "Near") { await execute_near(parsedVaa.payload, vaaHex, network); - } else if (chain === "injective") { + } else if (chain === "Injective") { await execute_injective(parsedVaa.payload, buf, network); - } else if (chain === "xpla") { + } else if (chain === "Xpla") { await execute_xpla(parsedVaa.payload, buf, network); - } else if (chain === "sei") { + } else if (chain === "Sei") { await submitSei(parsedVaa.payload, buf, network, rpc); - } else if (chain === "osmosis") { + } else if (chain === "Osmosis") { throw Error("OSMOSIS is not supported yet"); - } else if (chain === "sui") { + } else if (chain === "Sui") { await submitSui(parsedVaa.payload, buf, network, rpc); - } else if (chain === "aptos") { + } else if (chain === "Aptos") { await execute_aptos(parsedVaa.payload, buf, network, contractAddress, rpc); - } else if (chain === "wormchain") { + } else if (chain === "Wormchain") { throw Error("Wormchain is not supported yet"); - } else if (chain === "btc") { + } else if (chain === "Btc") { throw Error("btc is not supported yet"); - } else if (chain === "cosmoshub") { + } else if (chain === "Cosmoshub") { throw Error("Cosmoshub is not supported yet"); - } else if (chain === "evmos") { + } else if (chain === "Evmos") { throw Error("Evmos is not supported yet"); - } else if (chain === "kujira") { + } else if (chain === "Kujira") { throw Error("kujira is not supported yet"); - } else if (chain === "neutron") { + } else if (chain === "Neutron") { throw Error("neutron is not supported yet"); - } else if (chain === "celestia") { + } else if (chain === "Celestia") { throw Error("celestia is not supported yet"); - } else if (chain === "stargaze") { - throw Error("stargaze is not supported yet"); - } else if (chain === "seda") { - throw Error("seda is not supported yet"); - } else if (chain === "dymension") { - throw Error("dymension is not supported yet"); - } else if (chain === "provenance") { - throw Error("provenance is not supported yet"); - } else if (chain === "rootstock") { - throw Error("rootstock is not supported yet"); } else { - // If you get a type error here, hover over `chain`'s type and it tells you - // which cases are not handled - impossible(chain); + throw new Error(`Unsupported chain: ${chain}`); } } @@ -217,24 +211,19 @@ async function submitToAll( buf: Buffer, network: Network ) { - let skip_chain: ChainName = "unset"; + let skip_chain: Chain; if (parsedVaa.payload.type === "RegisterChain") { - skip_chain = toChainName(parsedVaa.payload.emitterChain as ChainId); + skip_chain = toChain(parsedVaa.payload.emitterChain); } else if (parsedVaa.payload.type === "AttestMeta") { - skip_chain = toChainName(parsedVaa.payload.tokenChain as ChainId); + skip_chain = toChain(parsedVaa.payload.tokenChain); } else { throw Error( `Invalid VAA payload type (${parsedVaa.payload.type}), only "RegisterChain" and "AttestMeta" are supported with --all-chains` ); } - for (const chainStr in CHAINS) { - let chain = chainStr as ChainName; - if (chain === "unset") { - continue; - } + for (const chain of chains) { const n = NETWORKS[network][chain]; - const contracts: Contracts = CONTRACTS[network][chain]; if (chain == skip_chain) { console.log(`Skipping ${chain} because it's the origin chain`); continue; @@ -243,15 +232,11 @@ async function submitToAll( console.log(`Skipping ${chain} because the rpc is not defined`); continue; } - if (!contracts) { - console.log( - `Skipping ${chain} because the contract entry is not defined` - ); - return true; - } if ( - (parsedVaa.payload.module === "TokenBridge" && !contracts.token_bridge) || - (parsedVaa.payload.module === "NFTBridge" && !contracts.nft_bridge) + (parsedVaa.payload.module === "TokenBridge" && + !contracts.tokenBridge.get(network, chain)) || + (parsedVaa.payload.module === "NFTBridge" && + !contracts.nftBridge.get(network, chain)) ) { console.log(`Skipping ${chain} because the contract is not defined`); continue; diff --git a/clients/js/src/cmds/sui/build.ts b/clients/js/src/cmds/sui/build.ts index 3ebf90dd9..651514d4b 100644 --- a/clients/js/src/cmds/sui/build.ts +++ b/clients/js/src/cmds/sui/build.ts @@ -1,14 +1,10 @@ import path from "path"; import yargs from "yargs"; import { buildCoin, getProvider } from "../../chains/sui"; -import { - CONTRACTS, - NETWORKS, - NETWORK_OPTIONS, - RPC_OPTIONS, -} from "../../consts"; -import { assertNetwork, checkBinary } from "../../utils"; +import { NETWORKS, NETWORK_OPTIONS, RPC_OPTIONS } from "../../consts"; +import { checkBinary, getNetwork } from "../../utils"; import { YargsAddCommandsFn } from "../Yargs"; +import { contracts } from "@wormhole-foundation/sdk"; const README_URL = "https://github.com/wormhole-foundation/wormhole/blob/main/sui/README.md"; @@ -58,17 +54,16 @@ export const addBuildCommands: YargsAddCommandsFn = (y: typeof yargs) => async (argv) => { checkBinary("sui", README_URL); - const network = argv.network.toUpperCase(); - assertNetwork(network); + const network = getNetwork(argv.network); const decimals = argv["decimals"]; const version = argv["version-struct"]; const packagePath = argv["package-path"] ?? path.resolve(__dirname, "../../../../../sui/examples"); const coreBridgeStateObjectId = - argv["wormhole-state"] ?? CONTRACTS[network].sui.core; + argv["wormhole-state"] ?? contracts.coreBridge(network, "Sui"); const tokenBridgeStateObjectId = - argv["token-bridge-state"] ?? CONTRACTS[network].sui.token_bridge; + argv["token-bridge-state"] ?? contracts.tokenBridge(network, "Sui"); if (!coreBridgeStateObjectId) { throw new Error( @@ -84,7 +79,7 @@ export const addBuildCommands: YargsAddCommandsFn = (y: typeof yargs) => const provider = getProvider( network, - argv.rpc ?? NETWORKS[network].sui.rpc + argv.rpc ?? NETWORKS[network].Sui.rpc ); const build = await buildCoin( provider, diff --git a/clients/js/src/cmds/sui/deploy.ts b/clients/js/src/cmds/sui/deploy.ts index e620b1656..e822ceb29 100644 --- a/clients/js/src/cmds/sui/deploy.ts +++ b/clients/js/src/cmds/sui/deploy.ts @@ -17,8 +17,9 @@ import { PRIVATE_KEY_OPTIONS, RPC_OPTIONS, } from "../../consts"; -import { Network, assertNetwork, checkBinary } from "../../utils"; +import { checkBinary, getNetwork } from "../../utils"; import { YargsAddCommandsFn } from "../Yargs"; +import { Network } from "@wormhole-foundation/sdk"; const README_URL = "https://github.com/wormhole-foundation/wormhole/blob/main/sui/README.md"; @@ -42,8 +43,7 @@ export const addDeployCommands: YargsAddCommandsFn = (y: typeof yargs) => checkBinary("sui", README_URL); const packageDir = argv["package-dir"]; - const network = argv.network.toUpperCase(); - assertNetwork(network); + const network = getNetwork(argv.network); const debug = argv.debug ?? false; const privateKey = argv["private-key"]; const rpc = argv.rpc; @@ -66,7 +66,7 @@ export const deploy = async ( rpc?: string, privateKey?: string ): Promise => { - rpc = rpc ?? NETWORKS[network].sui.rpc; + rpc = rpc ?? NETWORKS[network].Sui.rpc; const provider = getProvider(network, rpc); const signer = getSigner(provider, network, privateKey); diff --git a/clients/js/src/cmds/sui/init.ts b/clients/js/src/cmds/sui/init.ts index 4d3f81603..0a7e231e9 100644 --- a/clients/js/src/cmds/sui/init.ts +++ b/clients/js/src/cmds/sui/init.ts @@ -22,8 +22,9 @@ import { PRIVATE_KEY_OPTIONS, RPC_OPTIONS, } from "../../consts"; -import { Network, assertNetwork } from "../../utils"; import { YargsAddCommandsFn } from "../Yargs"; +import { getNetwork } from "../../utils"; +import { Network } from "@wormhole-foundation/sdk"; export const addInitCommands: YargsAddCommandsFn = (y: typeof yargs) => y @@ -48,8 +49,7 @@ export const addInitCommands: YargsAddCommandsFn = (y: typeof yargs) => .option("private-key", PRIVATE_KEY_OPTIONS) .option("rpc", RPC_OPTIONS), async (argv) => { - const network = argv.network.toUpperCase(); - assertNetwork(network); + const network = getNetwork(argv.network); const packageId = argv["package-id"]; const wormholeStateObjectId = argv["wormhole-state"]; const privateKey = argv["private-key"]; @@ -108,14 +108,13 @@ export const addInitCommands: YargsAddCommandsFn = (y: typeof yargs) => .option("private-key", PRIVATE_KEY_OPTIONS) .option("rpc", RPC_OPTIONS), async (argv) => { - const network = argv.network.toUpperCase(); - assertNetwork(network); + const network = getNetwork(argv.network); const packageId = argv["package-id"]; const wormholeStateObjectId = argv["wormhole-state"]; const governanceChainId = argv["governance-chain-id"]; const governanceContract = argv["governance-address"]; const privateKey = argv["private-key"]; - const rpc = argv.rpc ?? NETWORKS[network].sui.rpc; + const rpc = argv.rpc ?? NETWORKS[network].Sui.rpc; const res = await initTokenBridge( network, @@ -180,8 +179,7 @@ export const addInitCommands: YargsAddCommandsFn = (y: typeof yargs) => .option("private-key", PRIVATE_KEY_OPTIONS) .option("rpc", RPC_OPTIONS), async (argv) => { - const network = argv.network.toUpperCase(); - assertNetwork(network); + const network = getNetwork(argv.network); const packageId = argv["package-id"]; const initialGuardian = argv["initial-guardian"]; const debug = argv.debug ?? false; @@ -222,7 +220,7 @@ export const initExampleApp = async ( rpc?: string, privateKey?: string ): Promise => { - rpc = rpc ?? NETWORKS[network].sui.rpc; + rpc = rpc ?? NETWORKS[network].Sui.rpc; const provider = getProvider(network, rpc); const signer = getSigner(provider, network, privateKey); @@ -244,7 +242,7 @@ export const initTokenBridge = async ( rpc?: string, privateKey?: string ): Promise => { - rpc = rpc ?? NETWORKS[network].sui.rpc; + rpc = rpc ?? NETWORKS[network].Sui.rpc; const provider = getProvider(network, rpc); const signer = getSigner(provider, network, privateKey); const owner = await signer.getAddress(); @@ -307,7 +305,7 @@ export const initWormhole = async ( rpc?: string, privateKey?: string ): Promise => { - rpc = rpc ?? NETWORKS[network].sui.rpc; + rpc = rpc ?? NETWORKS[network].Sui.rpc; const provider = getProvider(network, rpc); const signer = getSigner(provider, network, privateKey); const owner = await signer.getAddress(); diff --git a/clients/js/src/cmds/sui/publishMessage.ts b/clients/js/src/cmds/sui/publishMessage.ts index 064709d24..0722ef210 100644 --- a/clients/js/src/cmds/sui/publishMessage.ts +++ b/clients/js/src/cmds/sui/publishMessage.ts @@ -13,8 +13,8 @@ import { setMaxGasBudgetDevnet, } from "../../chains/sui"; import { NETWORK_OPTIONS, NETWORKS, RPC_OPTIONS } from "../../consts"; -import { assertNetwork } from "../../utils"; import { YargsAddCommandsFn } from "../Yargs"; +import { getNetwork } from "../../utils"; export const addPublishMessageCommands: YargsAddCommandsFn = ( y: typeof yargs @@ -57,14 +57,13 @@ export const addPublishMessageCommands: YargsAddCommandsFn = ( }) .option("rpc", RPC_OPTIONS), async (argv) => { - const network = argv.network.toUpperCase(); - assertNetwork(network); + const network = getNetwork(argv.network); const packageId = argv["package-id"]; const stateObjectId = argv.state; const wormholeStateObjectId = argv["wormhole-state"]; const message = argv.message; const privateKey = argv["private-key"]; - const rpc = argv.rpc ?? NETWORKS[network].sui.rpc; + const rpc = argv.rpc ?? NETWORKS[network].Sui.rpc; const provider = getProvider(network, rpc); const signer = getSigner(provider, network, privateKey); diff --git a/clients/js/src/cmds/sui/setup.ts b/clients/js/src/cmds/sui/setup.ts index 380b99af9..e73dcba65 100644 --- a/clients/js/src/cmds/sui/setup.ts +++ b/clients/js/src/cmds/sui/setup.ts @@ -1,8 +1,3 @@ -import { - ChainId, - ChainName, - coalesceChainName, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import { parseTokenBridgeRegisterChainVaa } from "@certusone/wormhole-sdk/lib/esm/vaa/tokenBridge"; import { JsonRpcProvider, @@ -36,6 +31,7 @@ import { import { YargsAddCommandsFn } from "../Yargs"; import { deploy } from "./deploy"; import { initExampleApp, initTokenBridge, initWormhole } from "./init"; +import { Chain, chainIdToChain, toChainId } from "@wormhole-foundation/sdk"; export const addSetupCommands: YargsAddCommandsFn = (y: typeof yargs) => y.command( @@ -51,9 +47,9 @@ export const addSetupCommands: YargsAddCommandsFn = (y: typeof yargs) => }) .option("rpc", RPC_OPTIONS), async (argv) => { - const network = "DEVNET"; + const network = "Devnet"; const privateKey = argv["private-key"]; - const rpc = argv.rpc ?? NETWORKS[network].sui.rpc; + const rpc = argv.rpc ?? NETWORKS[network].Sui.rpc; // Deploy core bridge console.log("[1/4] Deploying core bridge..."); @@ -200,15 +196,15 @@ export const addSetupCommands: YargsAddCommandsFn = (y: typeof yargs) => dotenv.config({ path: envPath }); const tx = new TransactionBlock(); - setMaxGasBudgetDevnet("DEVNET", tx); - const registrations: { chain: ChainName; module: string }[] = []; + setMaxGasBudgetDevnet("Devnet", tx); + const registrations: { chain: Chain; module: string }[] = []; for (const key in process.env) { if (/^REGISTER_(.+)_TOKEN_BRIDGE_VAA$/.test(key)) { // Get VAA info const vaa = Buffer.from(String(process.env[key]), "hex"); const { foreignChain, module } = parseTokenBridgeRegisterChainVaa(vaa); - const chain = coalesceChainName(foreignChain as ChainId); + const chain = chainIdToChain(toChainId(foreignChain)); registrations.push({ chain, module }); // Register diff --git a/clients/js/src/cmds/sui/utils.ts b/clients/js/src/cmds/sui/utils.ts index 6919781b7..1027a162b 100644 --- a/clients/js/src/cmds/sui/utils.ts +++ b/clients/js/src/cmds/sui/utils.ts @@ -2,8 +2,8 @@ import { PaginatedObjectsResponse } from "@mysten/sui.js"; import yargs from "yargs"; import { getPackageId, getProvider } from "../../chains/sui"; import { NETWORKS, NETWORK_OPTIONS, RPC_OPTIONS } from "../../consts"; -import { assertNetwork } from "../../utils"; import { YargsAddCommandsFn } from "../Yargs"; +import { getNetwork } from "../../utils"; export const addUtilsCommands: YargsAddCommandsFn = (y: typeof yargs) => y @@ -20,9 +20,8 @@ export const addUtilsCommands: YargsAddCommandsFn = (y: typeof yargs) => .option("network", NETWORK_OPTIONS) .option("rpc", RPC_OPTIONS), async (argv) => { - const network = argv.network.toUpperCase(); - assertNetwork(network); - const rpc = argv.rpc ?? NETWORKS[network].sui.rpc; + const network = getNetwork(argv.network); + const rpc = argv.rpc ?? NETWORKS[network].Sui.rpc; const owner = argv.owner; const provider = getProvider(network, rpc); @@ -61,9 +60,8 @@ export const addUtilsCommands: YargsAddCommandsFn = (y: typeof yargs) => .option("network", NETWORK_OPTIONS) .option("rpc", RPC_OPTIONS), async (argv) => { - const network = argv.network.toUpperCase(); - assertNetwork(network); - const rpc = argv.rpc ?? NETWORKS[network].sui.rpc; + const network = getNetwork(argv.network); + const rpc = argv.rpc ?? NETWORKS[network].Sui.rpc; const provider = getProvider(network, rpc); console.log(await getPackageId(provider, argv["state-object-id"])); } @@ -89,9 +87,8 @@ export const addUtilsCommands: YargsAddCommandsFn = (y: typeof yargs) => } as const) .option("rpc", RPC_OPTIONS), async (argv) => { - const network = argv.network.toUpperCase(); - assertNetwork(network); - const rpc = argv.rpc ?? NETWORKS[network].sui.rpc; + const network = getNetwork(argv.network); + const rpc = argv.rpc ?? NETWORKS[network].Sui.rpc; const provider = getProvider(network, rpc); console.log( JSON.stringify( diff --git a/clients/js/src/cmds/transfer.ts b/clients/js/src/cmds/transfer.ts index bb3df464c..c37fdce18 100644 --- a/clients/js/src/cmds/transfer.ts +++ b/clients/js/src/cmds/transfer.ts @@ -1,13 +1,6 @@ -import { - isCosmWasmChain, - isEVMChain, - isTerraChain, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import yargs from "yargs"; -import { impossible } from "../vaa"; import { transferEVM } from "../evm"; import { CHAIN_NAME_CHOICES, NETWORK_OPTIONS, NETWORKS } from "../consts"; -import { assertNetwork } from "../utils"; import { transferTerra } from "../terra"; import { transferInjective } from "../injective"; import { transferXpla } from "../xpla"; @@ -16,6 +9,13 @@ import { transferAlgorand } from "../algorand"; import { transferNear } from "../near"; import { transferSui } from "../chains/sui/transfer"; import { transferAptos } from "../aptos"; +import { + Chain, + PlatformToChains, + chainToPlatform, + toChain, +} from "@wormhole-foundation/sdk-base"; +import { chainToChain, getNetwork } from "../utils"; export const command = "transfer"; export const desc = "Transfer a token"; @@ -23,12 +23,12 @@ export const builder = (y: typeof yargs) => y .option("src-chain", { describe: "source chain", - choices: CHAIN_NAME_CHOICES, + type: "string", demandOption: true, }) .option("dst-chain", { describe: "destination chain", - choices: CHAIN_NAME_CHOICES, + type: "string", demandOption: true, }) .option("dst-addr", { @@ -58,16 +58,10 @@ export const builder = (y: typeof yargs) => export const handler = async ( argv: Awaited["argv"]> ) => { - const srcChain = argv["src-chain"]; - const dstChain = argv["dst-chain"]; - if (srcChain === "unset") { - throw new Error("source chain is unset"); - } - if (dstChain === "unset") { - throw new Error("destination chain is unset"); - } + const srcChain: Chain = chainToChain(argv["src-chain"]); + const dstChain: Chain = chainToChain(argv["dst-chain"]); // TODO: support transfers to sei - if (dstChain === "sei") { + if (dstChain === "Sei") { throw new Error("transfer to sei currently unsupported"); } if (srcChain === dstChain) { @@ -78,19 +72,18 @@ export const handler = async ( throw new Error("amount must be greater than 0"); } const tokenAddr = argv["token-addr"]; - if (tokenAddr === "native" && isCosmWasmChain(srcChain)) { + if (tokenAddr === "native" && chainToPlatform(srcChain) === "Cosmwasm") { throw new Error(`token-addr must be specified for ${srcChain}`); } const dstAddr = argv["dst-addr"]; - const network = argv.network.toUpperCase(); - assertNetwork(network); - const rpc = argv.rpc ?? NETWORKS[network][srcChain].rpc; + const network = getNetwork(argv.network); + const rpc = argv.rpc ?? NETWORKS[network][toChain(srcChain)].rpc; if (!rpc) { throw new Error(`No ${network} rpc defined for ${srcChain}`); } - if (isEVMChain(srcChain)) { + if (chainToPlatform(srcChain) === "Evm") { await transferEVM( - srcChain, + srcChain as PlatformToChains<"Evm">, dstChain, dstAddr, tokenAddr, @@ -98,7 +91,7 @@ export const handler = async ( network, rpc ); - } else if (isTerraChain(srcChain)) { + } else if (srcChain === "Terra" || srcChain === "Terra2") { await transferTerra( srcChain, dstChain, @@ -108,7 +101,7 @@ export const handler = async ( network, rpc ); - } else if (srcChain === "solana" || srcChain === "pythnet") { + } else if (srcChain === "Solana" || srcChain === "Pythnet") { await transferSolana( srcChain, dstChain, @@ -118,49 +111,37 @@ export const handler = async ( network, rpc ); - } else if (srcChain === "algorand") { + } else if (srcChain === "Algorand") { await transferAlgorand(dstChain, dstAddr, tokenAddr, amount, network, rpc); - } else if (srcChain === "near") { + } else if (srcChain === "Near") { await transferNear(dstChain, dstAddr, tokenAddr, amount, network, rpc); - } else if (srcChain === "injective") { + } else if (srcChain === "Injective") { await transferInjective(dstChain, dstAddr, tokenAddr, amount, network, rpc); - } else if (srcChain === "xpla") { + } else if (srcChain === "Xpla") { await transferXpla(dstChain, dstAddr, tokenAddr, amount, network, rpc); - } else if (srcChain === "sei") { + } else if (srcChain === "Sei") { throw new Error("sei is not supported yet"); - } else if (srcChain === "osmosis") { + } else if (srcChain === "Osmosis") { throw Error("OSMOSIS is not supported yet"); - } else if (srcChain === "sui") { + } else if (srcChain === "Sui") { await transferSui(dstChain, dstAddr, tokenAddr, amount, network, rpc); - } else if (srcChain === "aptos") { + } else if (srcChain === "Aptos") { await transferAptos(dstChain, dstAddr, tokenAddr, amount, network, rpc); - } else if (srcChain === "wormchain") { + } else if (srcChain === "Wormchain") { throw Error("Wormchain is not supported yet"); - } else if (srcChain === "btc") { + } else if (srcChain === "Btc") { throw Error("btc is not supported yet"); - } else if (srcChain === "cosmoshub") { + } else if (srcChain === "Cosmoshub") { throw Error("cosmoshub is not supported yet"); - } else if (srcChain === "evmos") { + } else if (srcChain === "Evmos") { throw Error("evmos is not supported yet"); - } else if (srcChain === "kujira") { + } else if (srcChain === "Kujira") { throw Error("kujira is not supported yet"); - } else if (srcChain === "neutron") { + } else if (srcChain === "Neutron") { throw Error("neutron is not supported yet"); - } else if (srcChain === "celestia") { + } else if (srcChain === "Celestia") { throw Error("celestia is not supported yet"); - } else if (srcChain === "stargaze") { - throw Error("stargaze is not supported yet"); - } else if (srcChain === "seda") { - throw Error("seda is not supported yet"); - } else if (srcChain === "dymension") { - throw Error("dymension is not supported yet"); - } else if (srcChain === "provenance") { - throw Error("provenance is not supported yet"); - } else if (srcChain === "rootstock") { - throw Error("rootstock is not supported yet"); } else { - // If you get a type error here, hover over `chain`'s type and it tells you - // which cases are not handled - impossible(srcChain); + throw new Error(`${srcChain} is not supported yet`); } }; diff --git a/clients/js/src/cmds/verifyVaa.ts b/clients/js/src/cmds/verifyVaa.ts index 07700a18e..21265c6be 100644 --- a/clients/js/src/cmds/verifyVaa.ts +++ b/clients/js/src/cmds/verifyVaa.ts @@ -1,11 +1,11 @@ // The verify-vaa command invokes the parseAndVerifyVM method on the core contract on Ethereum to verify the specified VAA. import { Implementation__factory } from "@certusone/wormhole-sdk/lib/esm/ethers-contracts"; -import { CONTRACTS } from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import { ethers } from "ethers"; import yargs from "yargs"; import { NETWORKS, NETWORK_OPTIONS } from "../consts"; -import { assertNetwork } from "../utils"; +import { getNetwork } from "../utils"; +import { contracts } from "@wormhole-foundation/sdk"; export const command = "verify-vaa"; export const desc = "Verifies a VAA by querying the core contract on Ethereum"; @@ -21,17 +21,16 @@ export const builder = (y: typeof yargs) => export const handler = async ( argv: Awaited["argv"]> ) => { - const network = argv.network.toUpperCase(); - assertNetwork(network); + const network = getNetwork(argv.network); const buf = Buffer.from(String(argv.vaa), "hex"); - const contract_address = CONTRACTS[network].ethereum.core; + const contract_address = contracts.coreBridge(network, "Ethereum"); if (!contract_address) { throw Error(`Unknown core contract on ${network} for ethereum`); } const provider = new ethers.providers.JsonRpcProvider( - NETWORKS[network].ethereum.rpc + NETWORKS[network].Ethereum.rpc ); const contract = Implementation__factory.connect(contract_address, provider); const result = await contract.parseAndVerifyVM(buf); diff --git a/clients/js/src/consts/contracts.ts b/clients/js/src/consts/contracts.ts index 69efe7bce..831b09d47 100644 --- a/clients/js/src/consts/contracts.ts +++ b/clients/js/src/consts/contracts.ts @@ -1,60 +1,6 @@ -import { - CHAIN_ID_SOLANA, - CONTRACTS as SDK_CONTRACTS, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; +import { chainToChainId } from "@wormhole-foundation/sdk-base"; -const OVERRIDES = { - MAINNET: { - sui: { - core: "0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c", - token_bridge: - "0xc57508ee0d4595e5a8728974a4a93a787d38f339757230d441e895422c07aba9", - }, - aptos: { - token_bridge: - "0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f", - core: "0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625", - nft_bridge: - "0x1bdffae984043833ed7fe223f7af7a3f8902d04129b14f801823e64827da7130", - }, - }, - TESTNET: { - sui: { - core: "0x31358d198147da50db32eda2562951d53973a0c0ad5ed738e9b17d88b213d790", - token_bridge: - "0x6fb10cdb7aa299e9a4308752dadecb049ff55a892de92992a1edbd7912b3d6da", - }, - aptos: { - token_bridge: - "0x576410486a2da45eee6c949c995670112ddf2fbeedab20350d506328eefc9d4f", - core: "0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625", - nft_bridge: undefined, - }, - }, - DEVNET: { - sui: { - core: "0x12253210c90f89e7a8525e6c52d41309ff5bfb31f43f561b5fe6f50cd72f9668", // wormhole module State object ID - token_bridge: - "0x830ed228c6f1bcb40003bb49af3277df2cbf933d63a6bcdcb0ba4580a1a7654e", // token_bridge module State object ID - }, - aptos: { - token_bridge: - "0x84a5f374d29fc77e370014dce4fd6a55b58ad608de8074b0be5571701724da31", - core: "0xde0036a9600559e295d5f6802ef6f3f802f510366e0c23912b0655d972166017", - nft_bridge: - "0x46da3d4c569388af61f951bdd1153f4c875f90c2991f6b2d0a38e2161a40852c", - }, - }, -}; - -// TODO(aki): move this to SDK at some point -export const CONTRACTS = { - MAINNET: { ...SDK_CONTRACTS.MAINNET, ...OVERRIDES.MAINNET }, - TESTNET: { ...SDK_CONTRACTS.TESTNET, ...OVERRIDES.TESTNET }, - DEVNET: { ...SDK_CONTRACTS.DEVNET, ...OVERRIDES.DEVNET }, -}; - -export const GOVERNANCE_CHAIN = CHAIN_ID_SOLANA; +export const GOVERNANCE_CHAIN = chainToChainId("Solana"); export const GOVERNANCE_EMITTER = "0000000000000000000000000000000000000000000000000000000000000004"; export const INITIAL_GUARDIAN_DEVNET = diff --git a/clients/js/src/consts/networks.ts b/clients/js/src/consts/networks.ts index 8fb53b7fc..544817cda 100644 --- a/clients/js/src/consts/networks.ts +++ b/clients/js/src/consts/networks.ts @@ -1,4 +1,4 @@ -import { ChainName } from "@certusone/wormhole-sdk/lib/esm/utils/consts"; +import { Chain } from "@wormhole-foundation/sdk-base"; import { config } from "dotenv"; import { homedir } from "os"; @@ -12,785 +12,773 @@ export type Connection = { }; export type ChainConnections = { - [chain in ChainName]: Connection; + [chain in Chain]: Connection; }; -const MAINNET = { - unset: { - rpc: undefined, - key: undefined, - }, - solana: { +const Mainnet = { + Solana: { rpc: "https://api.mainnet-beta.solana.com", key: getEnvVar("SOLANA_KEY"), }, - terra: { + Terra: { rpc: "https://lcd.terra.dev", chain_id: "columbus-5", key: getEnvVar("TERRA_MNEMONIC"), }, - ethereum: { + Ethereum: { rpc: `https://rpc.ankr.com/eth`, key: getEnvVar("ETH_KEY"), chain_id: 1, }, - bsc: { + Bsc: { rpc: "https://bsc-dataseed.binance.org/", key: getEnvVar("ETH_KEY"), chain_id: 56, }, - polygon: { + Polygon: { rpc: "https://rpc.ankr.com/polygon", key: getEnvVar("ETH_KEY"), chain_id: 137, }, - avalanche: { + Avalanche: { rpc: "https://rpc.ankr.com/avalanche", key: getEnvVar("ETH_KEY"), chain_id: 43114, }, - algorand: { + Algorand: { rpc: "https://mainnet-api.algonode.cloud", key: getEnvVar("ALGORAND_KEY"), }, - oasis: { + Oasis: { rpc: "https://emerald.oasis.dev/", key: getEnvVar("ETH_KEY"), chain_id: 42262, }, - fantom: { + Fantom: { rpc: "https://rpc.ftm.tools/", key: getEnvVar("ETH_KEY"), chain_id: 250, }, - aurora: { + Aurora: { rpc: "https://mainnet.aurora.dev", key: getEnvVar("ETH_KEY"), chain_id: 1313161554, }, - karura: { + Karura: { rpc: "https://eth-rpc-karura.aca-api.network/", key: getEnvVar("ETH_KEY"), chain_id: 686, }, - acala: { + Acala: { rpc: "https://eth-rpc-acala.aca-api.network/", key: getEnvVar("ETH_KEY"), chain_id: 787, }, - klaytn: { + Klaytn: { rpc: "https://public-node-api.klaytnapi.com/v1/cypress", key: getEnvVar("ETH_KEY"), chain_id: 8217, }, - celo: { + Celo: { rpc: "https://forno.celo.org", key: getEnvVar("ETH_KEY"), chain_id: 42220, }, - near: { + Near: { rpc: "https://rpc.mainnet.near.org", key: getEnvVar("NEAR_KEY"), networkId: "mainnet", }, - injective: { + Injective: { rpc: "http://sentry0.injective.network:26657", chain_id: "injective-1", key: getEnvVar("INJECTIVE_KEY"), }, - osmosis: { + Osmosis: { rpc: undefined, key: undefined, }, - aptos: { + Aptos: { rpc: "https://fullnode.mainnet.aptoslabs.com/v1", key: getEnvVar("APTOS_KEY"), }, - sui: { + Sui: { rpc: "https://fullnode.mainnet.sui.io:443", key: getEnvVar("SUI_KEY"), }, - pythnet: { + Pythnet: { rpc: "http://api.pythnet.pyth.network:8899/", key: getEnvVar("SOLANA_KEY"), }, - xpla: { + Xpla: { rpc: "https://dimension-lcd.xpla.dev", chain_id: "dimension_37-1", key: getEnvVar("XPLA_KEY"), }, - btc: { + Btc: { rpc: undefined, key: undefined, }, - wormchain: { + Wormchain: { rpc: undefined, key: undefined, }, - moonbeam: { + Moonbeam: { rpc: "https://rpc.api.moonbeam.network", key: getEnvVar("ETH_KEY"), chain_id: 1284, }, - neon: { + Neon: { rpc: undefined, key: undefined, chain_id: undefined, }, - terra2: { + Terra2: { rpc: "https://phoenix-lcd.terra.dev", chain_id: "phoenix-1", key: getEnvVar("TERRA_MNEMONIC"), }, - arbitrum: { + Arbitrum: { rpc: "https://arb1.arbitrum.io/rpc", key: getEnvVar("ETH_KEY"), chain_id: 42161, }, - optimism: { + Optimism: { rpc: "https://mainnet.optimism.io", key: getEnvVar("ETH_KEY"), chain_id: 10, }, - gnosis: { + Gnosis: { rpc: "https://rpc.gnosischain.com/", key: getEnvVar("ETH_KEY"), chain_id: 100, }, - base: { + Base: { rpc: "https://mainnet.base.org", key: getEnvVar("ETH_KEY"), chain_id: 8453, }, - sei: { + Sei: { rpc: "https://sei-rpc.polkachu.com/", key: getEnvVar("SEI_KEY"), }, - rootstock: { + Rootstock: { rpc: "https://public-node.rsk.co", key: getEnvVar("ETH_KEY"), chain_id: 30, }, - scroll: { + Scroll: { rpc: "https://rpc.ankr.com/scroll", key: getEnvVar("ETH_KEY"), chain_id: 534352, }, - mantle: { + Mantle: { rpc: undefined, key: undefined, chain_id: undefined, }, - blast: { + Blast: { rpc: "https://rpc.ankr.com/blast", key: getEnvVar("ETH_KEY"), chain_id: 81457, }, - xlayer: { + Xlayer: { rpc: undefined, key: undefined, chain_id: undefined, }, - linea: { + Linea: { rpc: undefined, key: undefined, chain_id: undefined, }, - berachain: { + Berachain: { rpc: undefined, key: undefined, chain_id: undefined, }, - seievm: { + Seievm: { rpc: undefined, key: undefined, chain_id: undefined, }, - sepolia: { + Sepolia: { rpc: undefined, key: undefined, chain_id: undefined, }, - holesky: { + Holesky: { rpc: undefined, key: undefined, chain_id: undefined, }, - cosmoshub: { + Cosmoshub: { rpc: undefined, key: undefined, chain_id: undefined, }, - evmos: { + Evmos: { rpc: undefined, key: undefined, chain_id: undefined, }, - kujira: { + Kujira: { rpc: undefined, key: undefined, chain_id: undefined, }, - neutron: { + Neutron: { rpc: undefined, key: undefined, chain_id: undefined, }, - celestia: { + Celestia: { rpc: undefined, key: undefined, chain_id: undefined, }, - arbitrum_sepolia: { + ArbitrumSepolia: { rpc: undefined, key: undefined, chain_id: undefined, }, - base_sepolia: { + BaseSepolia: { rpc: undefined, key: undefined, chain_id: undefined, }, - optimism_sepolia: { + OptimismSepolia: { rpc: undefined, key: undefined, chain_id: undefined, }, - polygon_sepolia: { + PolygonSepolia: { rpc: undefined, key: undefined, chain_id: undefined, }, - stargaze: { + Stargaze: { rpc: undefined, key: undefined, chain_id: undefined, }, - seda: { + Seda: { rpc: undefined, key: undefined, chain_id: undefined, }, - dymension: { + Dymension: { rpc: undefined, key: undefined, chain_id: undefined, }, - provenance: { + Provenance: { rpc: undefined, key: undefined, chain_id: undefined, }, }; -const TESTNET = { - unset: { - rpc: undefined, - key: undefined, - }, - solana: { +const Testnet = { + Solana: { rpc: "https://api.devnet.solana.com", key: getEnvVar("SOLANA_KEY_TESTNET"), }, - terra: { + Terra: { rpc: "https://bombay-lcd.terra.dev", chain_id: "bombay-12", key: getEnvVar("TERRA_MNEMONIC_TESTNET"), }, - ethereum: { + Ethereum: { rpc: `https://rpc.ankr.com/eth_goerli`, key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 5, }, - bsc: { + Bsc: { rpc: "https://data-seed-prebsc-1-s1.binance.org:8545", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 97, }, - polygon: { + Polygon: { rpc: `https://rpc.ankr.com/polygon_mumbai`, key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 80001, }, - avalanche: { + Avalanche: { rpc: "https://rpc.ankr.com/avalanche_fuji", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 43113, }, - oasis: { + Oasis: { rpc: "https://testnet.emerald.oasis.dev", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 42261, }, - algorand: { + Algorand: { rpc: "https://testnet-api.algonode.cloud", key: getEnvVar("ALGORAND_KEY_TESTNET"), }, - fantom: { + Fantom: { rpc: "https://rpc.testnet.fantom.network", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 4002, }, - aurora: { + Aurora: { rpc: "https://testnet.aurora.dev", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 1313161555, }, - karura: { + Karura: { rpc: "https://eth-rpc-karura-testnet.aca-staging.network", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 596, }, - acala: { + Acala: { rpc: "https://eth-rpc-acala-testnet.aca-staging.network", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 595, }, - klaytn: { + Klaytn: { rpc: "https://api.baobab.klaytn.net:8651", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 1001, }, - celo: { + Celo: { rpc: "https://alfajores-forno.celo-testnet.org", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 44787, }, - near: { + Near: { rpc: "https://rpc.testnet.near.org", key: getEnvVar("NEAR_KEY_TESTNET"), networkId: "testnet", }, - injective: { + Injective: { rpc: "https://k8s.testnet.tm.injective.network:443", chain_id: "injective-888", key: getEnvVar("INJECTIVE_KEY_TESTNET"), }, - osmosis: { + Osmosis: { rpc: undefined, chain_id: "osmo-test-4", key: getEnvVar("OSMOSIS_KEY_TESTNET"), }, - aptos: { + Aptos: { rpc: "https://fullnode.testnet.aptoslabs.com/v1", key: getEnvVar("APTOS_TESTNET"), }, - sui: { + Sui: { rpc: "https://fullnode.testnet.sui.io:443", key: getEnvVar("SUI_KEY_TESTNET"), }, - pythnet: { + Pythnet: { rpc: "https://api.pythtest.pyth.network/", key: getEnvVar("SOLANA_KEY_TESTNET"), }, - xpla: { + Xpla: { rpc: "https://cube-lcd.xpla.dev:443", chain_id: "cube_47-5", key: getEnvVar("XPLA_KEY_TESTNET"), }, - sei: { + Sei: { rpc: "https://rpc.atlantic-2.seinetwork.io", key: getEnvVar("SEI_KEY_TESTNET"), }, - scroll: { + Scroll: { rpc: "https://rpc.ankr.com/scroll_sepolia_testnet", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 534353, }, - mantle: { + Mantle: { rpc: "https://mantle-sepolia.drpc.org", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 5003, }, - blast: { + Blast: { rpc: "https://blast-sepolia.drpc.org", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 168587773, }, - xlayer: { + Xlayer: { rpc: "https://testrpc.xlayer.tech/", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 195, }, - linea: { + Linea: { rpc: "https://rpc.sepolia.linea.build", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 59141, }, - berachain: { + Berachain: { rpc: "https://artio.rpc.berachain.com/", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 80085, }, - seievm: { + Seievm: { rpc: "https://evm-rpc-arctic-1.sei-apis.com/", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 713715, }, - sepolia: { + Sepolia: { rpc: "https://rpc.ankr.com/eth_sepolia", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 11155111, }, - holesky: { + Holesky: { rpc: "https://rpc.ankr.com/eth_holesky", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 17000, }, - btc: { + Btc: { rpc: undefined, key: undefined, }, - wormchain: { + Wormchain: { rpc: undefined, key: undefined, }, - moonbeam: { + Moonbeam: { rpc: "https://rpc.api.moonbase.moonbeam.network", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 1287, }, - neon: { + Neon: { rpc: "https://proxy.devnet.neonlabs.org/solana", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: undefined, }, - terra2: { + Terra2: { rpc: "https://pisco-lcd.terra.dev", chain_id: "pisco-1", key: getEnvVar("TERRA_MNEMONIC_TESTNET"), }, - arbitrum: { + Arbitrum: { rpc: "https://goerli-rollup.arbitrum.io/rpc", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 421613, }, - optimism: { + Optimism: { rpc: "https://goerli.optimism.io", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 420, }, - gnosis: { + Gnosis: { rpc: "https://sokol.poa.network/", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 77, }, - base: { + Base: { rpc: "https://goerli.base.org", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 84531, }, - rootstock: { + Rootstock: { rpc: "https://public-node.testnet.rsk.co", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 31, }, - cosmoshub: { + Cosmoshub: { rpc: undefined, key: undefined, chain_id: undefined, }, - evmos: { + Evmos: { rpc: undefined, key: undefined, chain_id: undefined, }, - kujira: { + Kujira: { rpc: undefined, key: undefined, chain_id: undefined, }, - neutron: { + Neutron: { rpc: undefined, key: undefined, chain_id: undefined, }, - celestia: { + Celestia: { rpc: undefined, key: undefined, chain_id: undefined, }, - arbitrum_sepolia: { + ArbitrumSepolia: { rpc: "https://arbitrum-sepolia.publicnode.com", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 421614, }, - base_sepolia: { + BaseSepolia: { rpc: "https://sepolia.base.org", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 84532, }, - optimism_sepolia: { + OptimismSepolia: { rpc: "https://rpc.ankr.com/optimism_sepolia", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 11155420, }, - polygon_sepolia: { + PolygonSepolia: { rpc: "https://rpc-amoy.polygon.technology/", key: getEnvVar("ETH_KEY_TESTNET"), chain_id: 80002, }, - stargaze: { + Stargaze: { rpc: undefined, key: undefined, chain_id: undefined, }, - seda: { + Seda: { rpc: undefined, key: undefined, chain_id: undefined, }, - dymension: { + Dymension: { rpc: undefined, key: undefined, chain_id: undefined, }, - provenance: { + Provenance: { rpc: undefined, key: undefined, chain_id: undefined, }, }; -const DEVNET = { - unset: { - rpc: undefined, - key: undefined, - }, - solana: { +const Devnet = { + Solana: { rpc: "http://localhost:8899", key: "J2D4pwDred8P9ioyPEZVLPht885AeYpifsFGUyuzVmiKQosAvmZP4EegaKFrSprBC5vVP1xTvu61vYDWsxBNsYx", }, - terra: { + Terra: { rpc: "http://localhost:1317", chain_id: "columbus-5", key: "notice oak worry limit wrap speak medal online prefer cluster roof addict wrist behave treat actual wasp year salad speed social layer crew genius", }, - ethereum: { + Ethereum: { rpc: "http://localhost:8545", key: "0x4f3edf983ac636a65a842ce7c78d9aa706d3b113bce9c46f30d7d21715b23b1d", }, - bsc: { + Bsc: { rpc: "http://localhost:8546", key: "0x4f3edf983ac636a65a842ce7c78d9aa706d3b113bce9c46f30d7d21715b23b1d", }, - polygon: { + Polygon: { rpc: undefined, key: "0x4f3edf983ac636a65a842ce7c78d9aa706d3b113bce9c46f30d7d21715b23b1d", }, - avalanche: { + Avalanche: { rpc: undefined, key: "0x4f3edf983ac636a65a842ce7c78d9aa706d3b113bce9c46f30d7d21715b23b1d", }, - oasis: { + Oasis: { rpc: undefined, key: "0x4f3edf983ac636a65a842ce7c78d9aa706d3b113bce9c46f30d7d21715b23b1d", }, - algorand: { + Algorand: { rpc: "http://localhost", key: getEnvVar("ALGORAND_KEY_DEVNET"), }, - fantom: { + Fantom: { rpc: undefined, key: "0x4f3edf983ac636a65a842ce7c78d9aa706d3b113bce9c46f30d7d21715b23b1d", }, - aurora: { + Aurora: { rpc: undefined, key: "0x4f3edf983ac636a65a842ce7c78d9aa706d3b113bce9c46f30d7d21715b23b1d", }, - karura: { + Karura: { rpc: undefined, key: "0x4f3edf983ac636a65a842ce7c78d9aa706d3b113bce9c46f30d7d21715b23b1d", }, - acala: { + Acala: { rpc: undefined, key: "0x4f3edf983ac636a65a842ce7c78d9aa706d3b113bce9c46f30d7d21715b23b1d", }, - klaytn: { + Klaytn: { rpc: undefined, key: "0x4f3edf983ac636a65a842ce7c78d9aa706d3b113bce9c46f30d7d21715b23b1d", }, - celo: { + Celo: { rpc: undefined, key: "0x4f3edf983ac636a65a842ce7c78d9aa706d3b113bce9c46f30d7d21715b23b1d", }, - near: { + Near: { rpc: undefined, key: undefined, networkId: "sandbox", }, - injective: { + Injective: { rpc: undefined, key: undefined, }, - osmosis: { + Osmosis: { rpc: undefined, key: undefined, }, - pythnet: { + Pythnet: { rpc: undefined, key: undefined, }, - btc: { + Btc: { rpc: undefined, key: undefined, }, - xpla: { + Xpla: { rpc: undefined, chain_id: undefined, key: undefined, }, - sei: { + Sei: { rpc: undefined, key: undefined, }, - scroll: { + Scroll: { rpc: undefined, key: undefined, chain_id: undefined, }, - mantle: { + Mantle: { rpc: undefined, key: undefined, chain_id: undefined, }, - blast: { + Blast: { rpc: undefined, key: undefined, chain_id: undefined, }, - xlayer: { + Xlayer: { rpc: undefined, key: undefined, chain_id: undefined, }, - linea: { + Linea: { rpc: undefined, key: undefined, chain_id: undefined, }, - berachain: { + Berachain: { rpc: undefined, key: undefined, chain_id: undefined, }, - seievm: { + Seievm: { rpc: undefined, key: undefined, chain_id: undefined, }, - sepolia: { + Sepolia: { rpc: undefined, key: undefined, }, - holesky: { + Holesky: { rpc: undefined, key: undefined, }, - wormchain: { + Wormchain: { rpc: "http://localhost:1319", chain_id: "wormchain", key: undefined, }, - aptos: { + Aptos: { rpc: "http://0.0.0.0:8080", key: "537c1f91e56891445b491068f519b705f8c0f1a1e66111816dd5d4aa85b8113d", }, - sui: { + Sui: { rpc: "http://0.0.0.0:9000", key: "AGA20wtGcwbcNAG4nwapbQ5wIuXwkYQEWFUoSVAxctHb", }, - moonbeam: { + Moonbeam: { rpc: undefined, key: "0x4f3edf983ac636a65a842ce7c78d9aa706d3b113bce9c46f30d7d21715b23b1d", }, - neon: { + Neon: { rpc: undefined, key: "0x4f3edf983ac636a65a842ce7c78d9aa706d3b113bce9c46f30d7d21715b23b1d", }, - terra2: { + Terra2: { rpc: "http://localhost:1318", chain_id: "phoenix-1", key: "notice oak worry limit wrap speak medal online prefer cluster roof addict wrist behave treat actual wasp year salad speed social layer crew genius", }, - arbitrum: { + Arbitrum: { rpc: undefined, key: undefined, }, - optimism: { + Optimism: { rpc: undefined, key: undefined, }, - gnosis: { + Gnosis: { rpc: undefined, key: undefined, }, - base: { + Base: { rpc: undefined, key: undefined, }, - rootstock: { + Rootstock: { rpc: undefined, key: undefined, }, - cosmoshub: { + Cosmoshub: { rpc: undefined, key: undefined, }, - evmos: { + Evmos: { rpc: undefined, key: undefined, }, - kujira: { + Kujira: { rpc: undefined, key: undefined, }, - neutron: { + Neutron: { rpc: undefined, key: undefined, chain_id: undefined, }, - celestia: { + Celestia: { rpc: undefined, key: undefined, chain_id: undefined, }, - arbitrum_sepolia: { + ArbitrumSepolia: { rpc: undefined, key: undefined, chain_id: undefined, }, - base_sepolia: { + BaseSepolia: { rpc: undefined, key: undefined, chain_id: undefined, }, - optimism_sepolia: { + OptimismSepolia: { rpc: undefined, key: undefined, chain_id: undefined, }, - polygon_sepolia: { + PolygonSepolia: { rpc: undefined, key: undefined, chain_id: undefined, }, - stargaze: { + Stargaze: { rpc: undefined, key: undefined, chain_id: undefined, }, - seda: { + Seda: { rpc: undefined, key: undefined, chain_id: undefined, }, - dymension: { + Dymension: { rpc: undefined, key: undefined, chain_id: undefined, }, - provenance: { + Provenance: { rpc: undefined, key: undefined, chain_id: undefined, @@ -811,18 +799,18 @@ const DEVNET = { * * (Do not delete this declaration!) */ -const isTestnetConnections: ChainConnections = TESTNET; +const isTestnetConnections: ChainConnections = Testnet; /** * * See [[isTestnetContracts]] */ -const isMainnetConnections: ChainConnections = MAINNET; +const isMainnetConnections: ChainConnections = Mainnet; /** * * See [[isTestnetContracts]] */ -const isDevnetConnections: ChainConnections = DEVNET; +const isDevnetConnections: ChainConnections = Devnet; -export const NETWORKS = { MAINNET, TESTNET, DEVNET }; +export const NETWORKS = { Mainnet, Testnet, Devnet }; diff --git a/clients/js/src/consts/yargs.ts b/clients/js/src/consts/yargs.ts index 8de88081d..cd607be28 100644 --- a/clients/js/src/consts/yargs.ts +++ b/clients/js/src/consts/yargs.ts @@ -1,8 +1,9 @@ import { - CHAINS, + Chain, ChainId, - ChainName, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; + chainIds, + chains, +} from "@wormhole-foundation/sdk-base"; export const DEBUG_OPTIONS = { alias: "d", @@ -38,11 +39,9 @@ export const RPC_OPTIONS = { demandOption: false, } as const; -export const CHAIN_ID_OR_NAME_CHOICES = [ - ...Object.keys(CHAINS), - ...Object.values(CHAINS), -] as (ChainName | ChainId)[]; +export const CHAIN_ID_OR_NAME_CHOICES = [...chains, ...chainIds] as ( + | Chain + | ChainId +)[]; -export const CHAIN_NAME_CHOICES = Object.keys(CHAINS).filter( - (c) => c !== "unset" -) as ChainName[]; +export const CHAIN_NAME_CHOICES = [...chains]; diff --git a/clients/js/src/emitter.ts b/clients/js/src/emitter.ts index c2481941e..e78520643 100644 --- a/clients/js/src/emitter.ts +++ b/clients/js/src/emitter.ts @@ -1,9 +1,3 @@ -import { - ChainId, - ChainName, - isCosmWasmChain, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; - import { getEmitterAddressAlgorand, getEmitterAddressEth, @@ -11,21 +5,25 @@ import { getEmitterAddressSolana, getEmitterAddressTerra, } from "@certusone/wormhole-sdk/lib/esm/bridge/getEmitterAddress"; +import { + Chain, + ChainId, + chainToPlatform, + toChain, +} from "@wormhole-foundation/sdk-base"; -export async function getEmitterAddress( - chain: ChainId | ChainName, - addr: string -) { - if (chain === "solana" || chain === "pythnet") { +export async function getEmitterAddress(chain: ChainId | Chain, addr: string) { + const localChain = toChain(chain); + if (localChain === "Solana" || localChain === "Pythnet") { // TODO: Create an isSolanaChain() addr = getEmitterAddressSolana(addr); - } else if (isCosmWasmChain(chain)) { + } else if (chainToPlatform(localChain) === "Cosmwasm") { addr = await getEmitterAddressTerra(addr); - } else if (chain === "algorand") { + } else if (localChain === "Algorand") { addr = getEmitterAddressAlgorand(BigInt(addr)); - } else if (chain === "near") { + } else if (localChain === "Near") { addr = getEmitterAddressNear(addr); - } else if (chain === "aptos") { + } else if (localChain === "Aptos") { // TODO: There should be something in the SDK to do this. if ( addr === @@ -42,7 +40,7 @@ export async function getEmitterAddress( } else { throw Error(`Unsupported Aptos address: ${addr}`); } - } else if (chain === "sui") { + } else if (localChain === "Sui") { // TODO: There should be something in the SDK to do this. if ( addr === diff --git a/clients/js/src/evm.ts b/clients/js/src/evm.ts index 4f55a62d4..1cad5488b 100644 --- a/clients/js/src/evm.ts +++ b/clients/js/src/evm.ts @@ -5,20 +5,10 @@ import { NFTBridgeImplementation__factory, } from "@certusone/wormhole-sdk/lib/esm/ethers-contracts"; import { WormholeRelayer__factory } from "@certusone/wormhole-sdk/lib/esm/ethers-relayer-contracts"; -import { getWormholeRelayerAddress } from "@certusone/wormhole-sdk/lib/esm/relayer"; -import { - CHAINS, - CONTRACTS, - ChainName, - Contracts, - EVMChainName, - toChainId, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import axios from "axios"; import { ethers } from "ethers"; import { solidityKeccak256 } from "ethers/lib/utils"; import { NETWORKS } from "./consts"; -import { Network } from "./utils"; import { Encoding, Payload, encode, impossible, typeWidth } from "./vaa"; import { approveEth, @@ -26,14 +16,22 @@ import { transferFromEth, transferFromEthNative, } from "@certusone/wormhole-sdk/lib/esm/token_bridge/transfer"; -import { tryNativeToUint8Array } from "@certusone/wormhole-sdk/lib/esm/utils"; +import { + Chain, + Network, + PlatformToChains, + chainToChainId, + chains, + contracts, +} from "@wormhole-foundation/sdk-base"; +import { tryNativeToUint8Array } from "./sdk/array"; const _IMPLEMENTATION_SLOT = "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"; export async function query_contract_evm( network: Network, - chain: EVMChainName, + chain: PlatformToChains<"Evm">, module: "Core" | "NFTBridge" | "TokenBridge", contract_address: string | undefined, _rpc: string | undefined @@ -44,12 +42,13 @@ export async function query_contract_evm( throw Error(`No ${network} rpc defined for ${chain} (see networks.ts)`); } - const contracts: Contracts = CONTRACTS[network][chain]; const provider = new ethers.providers.JsonRpcProvider(rpc); const result: any = {}; switch (module) { case "Core": - contract_address = contract_address ? contract_address : contracts.core; + contract_address = contract_address + ? contract_address + : contracts.coreBridge.get(network, chain); if (!contract_address) { throw Error(`Unknown core contract on ${network} for ${chain}`); } @@ -105,7 +104,7 @@ export async function query_contract_evm( case "TokenBridge": contract_address = contract_address ? contract_address - : contracts.token_bridge; + : contracts.tokenBridge.get(network, chain); if (contract_address === undefined) { throw Error(`Unknown token bridge contract on ${network} for ${chain}`); } @@ -115,11 +114,11 @@ export async function query_contract_evm( ); result.address = contract_address; const registrationsPromise = Promise.all( - Object.entries(CHAINS) - .filter(([c_name, _]) => c_name !== chain && c_name !== "unset") - .map(async ([c_name, c_id]) => [ + chains + .filter((c_name) => c_name !== chain) + .map(async (c_name) => [ c_name, - await tb.bridgeContracts(c_id), + await tb.bridgeContracts(chainToChainId(c_name)), ]) ); const [ @@ -167,7 +166,7 @@ export async function query_contract_evm( case "NFTBridge": contract_address = contract_address ? contract_address - : contracts.nft_bridge; + : contracts.nftBridge.get(network, chain); if (contract_address === undefined) { throw Error(`Unknown nft bridge contract on ${network} for ${chain}`); } @@ -177,11 +176,11 @@ export async function query_contract_evm( ); result.address = contract_address; const registrationsPromiseNb = Promise.all( - Object.entries(CHAINS) - .filter(([c_name, _]) => c_name !== chain && c_name !== "unset") - .map(async ([c_name, c_id]) => [ + chains + .filter(([c_name, _]) => c_name !== chain) + .map(async (c_name) => [ c_name, - await nb.bridgeContracts(c_id), + await nb.bridgeContracts(chainToChainId(c_name)), ]) ); const [ @@ -232,7 +231,7 @@ export async function query_contract_evm( export async function getImplementation( network: Network, - chain: EVMChainName, + chain: PlatformToChains<"Evm">, module: "Core" | "NFTBridge" | "TokenBridge", contract_address: string | undefined, _rpc: string | undefined @@ -243,20 +242,21 @@ export async function getImplementation( throw Error(`No ${network} rpc defined for ${chain} (see networks.ts)`); } - const contracts: Contracts = CONTRACTS[network][chain]; switch (module) { case "Core": - contract_address = contract_address ? contract_address : contracts.core; + contract_address = contract_address + ? contract_address + : contracts.coreBridge.get(network, chain); break; case "TokenBridge": contract_address = contract_address ? contract_address - : contracts.token_bridge; + : contracts.tokenBridge.get(network, chain); break; case "NFTBridge": contract_address = contract_address ? contract_address - : contracts.nft_bridge; + : contracts.nftBridge.get(network, chain); break; default: impossible(module); @@ -271,10 +271,14 @@ export async function getImplementation( )[0]; } -async function getSigner(chain: EVMChainName, key: string, rpc: string) { +async function getSigner( + chain: PlatformToChains<"Evm">, + key: string, + rpc: string +) { let provider: ethers.providers.JsonRpcProvider; let signer: ethers.Wallet; - if (chain === "celo") { + if (chain === "Celo") { provider = new celo.CeloProvider(rpc); await provider.ready; signer = new celo.CeloWallet(key, provider); @@ -286,15 +290,15 @@ async function getSigner(chain: EVMChainName, key: string, rpc: string) { // NOTE: some of these might have only been tested on mainnet. If it fails in // testnet (or devnet), they might require additional guards let overrides: ethers.Overrides = {}; - if (chain === "karura" || chain == "acala") { + if (chain === "Karura" || chain == "Acala") { overrides = await getKaruraGasParams(rpc); - } else if (chain === "polygon") { + } else if (chain === "Polygon") { const feeData = await provider.getFeeData(); overrides = { maxFeePerGas: feeData.maxFeePerGas?.mul(50) || undefined, maxPriorityFeePerGas: feeData.maxPriorityFeePerGas?.mul(50) || undefined, }; - } else if (chain === "klaytn" || chain === "fantom") { + } else if (chain === "Klaytn" || chain === "Fantom") { overrides = { gasPrice: (await signer.getGasPrice()).toString() }; } return { @@ -308,7 +312,7 @@ export async function execute_evm( payload: Payload, vaa: Buffer, network: Network, - chain: EVMChainName, + chain: PlatformToChains<"Evm">, contract_address: string | undefined, _rpc: string | undefined ) { @@ -323,12 +327,14 @@ export async function execute_evm( } const key: string = n.key; - const contracts: Contracts = CONTRACTS[network][chain]; + // const contracts: Contracts = CONTRACTS[network][chain]; const { signer, overrides } = await getSigner(chain, key, rpc); switch (payload.module) { case "Core": { - contract_address = contract_address ? contract_address : contracts.core; + contract_address = contract_address + ? contract_address + : contracts.coreBridge.get(network, chain); if (contract_address === undefined) { throw Error(`Unknown core contract on ${network} for ${chain}`); } @@ -362,7 +368,7 @@ export async function execute_evm( case "NFTBridge": { contract_address = contract_address ? contract_address - : contracts.nft_bridge; + : contracts.nftBridge.get(network, chain); if (contract_address === undefined) { throw Error(`Unknown nft bridge contract on ${network} for ${chain}`); } @@ -401,7 +407,7 @@ export async function execute_evm( case "TokenBridge": { contract_address = contract_address ? contract_address - : contracts.token_bridge; + : contracts.tokenBridge.get(network, chain); if (contract_address === undefined) { throw Error(`Unknown token bridge contract on ${network} for ${chain}`); } @@ -451,7 +457,7 @@ export async function execute_evm( case "WormholeRelayer": contract_address = contract_address ? contract_address - : getWormholeRelayerAddress(chain, network); + : contracts.relayer.get(network, chain); if (contract_address === undefined) { throw Error( `Unknown Wormhole Relayer contract on ${network} for ${chain}` @@ -493,8 +499,8 @@ export async function execute_evm( } export async function transferEVM( - srcChain: EVMChainName, - dstChain: ChainName, + srcChain: PlatformToChains<"Evm">, + dstChain: Chain, dstAddress: string, tokenAddress: string, amount: string, @@ -505,7 +511,7 @@ export async function transferEVM( if (!n.key) { throw Error(`No ${network} key defined for ${srcChain} (see networks.ts)`); } - const { token_bridge } = CONTRACTS[network][srcChain]; + const token_bridge = contracts.tokenBridge.get(network, srcChain); if (!token_bridge) { throw Error(`Unknown token bridge contract on ${network} for ${srcChain}`); } @@ -516,8 +522,8 @@ export async function transferEVM( token_bridge, signer, amount, - toChainId(dstChain), - tryNativeToUint8Array(dstAddress, dstChain) + chainToChainId(dstChain), + tryNativeToUint8Array(dstAddress, chainToChainId(dstChain)) ); } else { const allowance = await getAllowanceEth(token_bridge, tokenAddress, signer); @@ -529,8 +535,8 @@ export async function transferEVM( signer, tokenAddress, amount, - dstChain, - tryNativeToUint8Array(dstAddress, dstChain), + chainToChainId(dstChain), + tryNativeToUint8Array(dstAddress, chainToChainId(dstChain)), undefined, overrides ); @@ -828,11 +834,10 @@ const isUnsupportedError = (e: any): e is { reason: string } => export async function queryRegistrationsEvm( network: Network, - chain: EVMChainName, + chain: PlatformToChains<"Evm">, module: "Core" | "NFTBridge" | "TokenBridge" ): Promise { const n = NETWORKS[network][chain]; - const contracts = CONTRACTS[network][chain]; let targetContract: string | undefined; let contract: any; @@ -841,7 +846,7 @@ export async function queryRegistrationsEvm( switch (module) { case "TokenBridge": - targetContract = contracts.token_bridge; + targetContract = contracts.tokenBridge.get(network, chain); if (targetContract === undefined) { throw Error(`Unknown token bridge contract on ${network} for ${chain}`); } @@ -851,7 +856,7 @@ export async function queryRegistrationsEvm( ); break; case "NFTBridge": - targetContract = contracts.nft_bridge; + targetContract = contracts.nftBridge.get(network, chain); if (targetContract === undefined) { throw Error(`Unknown NFT bridge contract on ${network} for ${chain}`); } @@ -865,9 +870,12 @@ export async function queryRegistrationsEvm( } const registrations: string[][] = await Promise.all( - Object.entries(CHAINS) - .filter(([cname, _]) => cname !== chain && cname !== "unset") - .map(async ([cname, cid]) => [cname, await contract.bridgeContracts(cid)]) + chains + .filter((cname) => cname !== chain) + .map(async (cname) => [ + cname, + await contract.bridgeContracts(chainToChainId(cname)), + ]) ); const results: { [key: string]: string } = {}; diff --git a/clients/js/src/injective.ts b/clients/js/src/injective.ts index 89623c107..9b71966fd 100644 --- a/clients/js/src/injective.ts +++ b/clients/js/src/injective.ts @@ -1,8 +1,3 @@ -import { - CHAINS, - CONTRACTS, - ChainName, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import { getNetworkInfo, Network as InjectiveNetwork, @@ -19,28 +14,33 @@ import { import { DEFAULT_STD_FEE, getStdFee } from "@injectivelabs/utils"; import { fromUint8Array } from "js-base64"; import { NETWORKS } from "./consts"; -import { Network } from "./utils"; import { impossible, Payload } from "./vaa"; import { transferFromInjective } from "@certusone/wormhole-sdk/lib/esm/token_bridge/injective"; -import { tryNativeToUint8Array } from "@certusone/wormhole-sdk/lib/esm/utils"; +import { + Chain, + chainToChainId, + contracts, + Network, +} from "@wormhole-foundation/sdk-base"; +import { chains } from "@wormhole-foundation/sdk"; +import { tryNativeToUint8Array } from "./sdk/array"; export async function execute_injective( payload: Payload, vaa: Buffer, network: Network ) { - if (network === "DEVNET") { + if (network === "Devnet") { throw new Error("Injective is not supported in DEVNET"); } - const chain = "injective"; + const chain = "Injective"; let { key } = NETWORKS[network][chain]; if (!key) { throw Error(`No ${network} key defined for Injective`); } - let contracts = CONTRACTS[network][chain]; const endPoint = - network === "MAINNET" + network === "Mainnet" ? InjectiveNetwork.MainnetK8s : InjectiveNetwork.TestnetK8s; @@ -55,7 +55,7 @@ export async function execute_injective( switch (payload.module) { case "Core": { - target_contract = contracts.core; + target_contract = contracts.coreBridge(network, "Injective"); action = "submit_v_a_a"; execute_msg = { vaa: fromUint8Array(vaa), @@ -76,14 +76,15 @@ export async function execute_injective( break; } case "NFTBridge": { - if (!contracts.nft_bridge) { + const nftContract = contracts.nftBridge.get(network, "Injective"); + if (!nftContract) { // NOTE: this code can safely be removed once the injective NFT bridge is // released, but it's fine for it to stay, as the condition will just be // skipped once 'contracts.nft_bridge' is defined throw new Error("NFT bridge not supported yet for injective"); } - target_contract = contracts.nft_bridge; + target_contract = nftContract; action = "submit_vaa"; execute_msg = { data: fromUint8Array(vaa), @@ -107,12 +108,12 @@ export async function execute_injective( break; } case "TokenBridge": { - console.log("contracts:", contracts); - if (!contracts.token_bridge) { + const tbContract = contracts.tokenBridge.get(network, "Injective"); + if (!tbContract) { throw new Error("contracts.token_bridge is undefined"); } - target_contract = contracts.token_bridge; + target_contract = tbContract; action = "submit_vaa"; execute_msg = { data: fromUint8Array(vaa), @@ -165,22 +166,22 @@ export async function execute_injective( } export async function transferInjective( - dstChain: ChainName, + dstChain: Chain, dstAddress: string, tokenAddress: string, amount: string, network: Network, rpc: string ) { - if (network === "DEVNET") { + if (network === "Devnet") { throw new Error("Injective is not supported in DEVNET"); } - const chain = "injective"; + const chain = "Injective"; const { key } = NETWORKS[network][chain]; if (!key) { throw Error(`No ${network} key defined for Injective`); } - const { token_bridge } = CONTRACTS[network][chain]; + const token_bridge = contracts.tokenBridge.get(network, "Injective"); if (token_bridge == undefined) { throw Error(`Unknown token bridge contract on ${network} for ${chain}`); } @@ -193,8 +194,8 @@ export async function transferInjective( token_bridge, tokenAddress, amount, - dstChain, - tryNativeToUint8Array(dstAddress, dstChain) + chainToChainId(dstChain), + tryNativeToUint8Array(dstAddress, chainToChainId(dstChain)) ); await signAndSendTx(walletPK, network, msgs); @@ -268,18 +269,17 @@ export async function queryRegistrationsInjective( network: Network, module: "Core" | "NFTBridge" | "TokenBridge" ) { - const chain = "injective"; + const chain = "Injective"; const n = NETWORKS[network][chain]; - const contracts = CONTRACTS[network][chain]; let targetContract: string | undefined; switch (module) { case "TokenBridge": - targetContract = contracts.token_bridge; + targetContract = contracts.tokenBridge.get(network, "Injective"); break; case "NFTBridge": - targetContract = contracts.nft_bridge; + targetContract = contracts.nftBridge.get(network, "Injective"); break; default: throw new Error(`Invalid module: ${module}`); @@ -297,14 +297,14 @@ export async function queryRegistrationsInjective( // Query the bridge registration for all the chains in parallel. const registrations: (any | null)[][] = await Promise.all( - Object.entries(CHAINS) - .filter(([cname, _]) => cname !== chain && cname !== "unset") - .map(async ([cname, cid]) => [ + chains + .filter((cname) => cname !== chain) + .map(async (cname) => [ cname, await (async () => { let query_msg = { chain_registration: { - chain: cid, + chain: chainToChainId(cname), }, }; diff --git a/clients/js/src/near.ts b/clients/js/src/near.ts index 59daee7f9..3bdc58485 100644 --- a/clients/js/src/near.ts +++ b/clients/js/src/near.ts @@ -1,18 +1,19 @@ -import { - ChainName, - CONTRACTS, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import BN from "bn.js"; import { Account, connect, KeyPair } from "near-api-js"; import { InMemoryKeyStore } from "near-api-js/lib/key_stores"; import { NETWORKS } from "./consts"; -import { Network } from "./utils"; import { impossible, Payload } from "./vaa"; import { transferNearFromNear, transferTokenFromNear, } from "@certusone/wormhole-sdk/lib/esm/token_bridge/transfer"; -import { tryNativeToUint8Array } from "@certusone/wormhole-sdk/lib/esm/utils"; +import { + Chain, + chainToChainId, + contracts, + Network, +} from "@wormhole-foundation/sdk-base"; +import { tryNativeToUint8Array } from "./sdk/array"; export function keyPairToImplicitAccount(keyPair: KeyPair): string { return Buffer.from(keyPair.getPublicKey().data).toString("hex"); @@ -23,7 +24,7 @@ export const execute_near = async ( vaa: string, network: Network ): Promise => { - const { rpc, key, networkId } = NETWORKS[network].near; + const { rpc, key, networkId } = NETWORKS[network].Near; if (!key) { throw Error(`No ${network} key defined for NEAR`); } @@ -32,16 +33,15 @@ export const execute_near = async ( throw Error(`No ${network} rpc defined for NEAR`); } - const contracts = CONTRACTS[network].near; let target_contract: string; let numSubmits = 1; switch (payload.module) { case "Core": { - if (!contracts.core) { + const coreContract = contracts.coreBridge(network, "Near"); + if (!coreContract) { throw new Error(`Core bridge address not defined for NEAR ${network}`); } - - target_contract = contracts.core; + target_contract = coreContract; switch (payload.type) { case "GuardianSetUpgrade": console.log("Submitting new guardian set"); @@ -57,12 +57,13 @@ export const execute_near = async ( break; } case "NFTBridge": { - if (!contracts.nft_bridge) { + const nftContract = contracts.nftBridge.get(network, "Near"); + if (!nftContract) { throw new Error(`NFT bridge address not defined for NEAR ${network}`); } numSubmits = 2; - target_contract = contracts.nft_bridge; + target_contract = nftContract; switch (payload.type) { case "ContractUpgrade": console.log("Upgrading contract"); @@ -82,12 +83,13 @@ export const execute_near = async ( break; } case "TokenBridge": { - if (!contracts.token_bridge) { + const tbContract = contracts.tokenBridge(network, "Near"); + if (!tbContract) { throw new Error(`Token bridge address not defined for NEAR ${network}`); } numSubmits = 2; - target_contract = contracts.token_bridge; + target_contract = tbContract; switch (payload.type) { case "ContractUpgrade": console.log("Upgrading contract"); @@ -158,18 +160,19 @@ export const execute_near = async ( }; export async function transferNear( - dstChain: ChainName, + dstChain: Chain, dstAddress: string, tokenAddress: string, amount: string, network: Network, rpc: string ) { - const { key, networkId } = NETWORKS[network].near; + const { key, networkId } = NETWORKS[network].Near; if (!key) { throw Error(`No ${network} key defined for NEAR`); } - const { core, token_bridge } = CONTRACTS[network].near; + const core = contracts.coreBridge(network, "Near"); + const token_bridge = contracts.tokenBridge(network, "Near"); if (core === undefined) { throw Error(`Unknown core contract on ${network} for NEAR`); } @@ -193,8 +196,8 @@ export async function transferNear( core, token_bridge, BigInt(amount), - tryNativeToUint8Array(dstAddress, dstChain), - dstChain, + tryNativeToUint8Array(dstAddress, chainToChainId(dstChain)), + chainToChainId(dstChain), BigInt(0) ); const result = await nearAccount.functionCall(msg); @@ -207,8 +210,8 @@ export async function transferNear( token_bridge, tokenAddress, BigInt(amount), - tryNativeToUint8Array(dstAddress, dstChain), - dstChain, + tryNativeToUint8Array(dstAddress, chainToChainId(dstChain)), + chainToChainId(dstChain), BigInt(0) ); for (const msg of msgs) { diff --git a/clients/js/src/sdk/array.ts b/clients/js/src/sdk/array.ts new file mode 100644 index 000000000..82c9c50e5 --- /dev/null +++ b/clients/js/src/sdk/array.ts @@ -0,0 +1,315 @@ +import { arrayify, zeroPad } from "@ethersproject/bytes"; +import { PublicKey } from "@solana/web3.js"; +import { + hexValue, + hexZeroPad, + keccak256, + sha256, + stripZeros, +} from "ethers/lib/utils"; +import { bech32 } from "bech32"; +import { + Chain, + ChainId, + chainToChainId, + chainToPlatform, + toChain, + toChainId, +} from "@wormhole-foundation/sdk-base"; +import { + PlatformToChains, + UniversalAddress, + encoding, +} from "@wormhole-foundation/sdk"; +import { isValidSuiAddress } from "@mysten/sui.js"; +import { sha3_256 } from "js-sha3"; +import { + nativeStringToHexAlgorand, + uint8ArrayToNativeStringAlgorand, +} from "@certusone/wormhole-sdk/lib/esm/algorand"; +import { isValidSuiType } from "@certusone/wormhole-sdk/lib/esm/sui"; + +/** + * + * Returns true iff the hex string represents a native Terra denom. + * + * Native assets on terra don't have an associated smart contract address, just + * like eth isn't an ERC-20 contract on Ethereum. + * + * The difference is that the EVM implementations of Portal don't support eth + * directly, and instead require swapping to an ERC-20 wrapped eth (WETH) + * contract first. + * + * The Terra implementation instead supports Terra-native denoms without + * wrapping to CW-20 token first. As these denoms don't have an address, they + * are encoded in the Portal payloads by the setting the first byte to 1. This + * encoding is safe, because the first 12 bytes of the 32-byte wormhole address + * space are not used on Terra otherwise, as cosmos addresses are 20 bytes wide. + */ +export const isHexNativeTerra = (h: string): boolean => h.startsWith("01"); + +const isLikely20ByteCosmwasm = (h: string): boolean => + h.startsWith("000000000000000000000000"); + +export const nativeTerraHexToDenom = (h: string): string => + Buffer.from(stripZeros(hexToUint8Array(h.substr(2)))).toString("ascii"); + +export const isNativeDenom = (string = "") => + isNativeTerra(string) || string === "uluna"; + +export const isNativeTerra = (string = "") => + string.startsWith("u") && string.length === 4; + +export const uint8ArrayToHex = (a: Uint8Array): string => + encoding.hex.encode(a); + +export const hexToUint8Array = (h: string): Uint8Array => + encoding.hex.decode(h); + +export function canonicalAddress(humanAddress: string) { + return new Uint8Array(bech32.fromWords(bech32.decode(humanAddress).words)); +} + +export function humanAddress(hrp: string, canonicalAddress: Uint8Array) { + return bech32.encode(hrp, bech32.toWords(canonicalAddress)); +} + +export function buildTokenId( + chain: Exclude, "Terra">, + address: string +) { + return ( + (isNativeCosmWasmDenom(chain, address) ? "01" : "00") + + keccak256(Buffer.from(address, "utf-8")).substring(4) + ); +} + +/** + * + * Convert an address in a wormhole's 32-byte array representation into a chain's + * native string representation. + * + * @throws if address is not the right length for the given chain + */ + +export const tryUint8ArrayToNative = ( + a: Uint8Array, + chain: ChainId | Chain +): string => { + const chainName = toChain(chain); + if (chainToPlatform(chainName) === "Evm") { + // if (isEVMChain(chainId)) { + return hexZeroPad(hexValue(a), 20); + } else if (chainToPlatform(chainName) === "Solana") { + return new PublicKey(a).toString(); + } else if (chainName === "Terra" || chainName === "Terra2") { + const h = uint8ArrayToHex(a); + if (isHexNativeTerra(h)) { + return nativeTerraHexToDenom(h); + } else { + if (chainName === "Terra2" && !isLikely20ByteCosmwasm(h)) { + // terra 2 has 32 byte addresses for contracts and 20 for wallets + return humanAddress("terra", a); + } + return humanAddress("terra", a.slice(-20)); + } + } else if (chainName === "Injective") { + const h = uint8ArrayToHex(a); + return humanAddress("inj", isLikely20ByteCosmwasm(h) ? a.slice(-20) : a); + } else if (chainName === "Algorand") { + return uint8ArrayToNativeStringAlgorand(a); + } else if (chainName == "Wormchain") { + const h = uint8ArrayToHex(a); + return humanAddress( + "wormhole", + isLikely20ByteCosmwasm(h) ? a.slice(-20) : a + ); + } else if (chainName === "Xpla") { + const h = uint8ArrayToHex(a); + return humanAddress("xpla", isLikely20ByteCosmwasm(h) ? a.slice(-20) : a); + } else if (chainName === "Sei") { + const h = uint8ArrayToHex(a); + return humanAddress("sei", isLikely20ByteCosmwasm(h) ? a.slice(-20) : a); + } else if (chainName === "Near") { + throw Error("uint8ArrayToNative: Use tryHexToNativeStringNear instead."); + } else if (chainName === "Osmosis") { + throw Error("uint8ArrayToNative: Osmosis not supported yet."); + } else if (chainName === "Cosmoshub") { + throw Error("uint8ArrayToNative: CosmosHub not supported yet."); + } else if (chainName === "Evmos") { + throw Error("uint8ArrayToNative: Evmos not supported yet."); + } else if (chainName === "Kujira") { + throw Error("uint8ArrayToNative: Kujira not supported yet."); + } else if (chainName === "Neutron") { + throw Error("uint8ArrayToNative: Neutron not supported yet."); + } else if (chainName === "Celestia") { + throw Error("uint8ArrayToNative: Celestia not supported yet."); + } else if (chainName === "Stargaze") { + throw Error("uint8ArrayToNative: Stargaze not supported yet."); + } else if (chainName === "Seda") { + throw Error("uint8ArrayToNative: Seda not supported yet."); + } else if (chainName === "Dymension") { + throw Error("uint8ArrayToNative: Dymension not supported yet."); + } else if (chainName === "Provenance") { + throw Error("uint8ArrayToNative: Provenance not supported yet."); + } else if (chainName === "Sui") { + throw Error("uint8ArrayToNative: Sui not supported yet."); + } else if (chainName === "Aptos") { + throw Error("uint8ArrayToNative: Aptos not supported yet."); + } else if (chainName === "Btc") { + throw Error("uint8ArrayToNative: Btc not supported"); + } else { + // This case is never reached + // const _: never = chainName; + throw Error("Don't know how to convert address for chain " + chainName); + } +}; + +/** + * + * Convert an address in a wormhole's 32-byte hex representation into a chain's native + * string representation. + * + * @throws if address is not the right length for the given chain + */ +export const tryHexToNativeAssetString = (h: string, c: ChainId): string => + c === chainToChainId("Algorand") + ? // Algorand assets are represented by their asset ids, not an address + new UniversalAddress(h).toNative("Algorand").toBigInt().toString() + : new UniversalAddress(h).toNative(toChain(c)).toString(); + +/** + * + * Convert an address in a chain's native representation into a 32-byte hex string + * understood by wormhole (UniversalAddress). + * + * @throws if address is a malformed string for the given chain id + */ +export const tryNativeToHexString = ( + address: string, + chain: ChainId | Chain +): string => { + const chainName = toChain(chain); + if (chainToPlatform(chainName) === "Evm") { + return uint8ArrayToHex(zeroPad(arrayify(address), 32)); + } else if (chainToPlatform(chainName) === "Solana") { + return uint8ArrayToHex(zeroPad(new PublicKey(address).toBytes(), 32)); + } else if (chainName === "Terra") { + if (isNativeDenom(address)) { + return ( + "01" + + uint8ArrayToHex( + zeroPad(new Uint8Array(Buffer.from(address, "ascii")), 31) + ) + ); + } else { + return uint8ArrayToHex(zeroPad(canonicalAddress(address), 32)); + } + } else if ( + chainName === "Terra2" || + chainName === "Injective" || + chainName === "Xpla" || + chainName === "Sei" + ) { + return buildTokenId(chainName, address); + } else if (chainName === "Algorand") { + return nativeStringToHexAlgorand(address); + } else if (chainName == "Wormchain") { + return uint8ArrayToHex(zeroPad(canonicalAddress(address), 32)); + } else if (chainName === "Near") { + return uint8ArrayToHex(arrayify(sha256(Buffer.from(address)))); + } else if (chainName === "Sui") { + if (!isValidSuiType(address) && isValidSuiAddress(address)) { + return uint8ArrayToHex( + zeroPad(arrayify(address, { allowMissingPrefix: true }), 32) + ); + } + throw Error("nativeToHexString: Sui types not supported yet."); + } else if (chainName === "Aptos") { + if (isValidAptosType(address)) { + return getExternalAddressFromType(address); + } + + return uint8ArrayToHex( + zeroPad(arrayify(address, { allowMissingPrefix: true }), 32) + ); + } else { + // If this case is reached + throw Error(`nativeToHexString: ${chainName} not supported yet.`); + } +}; + +/** + * + * Convert an address in a chain's native representation into a 32-byte array + * understood by wormhole. + * + * @throws if address is a malformed string for the given chain id + */ +export function tryNativeToUint8Array( + address: string, + chain: ChainId | Chain +): Uint8Array { + const chainId = toChainId(chain); + return hexToUint8Array(tryNativeToHexString(address, chainId)); +} + +export const isNativeDenomInjective = (denom: string) => denom === "inj"; +export const isNativeDenomXpla = (denom: string) => denom === "axpla"; +export const isNativeDenomSei = (denom: string) => denom === "usei"; +export const isNativeDenomWormchain = (denom: string) => denom === "uworm"; +export const isNativeDenomOsmosis = (denom: string) => denom === "uosmo"; +export const isNativeDenomCosmosHub = (denom: string) => denom === "uatom"; +export const isNativeDenomEvmos = (denom: string) => + denom === "aevmos" || denom === "atevmos"; +export const isNativeDenomKujira = (denom: string) => denom === "ukuji"; +export const isNativeDenomNeutron = (denom: string) => denom === "untrn"; +export const isNativeDenomCelestia = (denom: string) => denom === "utia"; +export const isNativeDenomStargaze = (denom: string) => denom === "ustars"; +export const isNativeDenomSeda = (denom: string) => denom === "aseda"; +export const isNativeDenomDymension = (denom: string) => denom === "adym"; +export const isNativeDenomProvenance = (denom: string) => denom === "nhash"; + +export function isNativeCosmWasmDenom( + chain: PlatformToChains<"Cosmwasm">, + address: string +) { + return ( + ((chain === "Terra" || chain === "Terra2") && isNativeDenom(address)) || + (chain === "Injective" && isNativeDenomInjective(address)) || + (chain === "Xpla" && isNativeDenomXpla(address)) || + (chain === "Sei" && isNativeDenomSei(address)) || + (chain === "Wormchain" && isNativeDenomWormchain(address)) || + (chain === "Osmosis" && isNativeDenomOsmosis(address)) || + (chain === "Cosmoshub" && isNativeDenomCosmosHub(address)) || + (chain === "Evmos" && isNativeDenomEvmos(address)) || + (chain === "Kujira" && isNativeDenomKujira(address)) || + (chain === "Neutron" && isNativeDenomNeutron(address)) || + (chain === "Celestia" && isNativeDenomCelestia(address)) || + (chain === "Stargaze" && isNativeDenomStargaze(address)) || + (chain === "Seda" && isNativeDenomSeda(address)) || + (chain === "Dymension" && isNativeDenomDymension(address)) || + (chain === "Provenance" && isNativeDenomProvenance(address)) + ); +} + +/** + * Test if given string is a valid fully qualified type of moduleAddress::moduleName::structName. + * @param str String to test + * @returns Whether or not given string is a valid type + */ +export const isValidAptosType = (str: string): boolean => + /^(0x)?[0-9a-fA-F]+::\w+::\w+$/.test(str); + +/** + * Hashes the given type. Because fully qualified types are a concept unique to Aptos, this + * output acts as the address on other chains. + * @param fullyQualifiedType Fully qualified type on Aptos + * @returns External address corresponding to given type + */ +export const getExternalAddressFromType = ( + fullyQualifiedType: string +): string => { + // hash the type so it fits into 32 bytes + return sha3_256(fullyQualifiedType); +}; diff --git a/clients/js/src/sdk/sui.ts b/clients/js/src/sdk/sui.ts new file mode 100644 index 000000000..2d199cb03 --- /dev/null +++ b/clients/js/src/sdk/sui.ts @@ -0,0 +1,130 @@ +import { + JsonRpcProvider, + SuiObjectResponse, + isValidSuiAddress as isValidFullSuiAddress, + normalizeSuiAddress, +} from "@mysten/sui.js"; +import { Chain, chainToChainId } from "@wormhole-foundation/sdk"; + +export async function getForeignAssetSui( + provider: JsonRpcProvider, + tokenBridgeStateObjectId: string, + originChain: Chain, + originAddress: Uint8Array +): Promise { + const originChainId = chainToChainId(originChain); + return getTokenCoinType( + provider, + tokenBridgeStateObjectId, + originAddress, + originChainId + ); +} + +export const getTokenCoinType = async ( + provider: JsonRpcProvider, + tokenBridgeStateObjectId: string, + tokenAddress: Uint8Array, + tokenChain: number +): Promise => { + const tokenBridgeStateFields = await getObjectFields( + provider, + tokenBridgeStateObjectId + ); + if (!tokenBridgeStateFields) { + throw new Error("Unable to fetch object fields from token bridge state"); + } + + const coinTypes = tokenBridgeStateFields?.token_registry?.fields?.coin_types; + const coinTypesObjectId = coinTypes?.fields?.id?.id; + if (!coinTypesObjectId) { + throw new Error("Unable to fetch coin types"); + } + + const keyType = getTableKeyType(coinTypes?.type); + if (!keyType) { + throw new Error("Unable to get key type"); + } + + const response = await provider.getDynamicFieldObject({ + parentId: coinTypesObjectId, + name: { + type: keyType, + value: { + addr: [...tokenAddress], + chain: tokenChain, + }, + }, + }); + if (response.error) { + if (response.error.code === "dynamicFieldNotFound") { + return null; + } + throw new Error( + `Unexpected getDynamicFieldObject response ${response.error}` + ); + } + const fields = getFieldsFromObjectResponse(response); + return fields?.value ? trimSuiType(ensureHexPrefix(fields.value)) : null; +}; + +export const getObjectFields = async ( + provider: JsonRpcProvider, + objectId: string +): Promise | null> => { + if (!isValidSuiAddress(objectId)) { + throw new Error(`Invalid object ID: ${objectId}`); + } + + const res = await provider.getObject({ + id: objectId, + options: { + showContent: true, + }, + }); + return getFieldsFromObjectResponse(res); +}; + +export const getFieldsFromObjectResponse = (object: SuiObjectResponse) => { + const content = object.data?.content; + return content && content.dataType === "moveObject" ? content.fields : null; +}; + +export function ensureHexPrefix(x: string): string { + return x.substring(0, 2) !== "0x" ? `0x${x}` : x; +} + +/** + * This method validates any Sui address, even if it's not 32 bytes long, i.e. + * "0x2". This differs from Mysten's implementation, which requires that the + * given address is 32 bytes long. + * @param address Address to check + * @returns If given address is a valid Sui address or not + */ +export const isValidSuiAddress = (address: string): boolean => + isValidFullSuiAddress(normalizeSuiAddress(address)); + +export const getTableKeyType = (tableType: string): string | null => { + if (!tableType) return null; + const match = trimSuiType(tableType).match(/0x2::table::Table<(.*)>/); + if (!match) return null; + const [keyType] = match[1].split(","); + if (!isValidSuiType(keyType)) return null; + return keyType; +}; + +/** + * This method removes leading zeroes for types in order to normalize them + * since some types returned from the RPC have leading zeroes and others don't. + */ +export const trimSuiType = (type: string): string => + type.replace(/(0x)(0*)/g, "0x"); + +export const isValidSuiType = (type: string): boolean => { + const tokens = type.split("::"); + if (tokens.length !== 3) { + return false; + } + + return isValidSuiAddress(tokens[0]) && !!tokens[1] && !!tokens[2]; +}; diff --git a/clients/js/src/solana.ts b/clients/js/src/solana.ts index 1e8dfaf06..f0af5d712 100644 --- a/clients/js/src/solana.ts +++ b/clients/js/src/solana.ts @@ -16,13 +16,6 @@ import { createUpgradeGuardianSetInstruction, createUpgradeContractInstruction as createWormholeUpgradeContractInstruction, } from "@certusone/wormhole-sdk/lib/esm/solana/wormhole"; -import { - CHAINS, - CONTRACTS, - ChainName, - Network, - SolanaChainName, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import * as web3s from "@solana/web3.js"; import base58 from "bs58"; import { NETWORKS } from "./consts"; @@ -32,19 +25,30 @@ import { transferFromSolana, transferNativeSol, } from "@certusone/wormhole-sdk/lib/esm/token_bridge/transfer"; -import { - hexToUint8Array, - tryNativeToUint8Array, -} from "@certusone/wormhole-sdk/lib/esm/utils"; import { PublicKey } from "@solana/web3.js"; import { getAssociatedTokenAddress } from "@solana/spl-token"; +import { + Chain, + Network, + PlatformToChains, + chainToChainId, + chainToPlatform, + chains, + contracts, + platformToChains, +} from "@wormhole-foundation/sdk-base"; +import { hexToUint8Array, tryNativeToUint8Array } from "./sdk/array"; export async function execute_solana( v: VAA, vaa: Buffer, - network: "MAINNET" | "TESTNET" | "DEVNET", - chain: SolanaChainName + network: Network, + chain: Chain ) { + if (chainToPlatform(chain) !== "Solana") { + // This "Solana" platform, also, includes Pythnet + throw new Error("Invalid chain"); + } const { rpc, key } = NETWORKS[network][chain]; if (!key) { throw Error(`No ${network} key defined for ${chain}`); @@ -57,22 +61,24 @@ export async function execute_solana( const connection = setupConnection(rpc); const from = web3s.Keypair.fromSecretKey(base58.decode(key)); - const contracts = CONTRACTS[network][chain]; - if (!contracts.core) { + const coreContract = contracts.coreBridge.get(network, chain); + if (!coreContract) { throw new Error(`Core bridge address not defined for ${chain} ${network}`); } - if (!contracts.nft_bridge) { + const nftContract = contracts.nftBridge.get(network, chain); + if (!nftContract) { throw new Error(`NFT bridge address not defined for ${chain} ${network}`); } - if (!contracts.token_bridge) { + const tbContract = contracts.tokenBridge.get(network, chain); + if (!tbContract) { throw new Error(`Token bridge address not defined for ${chain} ${network}`); } - const bridgeId = new web3s.PublicKey(contracts.core); - const tokenBridgeId = new web3s.PublicKey(contracts.token_bridge); - const nftBridgeId = new web3s.PublicKey(contracts.nft_bridge); + const bridgeId = new web3s.PublicKey(coreContract); + const tokenBridgeId = new web3s.PublicKey(tbContract); + const nftBridgeId = new web3s.PublicKey(nftContract); let ix: web3s.TransactionInstruction; switch (v.payload.module) { @@ -163,7 +169,7 @@ export async function execute_solana( break; case "Transfer": console.log("Completing transfer"); - if (payload.tokenChain === CHAINS[chain]) { + if (payload.tokenChain === chainToChainId(chain)) { ix = createCompleteTransferNativeInstruction( tokenBridgeId, bridgeId, @@ -228,14 +234,15 @@ export async function execute_solana( } export async function transferSolana( - srcChain: SolanaChainName, - dstChain: ChainName, + srcChain: PlatformToChains<"Solana">, + dstChain: Chain, dstAddress: string, tokenAddress: string, amount: string, network: Network, rpc: string ) { + platformToChains("Solana"); const { key } = NETWORKS[network][srcChain]; if (!key) { throw Error(`No ${network} key defined for ${srcChain}`); @@ -244,12 +251,13 @@ export async function transferSolana( const connection = setupConnection(rpc); const keypair = web3s.Keypair.fromSecretKey(base58.decode(key)); - const { core, token_bridge } = CONTRACTS[network][srcChain]; + const core = contracts.coreBridge.get(network, srcChain); if (!core) { throw new Error( `Core bridge address not defined for ${srcChain} ${network}` ); } + const token_bridge = contracts.tokenBridge.get(network, srcChain); if (!token_bridge) { throw new Error( `Token bridge address not defined for ${srcChain} ${network}` @@ -268,8 +276,8 @@ export async function transferSolana( tokenBridgeId, payerAddress, BigInt(amount), - tryNativeToUint8Array(dstAddress, dstChain), - dstChain + tryNativeToUint8Array(dstAddress, chainToChainId(dstChain)), + chainToChainId(dstChain) ); } else { // find the associated token account @@ -287,8 +295,8 @@ export async function transferSolana( fromAddress, tokenAddress, // mintAddress BigInt(amount), - tryNativeToUint8Array(dstAddress, dstChain), - dstChain + tryNativeToUint8Array(dstAddress, chainToChainId(dstChain)), + chainToChainId(dstChain) ); } @@ -316,18 +324,17 @@ export async function queryRegistrationsSolana( network: Network, module: "Core" | "NFTBridge" | "TokenBridge" ): Promise { - const chain = "solana" as ChainName; + const chain = "Solana"; const n = NETWORKS[network][chain]; - const contracts = CONTRACTS[network][chain]; let targetAddress: string | undefined; switch (module) { case "TokenBridge": - targetAddress = contracts.token_bridge; + targetAddress = contracts.tokenBridge(network, chain); break; case "NFTBridge": - targetAddress = contracts.nft_bridge; + targetAddress = contracts.nftBridge(network, chain); break; default: throw new Error(`Invalid module: ${module}`); @@ -346,26 +353,26 @@ export async function queryRegistrationsSolana( // Query the bridge registration for all the chains in parallel. const registrations: (string | null)[][] = await Promise.all( - Object.entries(CHAINS) - .filter(([cname, _]) => cname !== chain && cname !== "unset") - .map(async ([cstr, cid]) => [ + chains + .filter((cname) => cname !== chain) + .map(async (cstr) => [ cstr, await (async () => { - let cname = cstr as ChainName; + // let cname = cstr as Chain; let addr: string | undefined; if (module === "TokenBridge") { - addr = CONTRACTS[network][cname].token_bridge; + addr = contracts.tokenBridge.get(network, cstr); } else { - addr = CONTRACTS[network][cname].nft_bridge; + addr = contracts.nftBridge.get(network, cstr); } if (addr === undefined) { return null; } - let emitter_addr = await getEmitterAddress(cname as ChainName, addr); + let emitter_addr = await getEmitterAddress(cstr, addr); const endpoint = deriveEndpointKey( programId, - cid, + chainToChainId(cstr), hexToUint8Array(emitter_addr) ); diff --git a/clients/js/src/terra.ts b/clients/js/src/terra.ts index 0f3faac76..30591b419 100644 --- a/clients/js/src/terra.ts +++ b/clients/js/src/terra.ts @@ -1,9 +1,3 @@ -import { - CHAINS, - CONTRACTS, - ChainName, - TerraChainName, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import { Coin, Fee, @@ -15,24 +9,29 @@ import { import axios from "axios"; import { fromUint8Array } from "js-base64"; import { NETWORKS } from "./consts"; -import { Network } from "./utils"; import { Payload, impossible } from "./vaa"; import { transferFromTerra } from "@certusone/wormhole-sdk/lib/esm/token_bridge/transfer"; -import { tryNativeToUint8Array } from "@certusone/wormhole-sdk/lib/esm/utils"; +import { + Chain, + Network, + chains, + contracts, + toChainId, +} from "@wormhole-foundation/sdk-base"; +import { tryNativeToUint8Array } from "./sdk/array"; export async function execute_terra( payload: Payload, vaa: Buffer, network: Network, - chain: TerraChainName + chain: "Terra" | "Terra2" ): Promise { const { rpc, key, chain_id } = NETWORKS[network][chain]; - const contracts = CONTRACTS[network][chain]; const terra = new LCDClient({ URL: rpc, chainID: chain_id, - isClassic: chain === "terra", + isClassic: chain === "Terra", }); const wallet = terra.wallet( @@ -46,13 +45,14 @@ export async function execute_terra( switch (payload.module) { case "Core": { - if (!contracts.core) { + const coreContract = contracts.coreBridge(network, chain); + if (!coreContract) { throw new Error( `Core bridge address not defined for ${chain} ${network}` ); } - target_contract = contracts.core; + target_contract = coreContract; // sigh... execute_msg = { submit_v_a_a: { @@ -75,14 +75,15 @@ export async function execute_terra( break; } case "NFTBridge": { - if (!contracts.nft_bridge) { + const nftContract = contracts.nftBridge.get(network, chain); + if (!nftContract) { // NOTE: this code can safely be removed once the terra NFT bridge is // released, but it's fine for it to stay, as the condition will just be // skipped once 'contracts.nft_bridge' is defined throw new Error(`NFT bridge not supported yet for ${chain}`); } - target_contract = contracts.nft_bridge; + target_contract = nftContract; execute_msg = { submit_vaa: { data: fromUint8Array(vaa), @@ -107,13 +108,14 @@ export async function execute_terra( break; } case "TokenBridge": { - if (!contracts.token_bridge) { + const tbContract = contracts.tokenBridge.get(network, chain); + if (!tbContract) { throw new Error( `Token bridge address not defined for ${chain} ${network}` ); } - target_contract = contracts.token_bridge; + target_contract = tbContract; execute_msg = { submit_vaa: { data: fromUint8Array(vaa), @@ -160,8 +162,8 @@ export async function execute_terra( } export async function transferTerra( - srcChain: TerraChainName, - dstChain: ChainName, + srcChain: "Terra" | "Terra2", + dstChain: Chain, dstAddress: string, tokenAddress: string, amount: string, @@ -172,7 +174,7 @@ export async function transferTerra( if (!n.key) { throw Error(`No ${network} key defined for ${srcChain} (see networks.ts)`); } - const { token_bridge } = CONTRACTS[network][srcChain]; + const token_bridge = contracts.tokenBridge.get(network, srcChain); if (!token_bridge) { throw Error(`Unknown token bridge contract on ${network} for ${srcChain}`); } @@ -180,7 +182,7 @@ export async function transferTerra( const terra = new LCDClient({ URL: rpc, chainID: n.chain_id, - isClassic: srcChain === "terra", + isClassic: srcChain === "Terra", }); const wallet = terra.wallet( @@ -194,8 +196,8 @@ export async function transferTerra( token_bridge, tokenAddress, amount, - dstChain, - tryNativeToUint8Array(dstAddress, dstChain) + toChainId(dstChain), + tryNativeToUint8Array(dstAddress, toChainId(dstChain)) ); await signAndSendTx(terra, wallet, msgs); } @@ -242,20 +244,19 @@ async function signAndSendTx( export async function queryRegistrationsTerra( network: Network, - chain: TerraChainName, + chain: "Terra" | "Terra2", module: "Core" | "NFTBridge" | "TokenBridge" ): Promise { const n = NETWORKS[network][chain]; - const contracts = CONTRACTS[network][chain]; let targetContract: string | undefined; switch (module) { case "TokenBridge": - targetContract = contracts.token_bridge; + targetContract = contracts.tokenBridge(network, chain); break; case "NFTBridge": - targetContract = contracts.nft_bridge; + targetContract = contracts.nftBridge.get(network, chain); break; default: throw new Error(`Invalid module: ${module}`); @@ -276,19 +277,19 @@ export async function queryRegistrationsTerra( const client = new LCDClient({ URL: n.rpc, chainID: n.chain_id, - isClassic: chain === "terra", + isClassic: chain === "Terra", }); // Query the bridge registration for all the chains in parallel. const registrations: (string | null)[][] = await Promise.all( - Object.entries(CHAINS) - .filter(([cname, _]) => cname !== chain && cname !== "unset") - .map(async ([cname, cid]) => [ + chains + .filter((cname) => cname !== chain) + .map(async (cname) => [ cname, await (async () => { let query_msg = { chain_registration: { - chain: cid, + chain: toChainId(cname), }, }; diff --git a/clients/js/src/tests.ts.test b/clients/js/src/tests.ts.test new file mode 100644 index 000000000..1b72ad783 --- /dev/null +++ b/clients/js/src/tests.ts.test @@ -0,0 +1,76 @@ +// > paul@W7windows:~$ worm evm info -n mainnet -c ethereum -m TokenBridge +// { +// "address": "0x3ee18B2214AFF97000D974cf647E7C347E8fa585", +// "wormhole": "0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B", +// "implementation": "0x381752f5458282d317d12C30D2Bd4D6E1FD8841e", +// "isInitialized": true, +// "tokenImplementation": "0x0fD04a68d3c3A692d6Fa30384D1A87Ef93554eE6", +// "chainId": 2, +// "finality": 1, +// "evmChainId": "1", +// "isFork": false, +// "governanceChainId": 1, +// "governanceContract": "0x0000000000000000000000000000000000000000000000000000000000000004", +// "WETH": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", +// "registrations": { +// "solana": "0xec7372995d5cc8732397fb0ad35c0121e0eaa90d26f828a534cab54391b3a4f5", +// "terra": "0x0000000000000000000000007cf7b764e38a0a5e967972c1df77d432510564e2", +// "bsc": "0x000000000000000000000000b6f6d86a8f9879a9c87f643768d9efc38c1da6e7", +// "polygon": "0x0000000000000000000000005a58505a96d1dbf8df91cb21b54419fc36e93fde", +// "avalanche": "0x0000000000000000000000000e082f06ff657d94310cb8ce8b0d9a04541d8052", +// "oasis": "0x0000000000000000000000005848c791e09901b40a9ef749f2a6735b418d7564", +// "algorand": "0x67e93fa6c8ac5c819990aa7340c0c16b508abb1178be9b30d024b8ac25193d45", +// "aurora": "0x00000000000000000000000051b5123a7b0f9b2ba265f9c4c8de7d78d52f510f", +// "fantom": "0x0000000000000000000000007c9fc5741288cdfdd83ceb07f3ea7e22618d79d2", +// "karura": "0x000000000000000000000000ae9d7fe007b3327aa64a32824aaac52c42a6e624", +// "acala": "0x000000000000000000000000ae9d7fe007b3327aa64a32824aaac52c42a6e624", +// "klaytn": "0x0000000000000000000000005b08ac39eaed75c0439fc750d9fe7e1f9dd0193f", +// "celo": "0x000000000000000000000000796dff6d74f3e27060b71255fe517bfb23c93eed", +// "near": "0x148410499d3fcda4dcfd68a1ebfcdddda16ab28326448d4aae4d2f0465cdfcb7", +// "moonbeam": "0x000000000000000000000000b1731c586ca89a23809861c6103f0b96b3f57d92", +// "neon": "0x0000000000000000000000000000000000000000000000000000000000000000", +// "terra2": "0xa463ad028fb79679cfc8ce1efba35ac0e77b35080a1abe9bebe83461f176b0a3", +// "injective": "0x00000000000000000000000045dbea4617971d93188eda21530bc6503d153313", +// "osmosis": "0x0000000000000000000000000000000000000000000000000000000000000000", +// "sui": "0xccceeb29348f71bdd22ffef43a2a19c1f5b5e17c5cca5411529120182672ade5", +// "aptos": "0x0000000000000000000000000000000000000000000000000000000000000001", +// "arbitrum": "0x0000000000000000000000000b2402144bb366a632d14b83f244d2e0e21bd39c", +// "optimism": "0x0000000000000000000000001d68124e65fafc907325e3edbf8c4d84499daa8b", +// "gnosis": "0x0000000000000000000000000000000000000000000000000000000000000000", +// "pythnet": "0x0000000000000000000000000000000000000000000000000000000000000000", +// "xpla": "0x8f9cf727175353b17a5f574270e370776123d90fd74956ae4277962b4fdee24c", +// "btc": "0x0000000000000000000000000000000000000000000000000000000000000000", +// "base": "0x0000000000000000000000008d2de8d2f73f1f4cab472ac9a881c9b123c79627", +// "sei": "0x86c5fd957e2db8389553e1728f9c27964b22a8154091ccba54d75f4b10c61f5e", +// "rootstock": "0x0000000000000000000000000000000000000000000000000000000000000000", +// "scroll": "0x00000000000000000000000024850c6f61c438823f01b7a3bf2b89b72174fa9d", +// "mantle": "0x0000000000000000000000000000000000000000000000000000000000000000", +// "blast": "0x00000000000000000000000024850c6f61c438823f01b7a3bf2b89b72174fa9d", +// "xlayer": "0x0000000000000000000000000000000000000000000000000000000000000000", +// "linea": "0x0000000000000000000000000000000000000000000000000000000000000000", +// "berachain": "0x0000000000000000000000000000000000000000000000000000000000000000", +// "seievm": "0x0000000000000000000000000000000000000000000000000000000000000000", +// "wormchain": "0xaeb534c45c3049d380b9d9b966f9895f53abd4301bfaff407fa09dea8ae7a924", +// "cosmoshub": "0x0000000000000000000000000000000000000000000000000000000000000000", +// "evmos": "0x0000000000000000000000000000000000000000000000000000000000000000", +// "kujira": "0x0000000000000000000000000000000000000000000000000000000000000000", +// "neutron": "0x0000000000000000000000000000000000000000000000000000000000000000", +// "celestia": "0x0000000000000000000000000000000000000000000000000000000000000000", +// "stargaze": "0x0000000000000000000000000000000000000000000000000000000000000000", +// "seda": "0x0000000000000000000000000000000000000000000000000000000000000000", +// "dymension": "0x0000000000000000000000000000000000000000000000000000000000000000", +// "provenance": "0x0000000000000000000000000000000000000000000000000000000000000000", +// "sepolia": "0x0000000000000000000000000000000000000000000000000000000000000000", +// "arbitrum_sepolia": "0x0000000000000000000000000000000000000000000000000000000000000000", +// "base_sepolia": "0x0000000000000000000000000000000000000000000000000000000000000000", +// "optimism_sepolia": "0x0000000000000000000000000000000000000000000000000000000000000000", +// "holesky": "0x0000000000000000000000000000000000000000000000000000000000000000", +// "polygon_sepolia": "0x0000000000000000000000000000000000000000000000000000000000000000" +// } +// } + +// >>>worm info registrations mainnet ethereum TokenBridge -v +// Verification of ethereum MAINNET succeeded! + +// >>>paul@W7windows:~$ worm info contract mainnet ethereum TokenBridge +// 0x3ee18B2214AFF97000D974cf647E7C347E8fa585 diff --git a/clients/js/src/utils.ts b/clients/js/src/utils.ts index f1a76e435..e7a3bec23 100644 --- a/clients/js/src/utils.ts +++ b/clients/js/src/utils.ts @@ -1,14 +1,14 @@ +import { + Chain, + ChainId, + Network, + PlatformToChains, + chainToPlatform, + toChain, +} from "@wormhole-foundation/sdk-base"; import { spawnSync } from "child_process"; import { ethers } from "ethers"; -export type Network = "MAINNET" | "TESTNET" | "DEVNET"; - -export function assertNetwork(n: string): asserts n is Network { - if (n !== "MAINNET" && n !== "TESTNET" && n !== "DEVNET") { - throw Error(`Unknown network: ${n}`); - } -} - export const checkBinary = (binaryName: string, readmeUrl?: string): void => { const binary = spawnSync(binaryName, ["--version"]); if (binary.status !== 0) { @@ -29,3 +29,33 @@ export const evm_address = (x: string): string => { export const hex = (x: string): string => { return ethers.utils.hexlify(x, { allowMissingPrefix: true }); }; + +export function assertEVMChain( + chain: ChainId | Chain +): asserts chain is PlatformToChains<"Evm"> { + if (chainToPlatform(toChain(chain)) !== "Evm") { + throw Error(`Expected an EVM chain, but ${chain} is not`); + } +} + +export function getNetwork(network: string): Network { + const lcNetwork: string = network.toLowerCase(); + if (lcNetwork === "mainnet") { + return "Mainnet"; + } + if (lcNetwork === "testnet") { + return "Testnet"; + } + if (lcNetwork === "devnet") { + return "Devnet"; + } + throw new Error(`Unknown network: ${network}`); +} + +export function chainToChain(input: string): Chain { + if (input.length < 2) { + throw new Error(`Invalid chain: ${input}`); + } + const chainStr = input[0].toUpperCase() + input.slice(1).toLowerCase(); + return toChain(chainStr); +} diff --git a/clients/js/src/xpla.ts b/clients/js/src/xpla.ts index f5c404c3f..966372c15 100644 --- a/clients/js/src/xpla.ts +++ b/clients/js/src/xpla.ts @@ -1,7 +1,3 @@ -import { - CONTRACTS, - ChainName, -} from "@certusone/wormhole-sdk/lib/esm/utils/consts"; import { Coin, Fee, @@ -12,18 +8,22 @@ import { } from "@xpla/xpla.js"; import { fromUint8Array } from "js-base64"; import { NETWORKS } from "./consts"; -import { Network } from "./utils"; import { Payload, impossible } from "./vaa"; import { transferFromXpla } from "@certusone/wormhole-sdk/lib/esm/token_bridge/transfer"; -import { tryNativeToUint8Array } from "@certusone/wormhole-sdk/lib/esm/utils"; +import { + Chain, + chainToChainId, + contracts, + Network, +} from "@wormhole-foundation/sdk-base"; +import { tryNativeToUint8Array } from "./sdk/array"; export async function execute_xpla( payload: Payload, vaa: Buffer, network: Network ) { - const { rpc, key, chain_id } = NETWORKS[network].xpla; - const contracts = CONTRACTS[network].xpla; + const { rpc, key, chain_id } = NETWORKS[network].Xpla; if (!key) { throw Error(`No ${network} key defined for XPLA`); } @@ -47,11 +47,12 @@ export async function execute_xpla( let execute_msg: object; switch (payload.module) { case "Core": { - if (!contracts.core) { + const coreContract = contracts.coreBridge.get(network, "Xpla"); + if (!coreContract) { throw new Error(`Core bridge address not defined for XPLA ${network}`); } - target_contract = contracts.core; + target_contract = coreContract; execute_msg = { submit_v_a_a: { vaa: fromUint8Array(vaa), @@ -73,14 +74,15 @@ export async function execute_xpla( break; } case "NFTBridge": { - if (!contracts.nft_bridge) { + const nftContract = contracts.nftBridge.get(network, "Xpla"); + if (!nftContract) { // NOTE: this code can safely be removed once the terra NFT bridge is // released, but it's fine for it to stay, as the condition will just be // skipped once 'contracts.nft_bridge' is defined throw new Error("NFT bridge not supported yet for XPLA"); } - target_contract = contracts.nft_bridge; + target_contract = nftContract; execute_msg = { submit_vaa: { data: fromUint8Array(vaa), @@ -105,11 +107,12 @@ export async function execute_xpla( break; } case "TokenBridge": { - if (!contracts.token_bridge) { + const tbContract = contracts.tokenBridge.get(network, "Xpla"); + if (!tbContract) { throw new Error(`Token bridge address not defined for XPLA ${network}`); } - target_contract = contracts.token_bridge; + target_contract = tbContract; execute_msg = { submit_vaa: { data: fromUint8Array(vaa), @@ -156,18 +159,18 @@ export async function execute_xpla( } export async function transferXpla( - dstChain: ChainName, + dstChain: Chain, dstAddress: string, tokenAddress: string, amount: string, network: Network, rpc: string ) { - const { key, chain_id } = NETWORKS[network].xpla; + const { key, chain_id } = NETWORKS[network].Xpla; if (!key) { throw Error(`No ${network} key defined for XPLA`); } - const { token_bridge } = CONTRACTS[network].xpla; + const token_bridge = contracts.tokenBridge.get(network, "Xpla"); if (token_bridge == undefined) { throw Error(`Unknown token bridge contract on ${network} for XPLA`); } @@ -185,8 +188,8 @@ export async function transferXpla( token_bridge, tokenAddress, amount, - dstChain, - tryNativeToUint8Array(dstAddress, dstChain) + chainToChainId(dstChain), + tryNativeToUint8Array(dstAddress, chainToChainId(dstChain)) ); await signAndSendTx(client, wallet, msgs); } diff --git a/clients/js/tsconfig.json b/clients/js/tsconfig.json index 780554203..ce7a76b2b 100644 --- a/clients/js/tsconfig.json +++ b/clients/js/tsconfig.json @@ -6,6 +6,7 @@ "outDir": "./build", "moduleResolution": "node", "esModuleInterop": true, + "skipLibCheck": true, "forceConsistentCasingInFileNames": true, "strict": true },