diff --git a/.papi/descriptors/.gitignore b/.papi/descriptors/.gitignore new file mode 100644 index 0000000..557cc81 --- /dev/null +++ b/.papi/descriptors/.gitignore @@ -0,0 +1,3 @@ +* +!.gitignore +!package.json diff --git a/.papi/descriptors/package.json b/.papi/descriptors/package.json new file mode 100644 index 0000000..aa2887d --- /dev/null +++ b/.papi/descriptors/package.json @@ -0,0 +1,25 @@ +{ + "version": "0.1.0-autogenerated.3461409763779961730", + "name": "@polkadot-api/descriptors", + "files": [ + "dist" + ], + "type": "module", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "module": "./dist/index.js", + "import": "./dist/index.js", + "default": "./dist/index.js" + }, + "./package.json": "./package.json" + }, + "main": "./dist/index.js", + "module": "./dist/index.js", + "browser": "./dist/index.js", + "types": "./dist/index.d.ts", + "sideEffects": false, + "peerDependencies": { + "polkadot-api": ">=2.0.0" + } +} diff --git a/.papi/polkadot-api.json b/.papi/polkadot-api.json new file mode 100644 index 0000000..8820e5a --- /dev/null +++ b/.papi/polkadot-api.json @@ -0,0 +1,9 @@ +{ + "version": 0, + "descriptorPath": ".papi\\descriptors", + "entries": { + "casper": { + "metadata": "metadatas/casper_runtime.scale" + } + } +} diff --git a/metadatas/casper_runtime.scale b/metadatas/casper_runtime.scale new file mode 100644 index 0000000..bda52f5 Binary files /dev/null and b/metadatas/casper_runtime.scale differ diff --git a/package.json b/package.json index 1409f5c..613ddcb 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,8 @@ "@tanstack/react-query": "^5.67.2", "@tanstack/react-query-devtools": "^5.67.2", "@wagmi/core": "^2.17.3", + "polkadot-api": "^3.3.0", + "@polkadot-api/descriptors": "file:./.papi/descriptors", "react": "^19.0.0", "react-dom": "^19.0.0", "react-ga4": "^2.1.0", @@ -56,5 +58,10 @@ "vite": "^6.2.0", "vite-plugin-svgr": "^4.3.0" }, + "pnpm": { + "overrides": { + "@polkadot-api/json-rpc-provider": "0.2.0" + } + }, "packageManager": "pnpm@9.6.0+sha512.38dc6fba8dba35b39340b9700112c2fe1e12f10b17134715a4aa98ccf7bb035e76fd981cf0bb384dfa98f8d6af5481c2bef2f4266a24bfa20c34eb7147ce0b5e" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 28d471f..37082a0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,9 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + '@polkadot-api/json-rpc-provider': 0.2.0 + importers: .: @@ -35,6 +38,9 @@ importers: '@mui/utils': specifier: ^6.4.6 version: 6.4.6(@types/react@19.0.10)(react@19.0.0) + '@polkadot-api/descriptors': + specifier: file:./.papi/descriptors + version: file:.papi/descriptors(polkadot-api@3.3.0(bufferutil@4.0.9)(esbuild@0.25.0)(rxjs@7.8.1)(utf-8-validate@5.0.10)) '@polkadot-api/metadata-builders': specifier: 0.13.0 version: 0.13.0 @@ -67,7 +73,10 @@ importers: version: 5.67.2(@tanstack/react-query@5.67.2(react@19.0.0))(react@19.0.0) '@wagmi/core': specifier: ^2.17.3 - version: 2.17.3(@tanstack/query-core@5.67.2)(@types/react@19.0.10)(immer@10.1.1)(react@19.0.0)(use-sync-external-store@1.4.0(react@19.0.0))(viem@2.31.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4)) + version: 2.17.3(@tanstack/query-core@5.67.2)(@types/react@19.0.10)(immer@10.1.1)(react@19.0.0)(typescript@6.0.3)(use-sync-external-store@1.4.0(react@19.0.0))(viem@2.31.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4)) + polkadot-api: + specifier: ^3.3.0 + version: 3.3.0(bufferutil@4.0.9)(esbuild@0.25.0)(rxjs@7.8.1)(utf-8-validate@5.0.10) react: specifier: ^19.0.0 version: 19.0.0 @@ -100,10 +109,10 @@ importers: version: 2.2.5(react@19.0.0) viem: specifier: ^2.31.0 - version: 2.31.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + version: 2.31.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) wagmi: specifier: ^2.15.6 - version: 2.15.6(@tanstack/query-core@5.67.2)(@tanstack/react-query@5.67.2(react@19.0.0))(@types/react@19.0.10)(bufferutil@4.0.9)(immer@10.1.1)(react@19.0.0)(utf-8-validate@5.0.10)(viem@2.31.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4) + version: 2.15.6(@tanstack/query-core@5.67.2)(@tanstack/react-query@5.67.2(react@19.0.0))(@types/react@19.0.10)(bufferutil@4.0.9)(immer@10.1.1)(react@19.0.0)(typescript@6.0.3)(utf-8-validate@5.0.10)(viem@2.31.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4) devDependencies: '@eslint/js': specifier: ^9.21.0 @@ -116,7 +125,7 @@ importers: version: 19.0.4(@types/react@19.0.10) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.1(@types/node@22.7.5)(sass-embedded@1.85.1)) + version: 4.3.4(vite@6.2.1(@types/node@26.6.6)(sass-embedded@1.85.1)) eslint: specifier: ^9.21.0 version: 9.21.0 @@ -134,10 +143,10 @@ importers: version: 1.85.1 vite: specifier: ^6.2.0 - version: 6.2.1(@types/node@22.7.5)(sass-embedded@1.85.1) + version: 6.2.1(@types/node@26.6.6)(sass-embedded@1.85.1) vite-plugin-svgr: specifier: ^4.3.0 - version: 4.3.0(rollup@4.34.9)(vite@6.2.1(@types/node@22.7.5)(sass-embedded@1.85.1)) + version: 4.3.0(rollup@4.67.5)(typescript@6.0.3)(vite@6.2.1(@types/node@26.6.6)(sass-embedded@1.85.1)) packages: @@ -244,6 +253,11 @@ packages: '@coinbase/wallet-sdk@4.3.3': resolution: {integrity: sha512-h8gMLQNvP5TIJVXFOyQZaxbi1Mg5alFR4Z2/PEIngdyXZEoQGcVhzyQGuDa3t9zpllxvqfAaKfzDhsfCo+nhSQ==} + '@commander-js/extra-typings@15.0.0': + resolution: {integrity: sha512-yeJlba62xqmkgELUsn7356MEnzLLu/fw2x4lofFqGnXh6YysRdEs2BaLeLtg1+KU0AXvMeqQvTTp+3hBEBK+EA==} + peerDependencies: + commander: ~15.0.0 + '@ecies/ciphers@0.2.3': resolution: {integrity: sha512-tapn6XhOueMwht3E2UzY0ZZjYokdaw9XtL9kEyjhQ/Fb9vL9xTFbOaI+fV0AWvTpYu4BNloC6getKW6NtSg4mA==} engines: {bun: '>=1', deno: '>=2', node: '>=16'} @@ -880,12 +894,43 @@ packages: resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} engines: {node: ^14.21.3 || >=16} + '@noble/hashes@2.4.0': + resolution: {integrity: sha512-X5XaVWZIBCT7HHZGm5I7ZQXDwLG+bGXuSrMQAW+7Zvl87h1kmc1ZB1VSRJcpUfoUrGQp4Fkoxm5kZ+Ms+aW+eA==} + engines: {node: '>= 20.19.0'} + '@paulmillr/qr@0.2.1': resolution: {integrity: sha512-IHnV6A+zxU7XwmKFinmYjUcwlyK9+xkG3/s9KcQhI9BjQKycrJ1JRO+FbNYPwZiPKW3je/DR0k7w8/gLa5eaxQ==} deprecated: 'The package is now available as "qr": npm install qr' - '@polkadot-api/json-rpc-provider@0.0.4': - resolution: {integrity: sha512-9cDijLIxzHOBuq6yHqpqjJ9jBmXrctjc1OFqU+tQrS96adQze3mTIH6DTgfb/0LMrqxzxffz1HQGrIlEH00WrA==} + '@polkadot-api/cli@0.22.5': + resolution: {integrity: sha512-kMzV11SNhY+F5c+seMS8ieEnq3r8azbS81AgJZL8a8gKU7Q2W5E/sG/hetTd7NZCeLnYvDWpbat1GCZzxita0A==} + hasBin: true + + '@polkadot-api/codegen@0.23.2': + resolution: {integrity: sha512-vV7UybrNMCtB79phMBFVWoVaYO8ApVE/5fE5uw7TBUMFTcDZZ3VwVM2qVnNCK/X4jH/FAnMSGoOrdjRVQyeSFA==} + + '@polkadot-api/descriptors@file:.papi/descriptors': + resolution: {directory: .papi/descriptors, type: directory} + peerDependencies: + polkadot-api: '>=2.0.0' + + '@polkadot-api/ink-contracts@0.7.2': + resolution: {integrity: sha512-ipKLbaboWImnjO0TuqLJNDdzoC0tLUTvJ+XNKW0wWm1OM2cXX8X0nXfAfTGy14PdUkyKjLncoPNoqgbEhmAh/Q==} + + '@polkadot-api/json-rpc-provider-proxy@0.4.1': + resolution: {integrity: sha512-F1Hw01C60jn98KQ0vBbgcwAvEcMcKLsJ5kFzq600sgjc6Rnbn1VF/XjTdrjcIqvfpR9sXyGIrpImrov2Usbrsw==} + + '@polkadot-api/json-rpc-provider@0.2.0': + resolution: {integrity: sha512-lhkuBS/x06i3djQIN7p8jVkMnYuGsUAEMS6RhdWeEpz7X/8/APER4Wdih7MEBovCuwVSCTjOxl8f+alH7AZHZg==} + + '@polkadot-api/known-chains@0.12.5': + resolution: {integrity: sha512-odoCGRMKTMEq5wS851aw4qwEExvEX4j57sUI3R09+GW4RACnDqgbYxu8GKdqkXtrnHWAUr8lKMaN6RXaHfkTdQ==} + + '@polkadot-api/logs-provider@0.2.0': + resolution: {integrity: sha512-BH9YdxZu+ZBPPAUwGrvqHPn1hQStL2Im3MmTwYkwXOWW2HlGHULcF65QKvyK+T6/mj2vDvl3MgivnGkUw4pVxg==} + + '@polkadot-api/merkleize-metadata@1.3.2': + resolution: {integrity: sha512-M/ja1A+Hec16oGSiP8qvDuELe0JyxxEBwrfYjg/rE66yM/FiQ+29RrrmHQ8N20AtTlKn4RTaE3gbqQ02K6n1+w==} '@polkadot-api/metadata-builders@0.10.2': resolution: {integrity: sha512-rtdihBFd25oT9/71Q+EOR9q6E6mCl1pPe/2He/LtlY0TyHiYqO2KpMZNXkoGcw1RHvrV+CAtDFMvK1j3n8aW8w==} @@ -893,27 +938,89 @@ packages: '@polkadot-api/metadata-builders@0.13.0': resolution: {integrity: sha512-z8AT0mbOniHmiI0sNjQSUtOXGLHTqFNV8bqdyes1WAMbpBEIcnTlQxhIrJkpPEQCh7kLNTHqa3OQjSIrOH7X1Q==} + '@polkadot-api/metadata-builders@0.15.2': + resolution: {integrity: sha512-V8drZbzvu6Aa1EKQs4x/jOLFO05uATuEZagSqQ76ZF4skb0T8qhFmFrXnYpIiwkPndxo0mbY73cfz7rRdpshvw==} + + '@polkadot-api/metadata-compatibility@0.7.2': + resolution: {integrity: sha512-sDIbIZHNbf6bm1k56RZf+vUakwni7p8OpO8UUr+7k2KVeQ6K+z1lWmY+Y23IwcgvUI8Lh+2SxH7vPtAsggevSw==} + + '@polkadot-api/observable-client@0.19.4': + resolution: {integrity: sha512-xGzTQwdFfy7SYjS4n6op99rVJwCU0ghAHAEYLTfs3K1bO9dNZcgfduN/6imvdaZCOhZ2SPLBKjJvcEBUIzHW1Q==} + peerDependencies: + rxjs: '>=7.8.0' + '@polkadot-api/observable-client@0.8.6': resolution: {integrity: sha512-ci5HC8TYjGxoTG/QM+LLuGrfIsn+dtR7BBQz483c/ML8K/Hxl9v+evgZzPi9xNMwZ25mytn9lhA5dovYSEauSA==} peerDependencies: '@polkadot-api/substrate-client': 0.3.0 rxjs: '>=7.8.0' + '@polkadot-api/pjs-signer@0.9.0': + resolution: {integrity: sha512-FMVMh5Gqmx0SFrsRJZgYwk44wfNz8N9vqz8zquj6eQYk+XB8KNEds15YCxsCFuyYVzKQ9CRnLSpOUkh24jY6BA==} + + '@polkadot-api/raw-client@0.3.0': + resolution: {integrity: sha512-u/wM9W7ugIXxBSOEV8+zvQI43b5vgSI0pvE0Rg8PV0G65BTLK0SMc2o2SQL0HtS5+bi5sw/gg4reBJ/0a4U0cw==} + + '@polkadot-api/raw-tx-creator@0.5.0': + resolution: {integrity: sha512-NVI7rFc+4x6fjKumR0W6CWA8EbSF8YnPI0zns8wL4qmC/FS1VfwCW4zP3EcGZGcxP8lOc7V0pS7Ky/OpbAIAFw==} + peerDependencies: + rxjs: '>=7.8.0' + + '@polkadot-api/signers-common@0.4.0': + resolution: {integrity: sha512-jMSZxMcfzPqgU+wVT75H7a5cHBS59ppoGghG3L7Ef9FguFa4p6LvH4pK2xjEQ2i21HIZ7KKKojWSSklnQzUUrg==} + peerDependencies: + rxjs: '>=7.8.0' + + '@polkadot-api/sm-provider@0.3.10': + resolution: {integrity: sha512-TsuUf81ej0zIeSsSo8c0MEJO5Z3iO7ZMBlv5A6JPcmCx9bZhS/Vjj+DWQW7V+M05KYWdlbS//2tpOg69xgb7sA==} + peerDependencies: + '@polkadot-api/smoldot': '>=0.3' + + '@polkadot-api/smoldot@0.4.9': + resolution: {integrity: sha512-UbebkD0DOH3UIUAQAhto8UhyVaG3zmiquts4n7BDhZ2x8JSGpskHZv1VJT7GsCJcYBfHy2L5btZpgYrgpKU1CA==} + '@polkadot-api/substrate-bindings@0.11.1': resolution: {integrity: sha512-+oqAZB7y18KrP/DqKmU2P3nNmRzjCY7edtW7tyA1g1jPouF7HhRr/Q13lJseDX9sdE2FZGrKZtivzsw8XeXBng==} '@polkadot-api/substrate-bindings@0.15.0': resolution: {integrity: sha512-w/GSQeEYfFqyM50s2c3KDfl/qumtLnk7EUALXER/eFWSawXYVeL3PCg95GZfDFrc7MODVmq+XeXUoZBFGHvodA==} + '@polkadot-api/substrate-bindings@0.21.2': + resolution: {integrity: sha512-YjQnmS1dfoQky3Qoddm59CCK+5jxl57uvXtGt0qwbgJ7y0zHHznBCDPv8lU4iUzQKS4dn7aSwIi5j7CE3DGAbQ==} + '@polkadot-api/substrate-client@0.3.0': resolution: {integrity: sha512-0hEvQLKH2zhaFzE8DPkWehvJilec8u2O2wbIEUStm0OJ8jIFtJ40MFjXQfB01dXBWUz1KaVBqS6xd3sZA90Dpw==} + '@polkadot-api/substrate-client@0.7.0': + resolution: {integrity: sha512-TWCc4MAMa5SLVQXmomLHknbj+bztQ/Yclgwm8ENBhz8hR7c9rw9FBAkCa02jMBMCAygPhp3ayGRq+UFcF8KIxQ==} + + '@polkadot-api/tx-creator@0.2.0': + resolution: {integrity: sha512-xac4Lx/8bB7+glcU/HG8uzPYdRFcs0MkSni07xrTtOizWt6j07Q9XEPxtqmT7aL5Ne93uCl0bhvk+VhezHbf0w==} + peerDependencies: + rxjs: ^7.8.2 + '@polkadot-api/utils@0.1.2': resolution: {integrity: sha512-yhs5k2a8N1SBJcz7EthZoazzLQUkZxbf+0271Xzu42C5AEM9K9uFLbsB+ojzHEM72O5X8lPtSwGKNmS7WQyDyg==} '@polkadot-api/utils@0.2.0': resolution: {integrity: sha512-nY3i5fQJoAxU4n3bD7Fs208/KR2J95SGfVc58kDjbRYN5a84kWaGEqzjBNtP9oqht49POM8Bm9mbIrkvC1Bzuw==} + '@polkadot-api/utils@0.4.0': + resolution: {integrity: sha512-9b/hwRM0UloLWV7SfpNaSD/4k8UQAHoaACAk7Xe+1MlfAm2JtnmPiB1GfGrfTyBlsrJVUIBCZpEmbmxVMaIqBA==} + + '@polkadot-api/wasm-executor@0.2.3': + resolution: {integrity: sha512-B2h1o+Qlo9idpASaHvMSoViB2I5ko5OAfwfhYF8LQDkTADK0B+SeStzNj1Qn+FG34wqTuv7HzBCdjaUgzYINJQ==} + + '@polkadot-api/ws-middleware@0.4.2': + resolution: {integrity: sha512-UostyJupfCk5jh+MUOjBBZ6qRYwQ2UhPWGnv25sVc0thRzBO9tV93sMg+jsfGLyNOSBmW8F9UlzXYut1/vEfIA==} + peerDependencies: + rxjs: '>=7.8.0' + + '@polkadot-api/ws-provider@0.9.2': + resolution: {integrity: sha512-FWISrSF4op3WayDUtxjLGDtq/KfhnrbseJRp7UxuMNccwCHaGpwkFvO5meVLN71BaHyFv9gCFA3rV6tPDxcVdg==} + peerDependencies: + rxjs: '>=7.8.0' + '@polkadot-labs/hdkd-helpers@0.0.20': resolution: {integrity: sha512-P3o1FpPqLACaHhDT/J6O3xYQIBdOs0FDJtZQI8/LGotgIGp85mKDnH/cSSK3QC2i67ZY/d/POs8K0jEspLMiGg==} @@ -1039,51 +1146,116 @@ packages: cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.67.5': + resolution: {integrity: sha512-FdWPeulkH+FH+rBzyKBD59tuVN4tRKvmVilSJm0OcnoYsQTpd9UhD78OaPcsYqo2fX6hCwAG0YIjrDLoQ3pR3g==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.34.9': resolution: {integrity: sha512-4KW7P53h6HtJf5Y608T1ISKvNIYLWRKMvfnG0c44M6In4DQVU58HZFEVhWINDZKp7FZps98G3gxwC1sb0wXUUg==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.67.5': + resolution: {integrity: sha512-bmkDuBGnF+Ji8atWlXcNjxIC52ShCbdXPbW7Nz0lRoCFi1lrvsO0XobJY36kTj7duc1vOmGJeQ9vtVuGjnzihA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-android-x64@4.67.5': + resolution: {integrity: sha512-6KvVfnqPTqmbQ5YobMl9HYiSymAsCt8HlNeriDshwJQcveXwT+vIMW6wGL1RcJbXH9+r3BAJvjab5+rIgtSEqA==} + cpu: [x64] + os: [android] + '@rollup/rollup-darwin-arm64@4.34.9': resolution: {integrity: sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.67.5': + resolution: {integrity: sha512-SNamgdrY69oPdBrQV9fKGo6PSmKcVhyn0D0jnDmcqgRJvrxQGGBhtekOHTUJ7TCgkW0nE8XMH9v2CwXmjNIzVA==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.34.9': resolution: {integrity: sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.67.5': + resolution: {integrity: sha512-HNdl34thiJtHDSglogjmAlQ296L8cc8zA7ODH65nnmY7E+jPP55WEbh8J5583rWFLMjxyYywxZuwPOwRvEi5tA==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-freebsd-arm64@4.34.9': resolution: {integrity: sha512-2lzjQPJbN5UnHm7bHIUKFMulGTQwdvOkouJDpPysJS+QFBGDJqcfh+CxxtG23Ik/9tEvnebQiylYoazFMAgrYw==} cpu: [arm64] os: [freebsd] + '@rollup/rollup-freebsd-arm64@4.67.5': + resolution: {integrity: sha512-WvZYtANNswfHzSNHaJAoG6Ipfc4SyZIDYuIjFdHv07xXxhHl+Xx8o+bNDWsxpOADFT2mKXcXVrfOG4OlWTLo8Q==} + cpu: [arm64] + os: [freebsd] + '@rollup/rollup-freebsd-x64@4.34.9': resolution: {integrity: sha512-SLl0hi2Ah2H7xQYd6Qaiu01kFPzQ+hqvdYSoOtHYg/zCIFs6t8sV95kaoqjzjFwuYQLtOI0RZre/Ke0nPaQV+g==} cpu: [x64] os: [freebsd] + '@rollup/rollup-freebsd-x64@4.67.5': + resolution: {integrity: sha512-EUU+Wgf9NyHekceC+DxAdm42f6bq2ezH/7DEb/JnCb8SAUhG2xph5BiVukxplWal2m5pP8CzJZE+FLwRopywjQ==} + cpu: [x64] + os: [freebsd] + '@rollup/rollup-linux-arm-gnueabihf@4.34.9': resolution: {integrity: sha512-88I+D3TeKItrw+Y/2ud4Tw0+3CxQ2kLgu3QvrogZ0OfkmX/DEppehus7L3TS2Q4lpB+hYyxhkQiYPJ6Mf5/dPg==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-gnueabihf@4.67.5': + resolution: {integrity: sha512-dgU1CvUuE2IkaJBAeuAbxpDdMHAdZBT5oth5u22DtuoMg4gXXYr2+Sm30RigPJG1F2VEoiGJUziGLuIh9+jPxA==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.34.9': resolution: {integrity: sha512-3qyfWljSFHi9zH0KgtEPG4cBXHDFhwD8kwg6xLfHQ0IWuH9crp005GfoUUh/6w9/FWGBwEHg3lxK1iHRN1MFlA==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.67.5': + resolution: {integrity: sha512-rdgJcJig2VngYlcTCRQw2BA8kLWM6QwDFe9uLFo81lya0jPC1r8wZu92sAvTUIv48GWlkRVi6/fpsa5CoFSKoQ==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.34.9': resolution: {integrity: sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.67.5': + resolution: {integrity: sha512-+jtCiQnrEFHWAUAcUpP7wppb1p6HKOgBP3mXx75cEYpDF2Y5MEqBky2HNz+osFuVx5uX44gnMTmbe5RJauzn6A==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-arm64-musl@4.34.9': resolution: {integrity: sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-musl@4.67.5': + resolution: {integrity: sha512-heflX7ENhL8eHmLcUxDEHCSK8CKLyPprysb2JGoSTh5Ip7nHrzIRc+2USyxul3nxi98H8pGxJIEDEpURlS1X5A==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.67.5': + resolution: {integrity: sha512-rRtNU0zBfRHkJ8pscHN9qRtUYLq8Rao4EX7aVWvKcFmJUANkCCXFRU7ovNBEMhpEONyUEB/3DRVDXwDDguSfHA==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-loong64-musl@4.67.5': + resolution: {integrity: sha512-/6auyi9yj8MD/Q+8P+f2ay57jQ7a0j7Yp1JK86pecH6ZnRViQZ5GOjoRSjGArFeTSHFznRbM2QPQcBgDPyNMfQ==} + cpu: [loong64] + os: [linux] + '@rollup/rollup-linux-loongarch64-gnu@4.34.9': resolution: {integrity: sha512-dRAgTfDsn0TE0HI6cmo13hemKpVHOEyeciGtvlBTkpx/F65kTvShtY/EVyZEIfxFkV5JJTuQ9tP5HGBS0hfxIg==} cpu: [loong64] @@ -1094,41 +1266,111 @@ packages: cpu: [ppc64] os: [linux] + '@rollup/rollup-linux-ppc64-gnu@4.67.5': + resolution: {integrity: sha512-Hsc0vlt+vPvqzUkHKffWKf3YE/yexrY+yeFf7IsUvDC6PV7YGCsA/gJvPa+WJdgxGJnwuoO1HmLkbahaLKabYQ==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-ppc64-musl@4.67.5': + resolution: {integrity: sha512-Jx5TMMSPJwHY7F/JwPdS6nuBwny2ECRK+EsAJV5HZrfiddeSS6ZrohkLkFZm3rjqBUuQ4FPX5gGMtakUuQO6fQ==} + cpu: [ppc64] + os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.34.9': resolution: {integrity: sha512-Z2i0Uy5G96KBYKjeQFKbbsB54xFOL5/y1P5wNBsbXB8yE+At3oh0DVMjQVzCJRJSfReiB2tX8T6HUFZ2k8iaKg==} cpu: [riscv64] os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.67.5': + resolution: {integrity: sha512-fGWcq2lo/XCqAkBLOokg66D/z+MUouryB8i+QdU9RR6O5knG7rucc0WFPqWYL1Wk/wuiJouDfmyBxmZKRM9bag==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.67.5': + resolution: {integrity: sha512-JwO/Ys3jybc0UW3V5XO2CMnp0RhvoczDDQTgAEE1IctT+HRY3W5parIIWLUpmAK4gHSeeYJofm2iQPFA62K6ag==} + cpu: [riscv64] + os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.34.9': resolution: {integrity: sha512-U+5SwTMoeYXoDzJX5dhDTxRltSrIax8KWwfaaYcynuJw8mT33W7oOgz0a+AaXtGuvhzTr2tVKh5UO8GVANTxyQ==} cpu: [s390x] os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.67.5': + resolution: {integrity: sha512-vVD4iqel6J6A1xAJlb4mxEO9i1wOJ4/SkcKoDKAuK/wqEBPOA7/P5dDyZvNx46ocHwOUwzo3WjhTdKqET9kEAg==} + cpu: [s390x] + os: [linux] + '@rollup/rollup-linux-x64-gnu@4.34.9': resolution: {integrity: sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-gnu@4.67.5': + resolution: {integrity: sha512-HmEfNh5Cdd/NHxgqwMzKnjlvicQQA+D+w+vQXDJSV0x/aHiQSjVwh1Th5RoA7QsMieIaxibt/5iJq68BraTSUg==} + cpu: [x64] + os: [linux] + '@rollup/rollup-linux-x64-musl@4.34.9': resolution: {integrity: sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-musl@4.67.5': + resolution: {integrity: sha512-NfmALpbe009nYzZ2QqlSW6nzbGddXpqk3nwualrIr+4QflQCTGMzt3QKK20yARiAnSV9fJdM5WNwIYUf31x3uA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openbsd-x64@4.67.5': + resolution: {integrity: sha512-ngcE7Udpy/iJ3lexVhYcbpUV2OJIakRGus3snc6K52BnAAJetDBG1Ku5Eh3CECtnW3mpBYWg5VCD4tTaOXKOVQ==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.67.5': + resolution: {integrity: sha512-DZ01A2EdTYX8xVeGoGiWkJBRWDh+/BOflwGPVsBay43PDxcq8ez0xuovZnPnk1xjE3CdI0pdZXxsJp/Xjmf7uQ==} + cpu: [arm64] + os: [openharmony] + '@rollup/rollup-win32-arm64-msvc@4.34.9': resolution: {integrity: sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.67.5': + resolution: {integrity: sha512-nJKiMKDO140DUCEcQZl+f4HiGPMBxrW2webjuWJ2E3qPeoruHf2zByml4TP52lA1zDi6L4I92D/5stxeA/6pig==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.34.9': resolution: {integrity: sha512-KB48mPtaoHy1AwDNkAJfHXvHp24H0ryZog28spEs0V48l3H1fr4i37tiyHsgKZJnCmvxsbATdZGBpbmxTE3a9w==} cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.67.5': + resolution: {integrity: sha512-ykLkBCf+Kls24QmqM3IRf1T4sGMh0rXPyymtj+hXlWKPJnXbXraHqUUsKtOIxqLasjT1i7DhfQGAaZYeiHbSOw==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.67.5': + resolution: {integrity: sha512-NiFPUFw8cHhkmBlL1k1eaz+5AXXm89rztj+DQdDuQ7VGPM0+ADFhezQ2KcBMF50UEFzGUr0+DVjVND743XwKWQ==} + cpu: [x64] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.34.9': resolution: {integrity: sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.67.5': + resolution: {integrity: sha512-Khj/vrKCpdbiAWYbJAeSy4D5iep+qwW/86lNoKvdleJYGxgbRE7h87+5d5T9D7gt8NcqhNFpreRgIg8T4bLzKQ==} + cpu: [x64] + os: [win32] + + '@rx-state/core@0.1.4': + resolution: {integrity: sha512-Z+3hjU2xh1HisLxt+W5hlYX/eGSDaXXP+ns82gq/PLZpkXLu0uwcNUh9RLY3Clq4zT+hSsA3vcpIGt6+UAb8rQ==} + peerDependencies: + rxjs: '>=7' + '@safe-global/safe-apps-provider@0.18.6': resolution: {integrity: sha512-4LhMmjPWlIO8TTDC2AwLk44XKXaK6hfBTWyljDm0HQ6TWlOEijVWNrt2s3OCVMSxlXAcEzYfqyu1daHZooTC2Q==} @@ -1145,6 +1387,9 @@ packages: '@scure/base@1.2.6': resolution: {integrity: sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==} + '@scure/base@2.4.0': + resolution: {integrity: sha512-thZ1TuJwFwBblOhgsjDKvvGirBxNp+wSvY/DR6tJBJOTDhdAAcHJ8Vbr2eFnqaxeca4+t0i9KBf+uHYGWwZORg==} + '@scure/bip32@1.4.0': resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} @@ -1166,6 +1411,13 @@ packages: '@scure/sr25519@0.2.0': resolution: {integrity: sha512-uUuLP7Z126XdSizKtrCGqYyR3b3hYtJ6Fg/XFUXmc2//k2aXHDLqZwFeXxL97gg4XydPROPVnuaHGF2+xriSKg==} + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} @@ -1284,6 +1536,9 @@ packages: '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/estree@1.0.10': + resolution: {integrity: sha512-lTyOMnOcmRBzdCv6/4zUZCrEhV0xrqQiUZBZtVcbmLHBXKLnN8q89v/wKRF/Q0HbwVsqbIG3o5HDoFl9sduM+g==} + '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} @@ -1296,6 +1551,12 @@ packages: '@types/node@22.7.5': resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} + '@types/node@26.6.6': + resolution: {integrity: sha512-MzQj+8Kx3XI40OmUAE6Qoh58ZMNstNNMwn2nfd3qWsfe7nDNSqJNzes4njhz6AHwrSHOffSLwXU6yb474Q4aog==} + + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -1462,6 +1723,10 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + ansi-regex@6.5.0: + resolution: {integrity: sha512-zhvbbbdt1kbw7EJ9OQoxmQcuaNR9P5kTj7e/YdmOSU10aHWbycofJxA6jKfoEy3vlLdctOF9ZHaxLtmSm998wQ==} + engines: {node: '>=12'} + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -1561,10 +1826,22 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-spinners@3.4.0: + resolution: {integrity: sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==} + engines: {node: '>=18.20'} + client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} @@ -1589,6 +1866,10 @@ packages: colorjs.io@0.5.2: resolution: {integrity: sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==} + commander@15.0.0: + resolution: {integrity: sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==} + engines: {node: '>=22.12.0'} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -1687,6 +1968,10 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + deepmerge-ts@7.1.6: + resolution: {integrity: sha512-gQhL1ksGBLQbHeAo47YU6cs2ahd3Pv+8PFYoWogNZbQnNwQyOh9Ad5kbeHFiWwbKdeWQJ5Z7Y7mwb9ew2hXBLw==} + engines: {node: '>=16.0.0'} + define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} @@ -1705,6 +1990,10 @@ packages: detect-browser@5.3.0: resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} + detect-indent@7.0.2: + resolution: {integrity: sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A==} + engines: {node: '>=12.20'} + dijkstrajs@1.0.3: resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} @@ -1759,6 +2048,9 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} @@ -1862,6 +2154,10 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} + execa@10.2.1: + resolution: {integrity: sha512-/Bofl3ZBh2Q4/PG0W63qFzP5vDAypi8Zc90UWTBzaDNIYiX7apPOd0N6L8hG8CojUdq4V51adu8BObP+iVsSTw==} + engines: {node: '>=22'} + extension-port-stream@3.0.0: resolution: {integrity: sha512-an2S5quJMiy5bnZKEf6AkfH/7r8CzHvhchU40gxN+OM6HPhe7Z9T1FUychcf2M9PpPOO0Hf7BAEfJkw2TDIBDw==} engines: {node: '>=12.0.0'} @@ -1882,6 +2178,10 @@ packages: fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + figures@6.1.0: + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} + engines: {node: '>=18'} + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -1912,6 +2212,9 @@ packages: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} + fs.promises.exists@1.1.4: + resolution: {integrity: sha512-lJzUGWbZn8vhGWBedA+RYjB/BeJ+3458ljUfmplqhIeb6ewzTFWNPCR1HCiYCkXV9zxcHz9zXkJzMsEgDLzh3Q==} + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -1928,6 +2231,10 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} + get-east-asian-width@1.7.0: + resolution: {integrity: sha512-XjH1AECxf0giL2V1aU8vKyRR2ppRUb5c0EvT7zuJTokQ74bNo52zOtghqdWIqrhUD79fo3x0WfKZdOqxF6LG1Q==} + engines: {node: '>=18'} + get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -1936,6 +2243,13 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} + + get-tsconfig@4.14.3: + resolution: {integrity: sha512-++QEw4DIY7WGoukz+/+A/8dGYPT9l9yIadnmSgZ8Rjr3YVSVDipQSO9CdnJo9ePqFqUUqh+wk9uIaoiAwsiPkA==} + glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} @@ -1986,6 +2300,18 @@ packages: hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + hosted-git-info@7.0.2: + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} + engines: {node: ^16.14.0 || >=18.0.0} + + hosted-git-info@9.0.3: + resolution: {integrity: sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==} + engines: {node: ^20.17.0 || >=22.9.0} + + human-signals@8.0.1: + resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} + engines: {node: '>=18.18.0'} + idb-keyval@6.2.2: resolution: {integrity: sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==} @@ -2010,6 +2336,10 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + index-to-position@1.2.0: + resolution: {integrity: sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==} + engines: {node: '>=18'} + inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -2047,6 +2377,14 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + is-regex@1.2.1: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} @@ -2055,10 +2393,18 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} + is-typed-array@1.1.15: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} @@ -2151,6 +2497,10 @@ packages: lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + log-symbols@7.0.1: + resolution: {integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==} + engines: {node: '>=18'} + loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -2161,6 +2511,10 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@11.5.3: + resolution: {integrity: sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==} + engines: {node: 20 || >=22} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -2171,6 +2525,10 @@ packages: micro-ftch@0.3.1: resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -2224,10 +2582,22 @@ packages: node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + normalize-package-data@6.0.2: + resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} + engines: {node: ^16.14.0 || >=18.0.0} + + normalize-package-data@8.0.0: + resolution: {integrity: sha512-RWk+PI433eESQ7ounYxIp67CYuVsS1uYSonX3kA6ps/3LWfjVQa/ptEg6Y3T6uAMq1mWpX9PQ+qx+QaHpsc7gQ==} + engines: {node: ^20.17.0 || >=22.9.0} + normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + npm-run-path@6.0.0: + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + engines: {node: '>=18'} + obj-multiplex@1.0.0: resolution: {integrity: sha512-0GNJAOsHoBHeNTvl5Vt6IWnpUEcc3uSRxzBri7EDyIcMgYvnY2JL2qdeV5zTMjWQX5OHcD5amcW2HFfDh0gjIA==} @@ -2248,10 +2618,18 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + ora@9.4.1: + resolution: {integrity: sha512-6VlU9MLXbjVQD04AZCMX28hVtA5bUoadvUqO76MUCVA0ilwJbMiHsITRPfyVm6p/BC0Av/BXMujx39WCe1LEqw==} + engines: {node: '>=20'} + ox@0.6.7: resolution: {integrity: sha512-17Gk/eFsFRAZ80p5eKqv89a57uXjd3NgIf1CaXojATPBuujVc/fQSVhBeAU9JCRB+k7J50WQAyWTxK19T9GgbA==} peerDependencies: @@ -2296,6 +2674,14 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} + parse-json@8.3.0: + resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} + engines: {node: '>=18'} + + parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -2304,6 +2690,10 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -2311,6 +2701,9 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -2322,6 +2715,10 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} + picomatch@4.0.7: + resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} + engines: {node: '>=12'} + pify@3.0.0: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} engines: {node: '>=4'} @@ -2344,6 +2741,12 @@ packages: resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} engines: {node: '>=10.13.0'} + polkadot-api@3.3.0: + resolution: {integrity: sha512-GZqdSZ/6BqyJro7LFo4JTlyATHJLdoCRWCLagurgLzowZRWYX/rlCWN7y5oFBFrMKRdfeGy5sAJzK3+5nkOdDA==} + hasBin: true + peerDependencies: + rxjs: '>=7.8.0' + pony-cause@2.1.11: resolution: {integrity: sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==} engines: {node: '>=12.0.0'} @@ -2363,6 +2766,10 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} + pretty-ms@9.3.1: + resolution: {integrity: sha512-HzMy3Geq23nVALD/M2LliU+F+M+gVNsvkQWWqeBZ8HDiCgzo6YPJ/Omrmtq24EFrIsk0a3EkQGEd7bDOo+IhGA==} + engines: {node: '>=18'} + process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -2462,6 +2869,14 @@ packages: resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} engines: {node: '>=0.10.0'} + read-pkg@10.1.0: + resolution: {integrity: sha512-I8g2lArQiP78ll51UeMZojewtYgIRCKCWqZEgOO8c/uefTI+XDXvCSXu3+YNUaTNvZzobrL5+SqHjBrByRRTdg==} + engines: {node: '>=20'} + + read-pkg@9.0.1: + resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} + engines: {node: '>=18'} + readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} @@ -2491,19 +2906,41 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve@1.22.10: resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} engines: {node: '>= 0.4'} hasBin: true + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + + rollup-plugin-esbuild@6.2.1: + resolution: {integrity: sha512-jTNOMGoMRhs0JuueJrJqbW8tOwxumaWYq+V5i+PD+8ecSCVkuX27tGW7BXqDgoULQ55rO7IdNxPcnsWtshz3AA==} + engines: {node: '>=14.18.0'} + peerDependencies: + esbuild: '>=0.18.0' + rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 + rollup@4.34.9: resolution: {integrity: sha512-nF5XYqWWp9hx/LrpC8sZvvvmq0TeTjQgaZHYmAgwysT9nh8sWnZhBnM8ZyVbbJFIQBLwHDNoMqsBZBbUo4U8sQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@4.67.5: + resolution: {integrity: sha512-3Ve5VH1hacCVutdpbmu/htg4kz+JCOIWgy4Q3hjHPYGHeHeIElNHJ0LcJ3rCfIsd5G7qOl5k5mwpzGMj9kdHPA==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -2684,6 +3121,13 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + smoldot@3.7.0: + resolution: {integrity: sha512-49/jSn4hVysTu6SL8wTk6JRedG1GhxgDkxQ9hEC9gKMadZvWIoxgBVS2N8OQn4UTpWAd3hpifiBh8tRYPh8EkQ==} + snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} @@ -2698,6 +3142,10 @@ packages: sonic-boom@2.8.0: resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} + sort-keys@5.1.0: + resolution: {integrity: sha512-aSbHV0DaBcr7u0PVHXzM6NbZNAtrr9sF6+Qfs9UUVG7Ll3jQ6hHi8F/xqIIcn2rvIVbr0v/2zyjSdwSV47AgLQ==} + engines: {node: '>=12'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -2706,6 +3154,18 @@ packages: resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} engines: {node: '>=0.10.0'} + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.24: + resolution: {integrity: sha512-cLS9TtWkIQFyLkJ3/5aFQAOHOSKTlOs/7WDut/XPSdjom1fJhUdkepeJAKXa9Y05+FabHd0sti+Et559vDtkpQ==} + split-on-first@1.1.0: resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} engines: {node: '>=6'} @@ -2714,6 +3174,10 @@ packages: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} + stdin-discarder@0.3.2: + resolution: {integrity: sha512-eCPu1qRxPVkl5605OTWF8Wz40b4Mf45NY5LQmVPQ599knfs5QhASUm9GbJ5BDMDOXgrnh0wyEdvzmL//YMlw0A==} + engines: {node: '>=18'} + stream-shift@1.0.3: resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} @@ -2725,6 +3189,10 @@ packages: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} + string-width@8.3.0: + resolution: {integrity: sha512-ZbmZM0JCihQN91dWnxoipT2KOEyHqEyfRXUyjuRhW8b/xnqPDoq4gWEVApTVa9db2wN8mmoikgFBbjh71+cGeQ==} + engines: {node: '>=20'} + string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -2735,6 +3203,14 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + + strip-final-newline@4.0.0: + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} + engines: {node: '>=18'} + strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -2774,12 +3250,22 @@ packages: resolution: {integrity: sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==} engines: {node: '>=16.0.0'} + tagged-tag@1.0.0: + resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} + engines: {node: '>=20'} + thread-stream@0.15.2: resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + tsc-prog@2.3.0: + resolution: {integrity: sha512-ycET2d75EgcX7y8EmG4KiZkLAwUzbY4xRhA6NU0uVbHkY4ZjrAAuzTMxXI85kOwATqPnBI5C/7y7rlpY0xdqHA==} + engines: {node: '>=12'} + peerDependencies: + typescript: '>=4' + tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} @@ -2793,6 +3279,19 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + + type-fest@5.10.0: + resolution: {integrity: sha512-NoSdpq/WEiAg5sjmBkmV/hfxv6HJH4NqPNrqjtSO5CwRmpsDfaf4begxW34KdJykH/l1yHtwBWQkCRdoXO8mPA==} + engines: {node: '>=20'} + + typescript@6.0.3: + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} + engines: {node: '>=14.17'} + hasBin: true + ufo@1.6.1: resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} @@ -2805,6 +3304,25 @@ packages: undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + undici-types@8.9.0: + resolution: {integrity: sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==} + + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + + unicorn-magic@0.4.1: + resolution: {integrity: sha512-lzlXPoVB0Uy/FvTaUgX39RbixYiSKoc3JSoSf01+0c2B6FR3qdYIPN7Qjo/AV7n6sqLCk0509cT3LRj1oSZ1+A==} + engines: {node: '>=20'} + + unplugin-utils@0.2.5: + resolution: {integrity: sha512-gwXJnPRewT4rT7sBi/IvxKTjsms7jX7QIDLOClApuZwR49SXbrB1z2NLUZ+vDHyqCj/n58OzRRqaW+B8OZi8vg==} + engines: {node: '>=18.12.0'} + unstorage@1.16.0: resolution: {integrity: sha512-WQ37/H5A7LcRPWfYOrDa1Ys02xAbpPJq6q5GkO88FBXVSQzHd7+BjEwfRqyaSWCv9MbsJy058GWjjPjcJ16GGA==} peerDependencies: @@ -2901,6 +3419,9 @@ packages: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + valtio@1.13.2: resolution: {integrity: sha512-Qik0o+DSy741TmkqmRfjq+0xpZBXi/Y6+fXZLn0xNF1z/waFMbE3rkivv5Zcf9RrMUp6zswf2J7sbh2KBlba5A==} engines: {node: '>=12.20.0'} @@ -2997,6 +3518,11 @@ packages: whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + which-command@0.1.0: + resolution: {integrity: sha512-XZyoF5/5hZtXitIwzrU4NKK+Wtbb9aB9CezUEw2Q0wlYK8NUYQxC1rRXgNueYLtBAJwXIb+/tFVk4dozciNJMA==} + engines: {node: '>=22'} + hasBin: true + which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} @@ -3020,6 +3546,18 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + write-json-file@6.0.0: + resolution: {integrity: sha512-MNHcU3f9WxnNyR6MxsYSj64Jz0+dwIpisWKWq9gqLj/GwmA9INg3BZ3vt70/HB3GEwrnDQWr4RPrywnhNzmUFA==} + engines: {node: '>=18'} + + write-package@7.2.0: + resolution: {integrity: sha512-uMQTubF/vcu+Wd0b5BGtDmiXePd/+44hUWQz2nZPbs92/BnxRo74tqs+hqDo12RLiEd+CXFKUwxvvIZvtt34Jw==} + engines: {node: '>=18'} + ws@7.5.10: resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} engines: {node: '>=8.3.0'} @@ -3098,6 +3636,10 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + yoctocolors@2.2.0: + resolution: {integrity: sha512-xYqdZFUK/VYazNl/oCDYN+3WloWQwMfZxBoiNt6qNyk+xfOdi598muWE42rNZFp1kNOiqW936q5RhUdnpqElSg==} + engines: {node: '>=18'} + zod@3.22.4: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} @@ -3267,6 +3809,10 @@ snapshots: eventemitter3: 5.0.1 preact: 10.26.8 + '@commander-js/extra-typings@15.0.0(commander@15.0.0)': + dependencies: + commander: 15.0.0 + '@ecies/ciphers@0.2.3(@noble/ciphers@1.3.0)': dependencies: '@noble/ciphers': 1.3.0 @@ -3942,9 +4488,78 @@ snapshots: '@noble/hashes@1.8.0': {} + '@noble/hashes@2.4.0': {} + '@paulmillr/qr@0.2.1': {} - '@polkadot-api/json-rpc-provider@0.0.4': {} + '@polkadot-api/cli@0.22.5(bufferutil@4.0.9)(esbuild@0.25.0)(utf-8-validate@5.0.10)': + dependencies: + '@commander-js/extra-typings': 15.0.0(commander@15.0.0) + '@polkadot-api/codegen': 0.23.2 + '@polkadot-api/ink-contracts': 0.7.2 + '@polkadot-api/json-rpc-provider': 0.2.0 + '@polkadot-api/known-chains': 0.12.5 + '@polkadot-api/metadata-compatibility': 0.7.2 + '@polkadot-api/observable-client': 0.19.4(rxjs@7.8.2) + '@polkadot-api/sm-provider': 0.3.10(@polkadot-api/smoldot@0.4.9(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@polkadot-api/smoldot': 0.4.9(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@polkadot-api/substrate-bindings': 0.21.2 + '@polkadot-api/substrate-client': 0.7.0 + '@polkadot-api/utils': 0.4.0 + '@polkadot-api/wasm-executor': 0.2.3 + '@polkadot-api/ws-middleware': 0.4.2(rxjs@7.8.2) + '@polkadot-api/ws-provider': 0.9.2(rxjs@7.8.2) + '@types/node': 26.6.6 + commander: 15.0.0 + execa: 10.2.1 + fs.promises.exists: 1.1.4 + ora: 9.4.1 + read-pkg: 10.1.0 + rollup: 4.67.5 + rollup-plugin-esbuild: 6.2.1(esbuild@0.25.0)(rollup@4.67.5) + rxjs: 7.8.2 + tsc-prog: 2.3.0(typescript@6.0.3) + typescript: 6.0.3 + write-package: 7.2.0 + transitivePeerDependencies: + - bufferutil + - esbuild + - supports-color + - utf-8-validate + + '@polkadot-api/codegen@0.23.2': + dependencies: + '@polkadot-api/ink-contracts': 0.7.2 + '@polkadot-api/metadata-builders': 0.15.2 + '@polkadot-api/metadata-compatibility': 0.7.2 + '@polkadot-api/substrate-bindings': 0.21.2 + '@polkadot-api/utils': 0.4.0 + + '@polkadot-api/descriptors@file:.papi/descriptors(polkadot-api@3.3.0(bufferutil@4.0.9)(esbuild@0.25.0)(rxjs@7.8.1)(utf-8-validate@5.0.10))': + dependencies: + polkadot-api: 3.3.0(bufferutil@4.0.9)(esbuild@0.25.0)(rxjs@7.8.1)(utf-8-validate@5.0.10) + + '@polkadot-api/ink-contracts@0.7.2': + dependencies: + '@polkadot-api/metadata-builders': 0.15.2 + '@polkadot-api/substrate-bindings': 0.21.2 + '@polkadot-api/utils': 0.4.0 + + '@polkadot-api/json-rpc-provider-proxy@0.4.1': {} + + '@polkadot-api/json-rpc-provider@0.2.0': {} + + '@polkadot-api/known-chains@0.12.5': {} + + '@polkadot-api/logs-provider@0.2.0': + dependencies: + '@polkadot-api/json-rpc-provider': 0.2.0 + + '@polkadot-api/merkleize-metadata@1.3.2': + dependencies: + '@polkadot-api/metadata-builders': 0.15.2 + '@polkadot-api/substrate-bindings': 0.21.2 + '@polkadot-api/utils': 0.4.0 '@polkadot-api/metadata-builders@0.10.2': dependencies: @@ -3956,6 +4571,32 @@ snapshots: '@polkadot-api/substrate-bindings': 0.15.0 '@polkadot-api/utils': 0.2.0 + '@polkadot-api/metadata-builders@0.15.2': + dependencies: + '@polkadot-api/substrate-bindings': 0.21.2 + '@polkadot-api/utils': 0.4.0 + + '@polkadot-api/metadata-compatibility@0.7.2': + dependencies: + '@polkadot-api/metadata-builders': 0.15.2 + '@polkadot-api/substrate-bindings': 0.21.2 + + '@polkadot-api/observable-client@0.19.4(rxjs@7.8.1)': + dependencies: + '@polkadot-api/metadata-builders': 0.15.2 + '@polkadot-api/substrate-bindings': 0.21.2 + '@polkadot-api/substrate-client': 0.7.0 + '@polkadot-api/utils': 0.4.0 + rxjs: 7.8.1 + + '@polkadot-api/observable-client@0.19.4(rxjs@7.8.2)': + dependencies: + '@polkadot-api/metadata-builders': 0.15.2 + '@polkadot-api/substrate-bindings': 0.21.2 + '@polkadot-api/substrate-client': 0.7.0 + '@polkadot-api/utils': 0.4.0 + rxjs: 7.8.2 + '@polkadot-api/observable-client@0.8.6(@polkadot-api/substrate-client@0.3.0)(rxjs@7.8.1)': dependencies: '@polkadot-api/metadata-builders': 0.10.2 @@ -3964,6 +4605,54 @@ snapshots: '@polkadot-api/utils': 0.1.2 rxjs: 7.8.1 + '@polkadot-api/pjs-signer@0.9.0(rxjs@7.8.1)': + dependencies: + '@polkadot-api/metadata-builders': 0.15.2 + '@polkadot-api/raw-tx-creator': 0.5.0(rxjs@7.8.1) + '@polkadot-api/signers-common': 0.4.0(rxjs@7.8.1) + '@polkadot-api/substrate-bindings': 0.21.2 + '@polkadot-api/tx-creator': 0.2.0(rxjs@7.8.1) + '@polkadot-api/utils': 0.4.0 + transitivePeerDependencies: + - rxjs + + '@polkadot-api/raw-client@0.3.0': + dependencies: + '@polkadot-api/json-rpc-provider': 0.2.0 + + '@polkadot-api/raw-tx-creator@0.5.0(rxjs@7.8.1)': + dependencies: + '@noble/hashes': 2.4.0 + '@polkadot-api/merkleize-metadata': 1.3.2 + '@polkadot-api/metadata-builders': 0.15.2 + '@polkadot-api/signers-common': 0.4.0(rxjs@7.8.1) + '@polkadot-api/substrate-bindings': 0.21.2 + '@polkadot-api/tx-creator': 0.2.0(rxjs@7.8.1) + '@polkadot-api/utils': 0.4.0 + rxjs: 7.8.1 + + '@polkadot-api/signers-common@0.4.0(rxjs@7.8.1)': + dependencies: + '@polkadot-api/metadata-builders': 0.15.2 + '@polkadot-api/substrate-bindings': 0.21.2 + '@polkadot-api/tx-creator': 0.2.0(rxjs@7.8.1) + '@polkadot-api/utils': 0.4.0 + rxjs: 7.8.1 + + '@polkadot-api/sm-provider@0.3.10(@polkadot-api/smoldot@0.4.9(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + dependencies: + '@polkadot-api/json-rpc-provider': 0.2.0 + '@polkadot-api/json-rpc-provider-proxy': 0.4.1 + '@polkadot-api/smoldot': 0.4.9(bufferutil@4.0.9)(utf-8-validate@5.0.10) + + '@polkadot-api/smoldot@0.4.9(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + dependencies: + '@types/node': 26.6.6 + smoldot: 3.7.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + '@polkadot-api/substrate-bindings@0.11.1': dependencies: '@noble/hashes': 1.8.0 @@ -3978,15 +4667,68 @@ snapshots: '@scure/base': 1.2.6 scale-ts: 1.6.1 + '@polkadot-api/substrate-bindings@0.21.2': + dependencies: + '@noble/hashes': 2.4.0 + '@polkadot-api/utils': 0.4.0 + '@scure/base': 2.4.0 + scale-ts: 1.6.1 + '@polkadot-api/substrate-client@0.3.0': dependencies: - '@polkadot-api/json-rpc-provider': 0.0.4 + '@polkadot-api/json-rpc-provider': 0.2.0 '@polkadot-api/utils': 0.1.2 + '@polkadot-api/substrate-client@0.7.0': + dependencies: + '@polkadot-api/json-rpc-provider': 0.2.0 + '@polkadot-api/raw-client': 0.3.0 + '@polkadot-api/utils': 0.4.0 + + '@polkadot-api/tx-creator@0.2.0(rxjs@7.8.1)': + dependencies: + rxjs: 7.8.1 + '@polkadot-api/utils@0.1.2': {} '@polkadot-api/utils@0.2.0': {} + '@polkadot-api/utils@0.4.0': {} + + '@polkadot-api/wasm-executor@0.2.3': {} + + '@polkadot-api/ws-middleware@0.4.2(rxjs@7.8.1)': + dependencies: + '@polkadot-api/json-rpc-provider': 0.2.0 + '@polkadot-api/json-rpc-provider-proxy': 0.4.1 + '@polkadot-api/raw-client': 0.3.0 + '@polkadot-api/substrate-bindings': 0.21.2 + '@polkadot-api/utils': 0.4.0 + rxjs: 7.8.1 + + '@polkadot-api/ws-middleware@0.4.2(rxjs@7.8.2)': + dependencies: + '@polkadot-api/json-rpc-provider': 0.2.0 + '@polkadot-api/json-rpc-provider-proxy': 0.4.1 + '@polkadot-api/raw-client': 0.3.0 + '@polkadot-api/substrate-bindings': 0.21.2 + '@polkadot-api/utils': 0.4.0 + rxjs: 7.8.2 + + '@polkadot-api/ws-provider@0.9.2(rxjs@7.8.1)': + dependencies: + '@polkadot-api/json-rpc-provider': 0.2.0 + '@polkadot-api/json-rpc-provider-proxy': 0.4.1 + '@polkadot-api/utils': 0.4.0 + rxjs: 7.8.1 + + '@polkadot-api/ws-provider@0.9.2(rxjs@7.8.2)': + dependencies: + '@polkadot-api/json-rpc-provider': 0.2.0 + '@polkadot-api/json-rpc-provider-proxy': 0.4.1 + '@polkadot-api/utils': 0.4.0 + rxjs: 7.8.2 + '@polkadot-labs/hdkd-helpers@0.0.20': dependencies: '@noble/curves': 1.9.6 @@ -4096,24 +4838,24 @@ snapshots: '@popperjs/core@2.11.8': {} - '@reown/appkit-common@1.7.8(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@reown/appkit-common@1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: big.js: 6.2.2 dayjs: 1.11.13 - viem: 2.31.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.31.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod - '@reown/appkit-controllers@1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@reown/appkit-controllers@1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) - '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@walletconnect/universal-provider': 2.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10) + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) valtio: 1.13.2(@types/react@19.0.10)(react@19.0.0) - viem: 2.31.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.31.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -4141,12 +4883,12 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-pay@1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@reown/appkit-pay@1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) - '@reown/appkit-controllers': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(utf-8-validate@5.0.10)(zod@3.22.4) - '@reown/appkit-ui': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(utf-8-validate@5.0.10)(zod@3.22.4) - '@reown/appkit-utils': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.0.10)(react@19.0.0))(zod@3.22.4) + '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-controllers': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-ui': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-utils': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(typescript@6.0.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.0.10)(react@19.0.0))(zod@3.22.4) lit: 3.3.0 valtio: 1.13.2(@types/react@19.0.10)(react@19.0.0) transitivePeerDependencies: @@ -4180,13 +4922,13 @@ snapshots: dependencies: buffer: 6.0.3 - '@reown/appkit-scaffold-ui@1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.0.10)(react@19.0.0))(zod@3.22.4)': + '@reown/appkit-scaffold-ui@1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(typescript@6.0.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.0.10)(react@19.0.0))(zod@3.22.4)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) - '@reown/appkit-controllers': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(utf-8-validate@5.0.10)(zod@3.22.4) - '@reown/appkit-ui': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(utf-8-validate@5.0.10)(zod@3.22.4) - '@reown/appkit-utils': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.0.10)(react@19.0.0))(zod@3.22.4) - '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-controllers': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-ui': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-utils': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(typescript@6.0.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.0.10)(react@19.0.0))(zod@3.22.4) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10) lit: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -4216,11 +4958,11 @@ snapshots: - valtio - zod - '@reown/appkit-ui@1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@reown/appkit-ui@1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) - '@reown/appkit-controllers': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(utf-8-validate@5.0.10)(zod@3.22.4) - '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-controllers': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10) lit: 3.3.0 qrcode: 1.5.3 transitivePeerDependencies: @@ -4250,16 +4992,16 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-utils@1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.0.10)(react@19.0.0))(zod@3.22.4)': + '@reown/appkit-utils@1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(typescript@6.0.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.0.10)(react@19.0.0))(zod@3.22.4)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) - '@reown/appkit-controllers': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-controllers': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) '@reown/appkit-polyfills': 1.7.8 - '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10) '@walletconnect/logger': 2.1.2 - '@walletconnect/universal-provider': 2.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) valtio: 1.13.2(@types/react@19.0.10)(react@19.0.0) - viem: 2.31.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.31.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -4287,9 +5029,9 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-wallet@1.7.8(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@reown/appkit-wallet@1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) '@reown/appkit-polyfills': 1.7.8 '@walletconnect/logger': 2.1.2 zod: 3.22.4 @@ -4298,21 +5040,21 @@ snapshots: - typescript - utf-8-validate - '@reown/appkit@1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@reown/appkit@1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) - '@reown/appkit-controllers': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(utf-8-validate@5.0.10)(zod@3.22.4) - '@reown/appkit-pay': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-controllers': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-pay': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) '@reown/appkit-polyfills': 1.7.8 - '@reown/appkit-scaffold-ui': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.0.10)(react@19.0.0))(zod@3.22.4) - '@reown/appkit-ui': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(utf-8-validate@5.0.10)(zod@3.22.4) - '@reown/appkit-utils': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.0.10)(react@19.0.0))(zod@3.22.4) - '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@reown/appkit-scaffold-ui': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(typescript@6.0.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.0.10)(react@19.0.0))(zod@3.22.4) + '@reown/appkit-ui': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-utils': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(typescript@6.0.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.0.10)(react@19.0.0))(zod@3.22.4) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10) '@walletconnect/types': 2.21.0 - '@walletconnect/universal-provider': 2.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) bs58: 6.0.0 valtio: 1.13.2(@types/react@19.0.10)(react@19.0.0) - viem: 2.31.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.31.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -4340,74 +5082,156 @@ snapshots: - utf-8-validate - zod - '@rollup/pluginutils@5.1.4(rollup@4.34.9)': + '@rollup/pluginutils@5.1.4(rollup@4.67.5)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.34.9 + rollup: 4.67.5 '@rollup/rollup-android-arm-eabi@4.34.9': optional: true + '@rollup/rollup-android-arm-eabi@4.67.5': + optional: true + '@rollup/rollup-android-arm64@4.34.9': optional: true + '@rollup/rollup-android-arm64@4.67.5': + optional: true + + '@rollup/rollup-android-x64@4.67.5': + optional: true + '@rollup/rollup-darwin-arm64@4.34.9': optional: true + '@rollup/rollup-darwin-arm64@4.67.5': + optional: true + '@rollup/rollup-darwin-x64@4.34.9': optional: true + '@rollup/rollup-darwin-x64@4.67.5': + optional: true + '@rollup/rollup-freebsd-arm64@4.34.9': optional: true + '@rollup/rollup-freebsd-arm64@4.67.5': + optional: true + '@rollup/rollup-freebsd-x64@4.34.9': optional: true + '@rollup/rollup-freebsd-x64@4.67.5': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.34.9': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.67.5': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.34.9': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.67.5': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.34.9': optional: true + '@rollup/rollup-linux-arm64-gnu@4.67.5': + optional: true + '@rollup/rollup-linux-arm64-musl@4.34.9': optional: true + '@rollup/rollup-linux-arm64-musl@4.67.5': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.67.5': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.67.5': + optional: true + '@rollup/rollup-linux-loongarch64-gnu@4.34.9': optional: true '@rollup/rollup-linux-powerpc64le-gnu@4.34.9': optional: true + '@rollup/rollup-linux-ppc64-gnu@4.67.5': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.67.5': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.34.9': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.67.5': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.67.5': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.34.9': optional: true + '@rollup/rollup-linux-s390x-gnu@4.67.5': + optional: true + '@rollup/rollup-linux-x64-gnu@4.34.9': optional: true + '@rollup/rollup-linux-x64-gnu@4.67.5': + optional: true + '@rollup/rollup-linux-x64-musl@4.34.9': optional: true + '@rollup/rollup-linux-x64-musl@4.67.5': + optional: true + + '@rollup/rollup-openbsd-x64@4.67.5': + optional: true + + '@rollup/rollup-openharmony-arm64@4.67.5': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.34.9': optional: true + '@rollup/rollup-win32-arm64-msvc@4.67.5': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.34.9': optional: true + '@rollup/rollup-win32-ia32-msvc@4.67.5': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.67.5': + optional: true + '@rollup/rollup-win32-x64-msvc@4.34.9': optional: true - '@safe-global/safe-apps-provider@0.18.6(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@rollup/rollup-win32-x64-msvc@4.67.5': + optional: true + + '@rx-state/core@0.1.4(rxjs@7.8.1)': dependencies: - '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + rxjs: 7.8.1 + + '@safe-global/safe-apps-provider@0.18.6(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4)': + dependencies: + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) events: 3.3.0 transitivePeerDependencies: - bufferutil @@ -4415,10 +5239,10 @@ snapshots: - utf-8-validate - zod - '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: '@safe-global/safe-gateway-typescript-sdk': 3.23.1 - viem: 2.31.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.31.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) transitivePeerDependencies: - bufferutil - typescript @@ -4431,6 +5255,8 @@ snapshots: '@scure/base@1.2.6': {} + '@scure/base@2.4.0': {} + '@scure/bip32@1.4.0': dependencies: '@noble/curves': 1.4.2 @@ -4469,6 +5295,10 @@ snapshots: '@noble/curves': 1.9.6 '@noble/hashes': 1.8.0 + '@sec-ant/readable-stream@0.4.1': {} + + '@sindresorhus/merge-streams@4.0.0': {} + '@socket.io/component-emitter@3.1.2': {} '@substrate/connect-discovery@0.2.2': @@ -4523,12 +5353,12 @@ snapshots: '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.26.9) '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.26.9) - '@svgr/core@8.1.0': + '@svgr/core@8.1.0(typescript@6.0.3)': dependencies: '@babel/core': 7.26.9 '@svgr/babel-preset': 8.1.0(@babel/core@7.26.9) camelcase: 6.3.0 - cosmiconfig: 8.3.6 + cosmiconfig: 8.3.6(typescript@6.0.3) snake-case: 3.0.4 transitivePeerDependencies: - supports-color @@ -4539,11 +5369,11 @@ snapshots: '@babel/types': 7.26.9 entities: 4.5.0 - '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0)': + '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@6.0.3))': dependencies: '@babel/core': 7.26.9 '@svgr/babel-preset': 8.1.0(@babel/core@7.26.9) - '@svgr/core': 8.1.0 + '@svgr/core': 8.1.0(typescript@6.0.3) '@svgr/hast-util-to-babel-ast': 8.0.0 svg-parser: 2.0.4 transitivePeerDependencies: @@ -4595,6 +5425,8 @@ snapshots: dependencies: '@types/ms': 2.1.0 + '@types/estree@1.0.10': {} + '@types/estree@1.0.6': {} '@types/json-schema@7.0.15': {} @@ -4605,6 +5437,12 @@ snapshots: dependencies: undici-types: 6.19.8 + '@types/node@26.6.6': + dependencies: + undici-types: 8.9.0 + + '@types/normalize-package-data@2.4.4': {} + '@types/parse-json@4.0.2': {} '@types/prop-types@15.7.14': {} @@ -4623,27 +5461,29 @@ snapshots: '@types/trusted-types@2.0.7': {} - '@vitejs/plugin-react@4.3.4(vite@6.2.1(@types/node@22.7.5)(sass-embedded@1.85.1))': + '@vitejs/plugin-react@4.3.4(vite@6.2.1(@types/node@26.6.6)(sass-embedded@1.85.1))': dependencies: '@babel/core': 7.26.9 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.9) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.9) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 6.2.1(@types/node@22.7.5)(sass-embedded@1.85.1) + vite: 6.2.1(@types/node@26.6.6)(sass-embedded@1.85.1) transitivePeerDependencies: - supports-color - '@wagmi/connectors@5.8.5(@types/react@19.0.10)(@wagmi/core@2.17.3(@tanstack/query-core@5.67.2)(@types/react@19.0.10)(immer@10.1.1)(react@19.0.0)(use-sync-external-store@1.4.0(react@19.0.0))(viem@2.31.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4)))(bufferutil@4.0.9)(react@19.0.0)(utf-8-validate@5.0.10)(viem@2.31.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4)': + '@wagmi/connectors@5.8.5(@types/react@19.0.10)(@wagmi/core@2.17.3(@tanstack/query-core@5.67.2)(@types/react@19.0.10)(immer@10.1.1)(react@19.0.0)(typescript@6.0.3)(use-sync-external-store@1.4.0(react@19.0.0))(viem@2.31.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4)))(bufferutil@4.0.9)(react@19.0.0)(typescript@6.0.3)(utf-8-validate@5.0.10)(viem@2.31.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4)': dependencies: '@coinbase/wallet-sdk': 4.3.3 '@metamask/sdk': 0.32.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) - '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) - '@wagmi/core': 2.17.3(@tanstack/query-core@5.67.2)(@types/react@19.0.10)(immer@10.1.1)(react@19.0.0)(use-sync-external-store@1.4.0(react@19.0.0))(viem@2.31.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4)) - '@walletconnect/ethereum-provider': 2.21.1(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(utf-8-validate@5.0.10)(zod@3.22.4) + '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@wagmi/core': 2.17.3(@tanstack/query-core@5.67.2)(@types/react@19.0.10)(immer@10.1.1)(react@19.0.0)(typescript@6.0.3)(use-sync-external-store@1.4.0(react@19.0.0))(viem@2.31.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4)) + '@walletconnect/ethereum-provider': 2.21.1(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) cbw-sdk: '@coinbase/wallet-sdk@3.9.3' - viem: 2.31.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.31.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) + optionalDependencies: + typescript: 6.0.3 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -4671,21 +5511,22 @@ snapshots: - utf-8-validate - zod - '@wagmi/core@2.17.3(@tanstack/query-core@5.67.2)(@types/react@19.0.10)(immer@10.1.1)(react@19.0.0)(use-sync-external-store@1.4.0(react@19.0.0))(viem@2.31.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4))': + '@wagmi/core@2.17.3(@tanstack/query-core@5.67.2)(@types/react@19.0.10)(immer@10.1.1)(react@19.0.0)(typescript@6.0.3)(use-sync-external-store@1.4.0(react@19.0.0))(viem@2.31.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4))': dependencies: eventemitter3: 5.0.1 - mipd: 0.0.7 - viem: 2.31.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + mipd: 0.0.7(typescript@6.0.3) + viem: 2.31.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) zustand: 5.0.0(@types/react@19.0.10)(immer@10.1.1)(react@19.0.0)(use-sync-external-store@1.4.0(react@19.0.0)) optionalDependencies: '@tanstack/query-core': 5.67.2 + typescript: 6.0.3 transitivePeerDependencies: - '@types/react' - immer - react - use-sync-external-store - '@walletconnect/core@2.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@walletconnect/core@2.21.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 @@ -4699,7 +5540,7 @@ snapshots: '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.21.0 - '@walletconnect/utils': 2.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/utils': 2.21.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) '@walletconnect/window-getters': 1.0.1 es-toolkit: 1.33.0 events: 3.3.0 @@ -4728,7 +5569,7 @@ snapshots: - utf-8-validate - zod - '@walletconnect/core@2.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@walletconnect/core@2.21.1(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 @@ -4742,7 +5583,7 @@ snapshots: '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.21.1 - '@walletconnect/utils': 2.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/utils': 2.21.1(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) '@walletconnect/window-getters': 1.0.1 es-toolkit: 1.33.0 events: 3.3.0 @@ -4775,18 +5616,18 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/ethereum-provider@2.21.1(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@walletconnect/ethereum-provider@2.21.1(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: - '@reown/appkit': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit': 1.7.8(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.0.0)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) '@walletconnect/jsonrpc-http-connection': 1.0.8 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/keyvaluestorage': 1.1.1 - '@walletconnect/sign-client': 2.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/sign-client': 2.21.1(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) '@walletconnect/types': 2.21.1 - '@walletconnect/universal-provider': 2.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) - '@walletconnect/utils': 2.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/universal-provider': 2.21.1(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/utils': 2.21.1(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -4907,16 +5748,16 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/sign-client@2.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@walletconnect/sign-client@2.21.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: - '@walletconnect/core': 2.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/core': 2.21.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.21.0 - '@walletconnect/utils': 2.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/utils': 2.21.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -4942,16 +5783,16 @@ snapshots: - utf-8-validate - zod - '@walletconnect/sign-client@2.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@walletconnect/sign-client@2.21.1(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: - '@walletconnect/core': 2.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/core': 2.21.1(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.21.1 - '@walletconnect/utils': 2.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/utils': 2.21.1(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -5037,7 +5878,7 @@ snapshots: - ioredis - uploadthing - '@walletconnect/universal-provider@2.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@walletconnect/universal-provider@2.21.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/jsonrpc-http-connection': 1.0.8 @@ -5046,9 +5887,9 @@ snapshots: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/keyvaluestorage': 1.1.1 '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/sign-client': 2.21.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) '@walletconnect/types': 2.21.0 - '@walletconnect/utils': 2.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/utils': 2.21.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) es-toolkit: 1.33.0 events: 3.3.0 transitivePeerDependencies: @@ -5076,7 +5917,7 @@ snapshots: - utf-8-validate - zod - '@walletconnect/universal-provider@2.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@walletconnect/universal-provider@2.21.1(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/jsonrpc-http-connection': 1.0.8 @@ -5085,9 +5926,9 @@ snapshots: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/keyvaluestorage': 1.1.1 '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/sign-client': 2.21.1(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) '@walletconnect/types': 2.21.1 - '@walletconnect/utils': 2.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + '@walletconnect/utils': 2.21.1(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) es-toolkit: 1.33.0 events: 3.3.0 transitivePeerDependencies: @@ -5115,7 +5956,7 @@ snapshots: - utf-8-validate - zod - '@walletconnect/utils@2.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@walletconnect/utils@2.21.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: '@noble/ciphers': 1.2.1 '@noble/curves': 1.8.1 @@ -5133,7 +5974,7 @@ snapshots: detect-browser: 5.3.0 query-string: 7.1.3 uint8arrays: 3.1.0 - viem: 2.23.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.23.2(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -5158,7 +5999,7 @@ snapshots: - utf-8-validate - zod - '@walletconnect/utils@2.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@walletconnect/utils@2.21.1(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: '@noble/ciphers': 1.2.1 '@noble/curves': 1.8.1 @@ -5176,7 +6017,7 @@ snapshots: detect-browser: 5.3.0 query-string: 7.1.3 uint8arrays: 3.1.0 - viem: 2.23.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.23.2(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -5210,8 +6051,9 @@ snapshots: '@walletconnect/window-getters': 1.0.1 tslib: 1.14.1 - abitype@1.0.8(zod@3.22.4): + abitype@1.0.8(typescript@6.0.3)(zod@3.22.4): optionalDependencies: + typescript: 6.0.3 zod: 3.22.4 acorn-jsx@5.3.2(acorn@8.14.1): @@ -5229,6 +6071,8 @@ snapshots: ansi-regex@5.0.1: {} + ansi-regex@6.5.0: {} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 @@ -5327,10 +6171,18 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.6.2: {} + chokidar@4.0.3: dependencies: readdirp: 4.1.2 + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-spinners@3.4.0: {} + client-only@0.0.1: {} cliui@6.0.0: @@ -5351,6 +6203,8 @@ snapshots: colorjs.io@0.5.2: {} + commander@15.0.0: {} + concat-map@0.0.1: {} convert-source-map@1.9.0: {} @@ -5371,12 +6225,14 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 - cosmiconfig@8.3.6: + cosmiconfig@8.3.6(typescript@6.0.3): dependencies: import-fresh: 3.3.1 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 + optionalDependencies: + typescript: 6.0.3 crc-32@1.2.2: {} @@ -5428,6 +6284,8 @@ snapshots: deep-is@0.1.4: {} + deepmerge-ts@7.1.6: {} + define-data-property@1.1.4: dependencies: es-define-property: 1.0.1 @@ -5444,6 +6302,8 @@ snapshots: detect-browser@5.3.0: {} + detect-indent@7.0.2: {} + dijkstrajs@1.0.3: {} dom-helpers@5.2.1: @@ -5510,6 +6370,8 @@ snapshots: es-errors@1.3.0: {} + es-module-lexer@1.7.0: {} + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 @@ -5664,6 +6526,21 @@ snapshots: events@3.3.0: {} + execa@10.2.1: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 8.0.1 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 6.0.0 + pretty-ms: 9.3.1 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + which-command: 0.1.0 + yoctocolors: 2.2.0 + extension-port-stream@3.0.0: dependencies: readable-stream: 3.6.2 @@ -5679,6 +6556,10 @@ snapshots: fast-safe-stringify@2.1.1: {} + figures@6.1.0: + dependencies: + is-unicode-supported: 2.1.0 + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -5708,6 +6589,8 @@ snapshots: dependencies: is-callable: 1.2.7 + fs.promises.exists@1.1.4: {} + fsevents@2.3.3: optional: true @@ -5717,6 +6600,8 @@ snapshots: get-caller-file@2.0.5: {} + get-east-asian-width@1.7.0: {} + get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -5735,6 +6620,15 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 + get-stream@9.0.1: + dependencies: + '@sec-ant/readable-stream': 0.4.1 + is-stream: 4.0.1 + + get-tsconfig@4.14.3: + dependencies: + resolve-pkg-maps: 1.0.0 + glob-parent@6.0.2: dependencies: is-glob: 4.0.3 @@ -5783,6 +6677,16 @@ snapshots: dependencies: react-is: 16.13.1 + hosted-git-info@7.0.2: + dependencies: + lru-cache: 10.4.3 + + hosted-git-info@9.0.3: + dependencies: + lru-cache: 11.5.3 + + human-signals@8.0.1: {} + idb-keyval@6.2.2: {} ieee754@1.2.1: {} @@ -5801,6 +6705,8 @@ snapshots: imurmurhash@0.1.4: {} + index-to-position@1.2.0: {} + inherits@2.0.4: {} iron-webcrypto@1.2.1: {} @@ -5833,6 +6739,10 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-interactive@2.0.0: {} + + is-plain-obj@4.1.0: {} + is-regex@1.2.1: dependencies: call-bound: 1.0.4 @@ -5842,10 +6752,14 @@ snapshots: is-stream@2.0.1: {} + is-stream@4.0.1: {} + is-typed-array@1.1.15: dependencies: which-typed-array: 1.1.19 + is-unicode-supported@2.1.0: {} + isarray@1.0.0: {} isexe@2.0.0: {} @@ -5930,6 +6844,11 @@ snapshots: lodash.merge@4.6.2: {} + log-symbols@7.0.1: + dependencies: + is-unicode-supported: 2.1.0 + yoctocolors: 2.2.0 + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 @@ -5940,6 +6859,8 @@ snapshots: lru-cache@10.4.3: {} + lru-cache@11.5.3: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -5948,11 +6869,15 @@ snapshots: micro-ftch@0.3.1: {} + mimic-function@5.0.1: {} + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 - mipd@0.0.7: {} + mipd@0.0.7(typescript@6.0.3): + optionalDependencies: + typescript: 6.0.3 ms@2.1.3: {} @@ -5981,8 +6906,25 @@ snapshots: node-releases@2.0.19: {} + normalize-package-data@6.0.2: + dependencies: + hosted-git-info: 7.0.2 + semver: 7.7.2 + validate-npm-package-license: 3.0.4 + + normalize-package-data@8.0.0: + dependencies: + hosted-git-info: 9.0.3 + semver: 7.7.2 + validate-npm-package-license: 3.0.4 + normalize-path@3.0.0: {} + npm-run-path@6.0.0: + dependencies: + path-key: 4.0.0 + unicorn-magic: 0.3.0 + obj-multiplex@1.0.0: dependencies: end-of-stream: 1.4.4 @@ -6005,6 +6947,10 @@ snapshots: dependencies: wrappy: 1.0.2 + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -6014,19 +6960,32 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - ox@0.6.7(zod@3.22.4): + ora@9.4.1: + dependencies: + chalk: 5.6.2 + cli-cursor: 5.0.0 + cli-spinners: 3.4.0 + is-interactive: 2.0.0 + is-unicode-supported: 2.1.0 + log-symbols: 7.0.1 + stdin-discarder: 0.3.2 + string-width: 8.3.0 + + ox@0.6.7(typescript@6.0.3)(zod@3.22.4): dependencies: '@adraffy/ens-normalize': 1.11.0 '@noble/curves': 1.9.6 '@noble/hashes': 1.8.0 '@scure/bip32': 1.6.2 '@scure/bip39': 1.5.4 - abitype: 1.0.8(zod@3.22.4) + abitype: 1.0.8(typescript@6.0.3)(zod@3.22.4) eventemitter3: 5.0.1 + optionalDependencies: + typescript: 6.0.3 transitivePeerDependencies: - zod - ox@0.7.1(zod@3.22.4): + ox@0.7.1(typescript@6.0.3)(zod@3.22.4): dependencies: '@adraffy/ens-normalize': 1.11.0 '@noble/ciphers': 1.3.0 @@ -6034,8 +6993,10 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.0.8(zod@3.22.4) + abitype: 1.0.8(typescript@6.0.3)(zod@3.22.4) eventemitter3: 5.0.1 + optionalDependencies: + typescript: 6.0.3 transitivePeerDependencies: - zod @@ -6068,20 +7029,34 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + parse-json@8.3.0: + dependencies: + '@babel/code-frame': 7.26.2 + index-to-position: 1.2.0 + type-fest: 4.41.0 + + parse-ms@4.0.0: {} + path-exists@4.0.0: {} path-key@3.1.1: {} + path-key@4.0.0: {} + path-parse@1.0.7: {} path-type@4.0.0: {} + pathe@2.0.3: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} picomatch@4.0.2: {} + picomatch@4.0.7: {} + pify@3.0.0: {} pify@5.0.0: {} @@ -6109,6 +7084,35 @@ snapshots: pngjs@5.0.0: {} + polkadot-api@3.3.0(bufferutil@4.0.9)(esbuild@0.25.0)(rxjs@7.8.1)(utf-8-validate@5.0.10): + dependencies: + '@polkadot-api/cli': 0.22.5(bufferutil@4.0.9)(esbuild@0.25.0)(utf-8-validate@5.0.10) + '@polkadot-api/ink-contracts': 0.7.2 + '@polkadot-api/json-rpc-provider': 0.2.0 + '@polkadot-api/known-chains': 0.12.5 + '@polkadot-api/logs-provider': 0.2.0 + '@polkadot-api/metadata-builders': 0.15.2 + '@polkadot-api/metadata-compatibility': 0.7.2 + '@polkadot-api/observable-client': 0.19.4(rxjs@7.8.1) + '@polkadot-api/pjs-signer': 0.9.0(rxjs@7.8.1) + '@polkadot-api/raw-tx-creator': 0.5.0(rxjs@7.8.1) + '@polkadot-api/signers-common': 0.4.0(rxjs@7.8.1) + '@polkadot-api/sm-provider': 0.3.10(@polkadot-api/smoldot@0.4.9(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@polkadot-api/smoldot': 0.4.9(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@polkadot-api/substrate-bindings': 0.21.2 + '@polkadot-api/substrate-client': 0.7.0 + '@polkadot-api/tx-creator': 0.2.0(rxjs@7.8.1) + '@polkadot-api/utils': 0.4.0 + '@polkadot-api/ws-middleware': 0.4.2(rxjs@7.8.1) + '@polkadot-api/ws-provider': 0.9.2(rxjs@7.8.1) + '@rx-state/core': 0.1.4(rxjs@7.8.1) + rxjs: 7.8.1 + transitivePeerDependencies: + - bufferutil + - esbuild + - supports-color + - utf-8-validate + pony-cause@2.1.11: {} possible-typed-array-names@1.1.0: {} @@ -6123,6 +7127,10 @@ snapshots: prelude-ls@1.2.1: {} + pretty-ms@9.3.1: + dependencies: + parse-ms: 4.0.0 + process-nextick-args@2.0.1: {} process-warning@1.0.0: {} @@ -6221,6 +7229,22 @@ snapshots: react@19.0.0: {} + read-pkg@10.1.0: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 8.0.0 + parse-json: 8.3.0 + type-fest: 5.10.0 + unicorn-magic: 0.4.1 + + read-pkg@9.0.1: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 6.0.2 + parse-json: 8.3.0 + type-fest: 4.41.0 + unicorn-magic: 0.1.0 + readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 @@ -6249,12 +7273,30 @@ snapshots: resolve-from@4.0.0: {} + resolve-pkg-maps@1.0.0: {} + resolve@1.22.10: dependencies: is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + rollup-plugin-esbuild@6.2.1(esbuild@0.25.0)(rollup@4.67.5): + dependencies: + debug: 4.4.1 + es-module-lexer: 1.7.0 + esbuild: 0.25.0 + get-tsconfig: 4.14.3 + rollup: 4.67.5 + unplugin-utils: 0.2.5 + transitivePeerDependencies: + - supports-color + rollup@4.34.9: dependencies: '@types/estree': 1.0.6 @@ -6280,10 +7322,46 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.34.9 fsevents: 2.3.3 + rollup@4.67.5: + dependencies: + '@types/estree': 1.0.10 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.67.5 + '@rollup/rollup-android-arm64': 4.67.5 + '@rollup/rollup-android-x64': 4.67.5 + '@rollup/rollup-darwin-arm64': 4.67.5 + '@rollup/rollup-darwin-x64': 4.67.5 + '@rollup/rollup-freebsd-arm64': 4.67.5 + '@rollup/rollup-freebsd-x64': 4.67.5 + '@rollup/rollup-linux-arm-gnueabihf': 4.67.5 + '@rollup/rollup-linux-arm-musleabihf': 4.67.5 + '@rollup/rollup-linux-arm64-gnu': 4.67.5 + '@rollup/rollup-linux-arm64-musl': 4.67.5 + '@rollup/rollup-linux-loong64-gnu': 4.67.5 + '@rollup/rollup-linux-loong64-musl': 4.67.5 + '@rollup/rollup-linux-ppc64-gnu': 4.67.5 + '@rollup/rollup-linux-ppc64-musl': 4.67.5 + '@rollup/rollup-linux-riscv64-gnu': 4.67.5 + '@rollup/rollup-linux-riscv64-musl': 4.67.5 + '@rollup/rollup-linux-s390x-gnu': 4.67.5 + '@rollup/rollup-linux-x64-gnu': 4.67.5 + '@rollup/rollup-linux-x64-musl': 4.67.5 + '@rollup/rollup-openbsd-x64': 4.67.5 + '@rollup/rollup-openharmony-arm64': 4.67.5 + '@rollup/rollup-win32-arm64-msvc': 4.67.5 + '@rollup/rollup-win32-ia32-msvc': 4.67.5 + '@rollup/rollup-win32-x64-gnu': 4.67.5 + '@rollup/rollup-win32-x64-msvc': 4.67.5 + fsevents: 2.3.3 + rxjs@7.8.1: dependencies: tslib: 2.8.1 + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + safe-buffer@5.1.2: {} safe-buffer@5.2.1: {} @@ -6424,6 +7502,15 @@ snapshots: shebang-regex@3.0.0: {} + signal-exit@4.1.0: {} + + smoldot@3.7.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): + dependencies: + ws: 8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + snake-case@3.0.4: dependencies: dot-case: 3.0.4 @@ -6451,14 +7538,34 @@ snapshots: dependencies: atomic-sleep: 1.0.0 + sort-keys@5.1.0: + dependencies: + is-plain-obj: 4.1.0 + source-map-js@1.2.1: {} source-map@0.5.7: {} + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.24 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.24 + + spdx-license-ids@3.0.24: {} + split-on-first@1.1.0: {} split2@4.2.0: {} + stdin-discarder@0.3.2: {} + stream-shift@1.0.3: {} strict-uri-encode@2.0.0: {} @@ -6469,6 +7576,11 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + string-width@8.3.0: + dependencies: + get-east-asian-width: 1.7.0 + strip-ansi: 7.2.0 + string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 @@ -6481,6 +7593,12 @@ snapshots: dependencies: ansi-regex: 5.0.1 + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.5.0 + + strip-final-newline@4.0.0: {} + strip-json-comments@3.1.1: {} stylis@4.2.0: {} @@ -6511,12 +7629,18 @@ snapshots: sync-message-port@1.1.3: {} + tagged-tag@1.0.0: {} + thread-stream@0.15.2: dependencies: real-require: 0.1.0 tr46@0.0.3: {} + tsc-prog@2.3.0(typescript@6.0.3): + dependencies: + typescript: 6.0.3 + tslib@1.14.1: {} tslib@2.8.1: {} @@ -6527,6 +7651,14 @@ snapshots: dependencies: prelude-ls: 1.2.1 + type-fest@4.41.0: {} + + type-fest@5.10.0: + dependencies: + tagged-tag: 1.0.0 + + typescript@6.0.3: {} + ufo@1.6.1: {} uint8arrays@3.1.0: @@ -6537,6 +7669,19 @@ snapshots: undici-types@6.19.8: {} + undici-types@8.9.0: {} + + unicorn-magic@0.1.0: {} + + unicorn-magic@0.3.0: {} + + unicorn-magic@0.4.1: {} + + unplugin-utils@0.2.5: + dependencies: + pathe: 2.0.3 + picomatch: 4.0.7 + unstorage@1.16.0(idb-keyval@6.2.2): dependencies: anymatch: 3.1.3 @@ -6586,6 +7731,11 @@ snapshots: uuid@9.0.1: {} + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + valtio@1.13.2(@types/react@19.0.10)(react@19.0.0): dependencies: derive-valtio: 0.1.0(valtio@1.13.2(@types/react@19.0.10)(react@19.0.0)) @@ -6597,65 +7747,71 @@ snapshots: varint@6.0.0: {} - viem@2.23.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4): + viem@2.23.2(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4): dependencies: '@noble/curves': 1.8.1 '@noble/hashes': 1.7.1 '@scure/bip32': 1.6.2 '@scure/bip39': 1.5.4 - abitype: 1.0.8(zod@3.22.4) + abitype: 1.0.8(typescript@6.0.3)(zod@3.22.4) isows: 1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ox: 0.6.7(zod@3.22.4) + ox: 0.6.7(typescript@6.0.3)(zod@3.22.4) ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + optionalDependencies: + typescript: 6.0.3 transitivePeerDependencies: - bufferutil - utf-8-validate - zod - viem@2.31.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4): + viem@2.31.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4): dependencies: '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.0.8(zod@3.22.4) + abitype: 1.0.8(typescript@6.0.3)(zod@3.22.4) isows: 1.0.7(ws@8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ox: 0.7.1(zod@3.22.4) + ox: 0.7.1(typescript@6.0.3)(zod@3.22.4) ws: 8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + optionalDependencies: + typescript: 6.0.3 transitivePeerDependencies: - bufferutil - utf-8-validate - zod - vite-plugin-svgr@4.3.0(rollup@4.34.9)(vite@6.2.1(@types/node@22.7.5)(sass-embedded@1.85.1)): + vite-plugin-svgr@4.3.0(rollup@4.67.5)(typescript@6.0.3)(vite@6.2.1(@types/node@26.6.6)(sass-embedded@1.85.1)): dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.34.9) - '@svgr/core': 8.1.0 - '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0) - vite: 6.2.1(@types/node@22.7.5)(sass-embedded@1.85.1) + '@rollup/pluginutils': 5.1.4(rollup@4.67.5) + '@svgr/core': 8.1.0(typescript@6.0.3) + '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@6.0.3)) + vite: 6.2.1(@types/node@26.6.6)(sass-embedded@1.85.1) transitivePeerDependencies: - rollup - supports-color - typescript - vite@6.2.1(@types/node@22.7.5)(sass-embedded@1.85.1): + vite@6.2.1(@types/node@26.6.6)(sass-embedded@1.85.1): dependencies: esbuild: 0.25.0 postcss: 8.5.3 rollup: 4.34.9 optionalDependencies: - '@types/node': 22.7.5 + '@types/node': 26.6.6 fsevents: 2.3.3 sass-embedded: 1.85.1 - wagmi@2.15.6(@tanstack/query-core@5.67.2)(@tanstack/react-query@5.67.2(react@19.0.0))(@types/react@19.0.10)(bufferutil@4.0.9)(immer@10.1.1)(react@19.0.0)(utf-8-validate@5.0.10)(viem@2.31.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4): + wagmi@2.15.6(@tanstack/query-core@5.67.2)(@tanstack/react-query@5.67.2(react@19.0.0))(@types/react@19.0.10)(bufferutil@4.0.9)(immer@10.1.1)(react@19.0.0)(typescript@6.0.3)(utf-8-validate@5.0.10)(viem@2.31.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4): dependencies: '@tanstack/react-query': 5.67.2(react@19.0.0) - '@wagmi/connectors': 5.8.5(@types/react@19.0.10)(@wagmi/core@2.17.3(@tanstack/query-core@5.67.2)(@types/react@19.0.10)(immer@10.1.1)(react@19.0.0)(use-sync-external-store@1.4.0(react@19.0.0))(viem@2.31.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4)))(bufferutil@4.0.9)(react@19.0.0)(utf-8-validate@5.0.10)(viem@2.31.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4) - '@wagmi/core': 2.17.3(@tanstack/query-core@5.67.2)(@types/react@19.0.10)(immer@10.1.1)(react@19.0.0)(use-sync-external-store@1.4.0(react@19.0.0))(viem@2.31.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4)) + '@wagmi/connectors': 5.8.5(@types/react@19.0.10)(@wagmi/core@2.17.3(@tanstack/query-core@5.67.2)(@types/react@19.0.10)(immer@10.1.1)(react@19.0.0)(typescript@6.0.3)(use-sync-external-store@1.4.0(react@19.0.0))(viem@2.31.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4)))(bufferutil@4.0.9)(react@19.0.0)(typescript@6.0.3)(utf-8-validate@5.0.10)(viem@2.31.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4))(zod@3.22.4) + '@wagmi/core': 2.17.3(@tanstack/query-core@5.67.2)(@types/react@19.0.10)(immer@10.1.1)(react@19.0.0)(typescript@6.0.3)(use-sync-external-store@1.4.0(react@19.0.0))(viem@2.31.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4)) react: 19.0.0 use-sync-external-store: 1.4.0(react@19.0.0) - viem: 2.31.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.31.0(bufferutil@4.0.9)(typescript@6.0.3)(utf-8-validate@5.0.10)(zod@3.22.4) + optionalDependencies: + typescript: 6.0.3 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -6693,6 +7849,8 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 + which-command@0.1.0: {} + which-module@2.0.1: {} which-typed-array@1.1.19: @@ -6719,6 +7877,26 @@ snapshots: wrappy@1.0.2: {} + write-file-atomic@5.0.1: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + + write-json-file@6.0.0: + dependencies: + detect-indent: 7.0.2 + is-plain-obj: 4.1.0 + sort-keys: 5.1.0 + write-file-atomic: 5.0.1 + + write-package@7.2.0: + dependencies: + deepmerge-ts: 7.1.6 + read-pkg: 9.0.1 + sort-keys: 5.1.0 + type-fest: 4.41.0 + write-json-file: 6.0.0 + ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10): optionalDependencies: bufferutil: 4.0.9 @@ -6770,6 +7948,8 @@ snapshots: yocto-queue@0.1.0: {} + yoctocolors@2.2.0: {} + zod@3.22.4: {} zustand@5.0.0(@types/react@19.0.10)(immer@10.1.1)(react@19.0.0)(use-sync-external-store@1.4.0(react@19.0.0)): diff --git a/src/App.jsx b/src/App.jsx index d0924c1..8a365e9 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -36,7 +36,7 @@ const BondModalContainer = lazy(() => import("./containers/Bond/BondModal")); const StakeContainer = lazy(() => import("./containers/Stake/StakeContainer")); const TreasuryDashboard = lazy(() => import("./containers/TreasuryDashboard/TreasuryDashboard")); const Dex = lazy(() => import("./containers/Dex/Dex")); -const Bridge = lazy(() => import("./containers/Bridge/Bridge")); +const BridgeIn = lazy(() => import("./containers/Bridge/BridgeIn")); const NotFound = lazy(() => import("./containers/NotFound/NotFound")); const Governance = lazy(() => import("./containers/Governance/Governance")); const ProposalDetails = lazy(() => import("./containers/Governance/ProposalDetails")); @@ -183,9 +183,9 @@ function App() { /> @@ -200,7 +200,7 @@ function App() { } /> } /> } /> - } /> + } /> } /> } /> } /> diff --git a/src/abi/GhostGatekeeper.json b/src/abi/GhostGatekeeper.json index a518ae8..3320171 100644 --- a/src/abi/GhostGatekeeper.json +++ b/src/abi/GhostGatekeeper.json @@ -1 +1 @@ -{"abi":[{"inputs":[{"internalType":"address","name":"_staking","type":"address"},{"internalType":"uint256","name":"_ghostedSupply","type":"uint256"},{"internalType":"uint256","name":"_existential","type":"uint256"},{"internalType":"uint48","name":"_deployedAt","type":"uint48"},{"internalType":"uint104","name":"_amountIn","type":"uint104"},{"internalType":"uint104","name":"_amountOut","type":"uint104"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyExecuted","type":"error"},{"inputs":[],"name":"NonExistentAmount","type":"error"},{"inputs":[],"name":"NotStaking","type":"error"},{"inputs":[],"name":"WrongSignature","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"receiver","type":"bytes32"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Ghosted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Materialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"aggregatedPublicKey","type":"uint256"}],"name":"Rotated","type":"event"},{"inputs":[],"name":"DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"existentialDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"receiver","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ghost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ghostedSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rx","type":"uint256"},{"internalType":"uint256","name":"s","type":"uint256"}],"name":"materialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"metadata","outputs":[{"components":[{"internalType":"uint48","name":"deployedAt","type":"uint48"},{"internalType":"uint104","name":"amountIn","type":"uint104"},{"internalType":"uint104","name":"amountOut","type":"uint104"}],"internalType":"struct IGatekeeperMetadata.GatekeeperMetadata","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"aggregatedPublicKey","type":"uint256"},{"internalType":"uint256","name":"rx","type":"uint256"},{"internalType":"uint256","name":"s","type":"uint256"}],"name":"rotate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"staking","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]} +{"abi":[{"inputs":[{"internalType":"address","name":"_storageHistory","type":"address"},{"internalType":"address","name":"_staking","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyExecuted","type":"error"},{"inputs":[],"name":"BadSignature","type":"error"},{"inputs":[],"name":"CheckpointUnorderedInsertion","type":"error"},{"inputs":[],"name":"ExecutionReverted","type":"error"},{"inputs":[],"name":"HistoricalRotation","type":"error"},{"inputs":[],"name":"InactiveSlotForChainId","type":"error"},{"inputs":[],"name":"InsufficientValue","type":"error"},{"inputs":[],"name":"InvalidCalldata","type":"error"},{"inputs":[],"name":"InvalidPayloadSize","type":"error"},{"inputs":[],"name":"InvalidPublicKey","type":"error"},{"inputs":[],"name":"InvalidSelector","type":"error"},{"inputs":[],"name":"MalleableExodusSession","type":"error"},{"inputs":[],"name":"NonExistentAmount","type":"error"},{"inputs":[],"name":"NotGatekeeper","type":"error"},{"inputs":[],"name":"NotStaking","type":"error"},{"inputs":[],"name":"OutOfBoundsSessions","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"SendFailed","type":"error"},{"inputs":[],"name":"WrongChainId","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"exodusSession","type":"uint256"},{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"bytes","name":"ret","type":"bytes"}],"name":"GovernanceExecutionFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Recalled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"aggregatedPublicKey","type":"bytes32"},{"indexed":true,"internalType":"uint256","name":"session","type":"uint256"}],"name":"Rotated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"session","type":"uint256"}],"name":"ThreadInserted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"gasSpent","type":"uint256"}],"name":"VoluntaryVerification","type":"event"},{"inputs":[],"name":"BOUNTY_DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEPTH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ENTRIES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EXISTENTIAL_DEPOSIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FULL_GAS_RESTORATION_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GAS_EXECUTION_BUFFER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_ALLOWED_GAS_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PHANTOM_EXPIRY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REGISTRY_INDEX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SLOTS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentWeavingSession","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentGasPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"globalIndex","type":"uint256"},{"internalType":"uint256","name":"session","type":"uint256"},{"internalType":"uint256","name":"atBlock","type":"uint256"}],"name":"getProof","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"session","type":"uint256"},{"internalType":"uint256","name":"atBlock","type":"uint256"}],"name":"getRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"atExodusSession","type":"uint256"}],"name":"getRotationInfoAt","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"globalIndex","type":"uint256"},{"internalType":"uint256","name":"session","type":"uint256"},{"internalType":"uint256","name":"atBlock","type":"uint256"}],"name":"getSlotValues","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"receiver","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ghost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ghostedSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"exodusSession","type":"uint256"},{"internalType":"uint256","name":"packed","type":"uint256"},{"internalType":"bytes","name":"call","type":"bytes"}],"name":"govern","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_previousGatekeeperAddress","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"latestPublicKeyInfo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"previousAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"exodusSession","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"packed","type":"uint256"}],"name":"recall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"commonExodusSession","type":"uint256"},{"internalType":"bytes32","name":"newPublicKey","type":"bytes32"},{"internalType":"uint256","name":"packedBits","type":"uint256"},{"internalType":"bytes","name":"sessions","type":"bytes"}],"name":"rotate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"staking","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startWeavingSession","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"storageHistory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"publicKey","type":"bytes32"}],"name":"updatePublicKeyMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"call","type":"bytes"},{"internalType":"uint256","name":"rx","type":"uint256"},{"internalType":"uint256","name":"s","type":"uint256"}],"name":"verify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]} diff --git a/src/components/NavItem/NavItem.jsx b/src/components/NavItem/NavItem.jsx index 981bf01..ca3bd00 100644 --- a/src/components/NavItem/NavItem.jsx +++ b/src/components/NavItem/NavItem.jsx @@ -150,7 +150,8 @@ const NavItem = ({ component={ArrowUpIcon} />} - {chip && } + + {chip && } ); diff --git a/src/components/Sidebar/NavContent.jsx b/src/components/Sidebar/NavContent.jsx index f7a6288..bf74d73 100644 --- a/src/components/Sidebar/NavContent.jsx +++ b/src/components/Sidebar/NavContent.jsx @@ -56,6 +56,7 @@ import WifiProtectedSetupIcon from '@mui/icons-material/WifiProtectedSetup'; import { useTokenSymbol } from "../../hooks/tokens"; import { useLiveBonds } from "../../hooks/bonds/index"; +import { useLocalStorage } from "../../hooks/localstorage"; import pckg from "../../../package.json" const PREFIX = "NavContent"; @@ -70,16 +71,26 @@ const StyledBox = styled(Box)(({ theme }) => ({ }, })); -const NavContent = ({ chainId, addressChainId }) => { +const NavContent = ({ chainId, addressChainId, address }) => { const { chains } = useSwitchChain(); const chainName = useMemo(() => { return chains.find(chain => chain.id === chainId).name.toLowerCase(); - }, [chains, chainId, addressChainId]) + }, [chains, chainId, addressChainId]); + + const { useStorageValue, CONSTANTS } = useLocalStorage(); const { liveBonds: ghostBonds } = useLiveBonds(chainId); const { symbol: ftsoSymbol } = useTokenSymbol(chainId, "FTSO"); const { symbol: ghstSymbol } = useTokenSymbol(chainId, "GHST"); + const { data: pendingHistory } = useStorageValue(chainId, address, CONSTANTS.pendingHistoryPrefix, {}) + + const pendingTransactions = useMemo(() => { + if (!pendingHistory) return null; + const count = Object.values(pendingHistory).reduce((sum, count) => sum + count, 0); + return count > 0 ? count: null; + }, [pendingHistory]); + const sortedGhostBonds = useMemo(() => sortBondsByDiscount(ghostBonds), [ghostBonds]); const bridgeNumbers = useMemo(() => { const connectedNetworks = Object.keys(GATEKEEPER_ADDRESSES).length; @@ -179,8 +190,10 @@ const NavContent = ({ chainId, addressChainId }) => { } /> - - + + {/* */} + + @@ -192,7 +205,6 @@ const NavContent = ({ chainId, addressChainId }) => { - diff --git a/src/components/Sidebar/NavDrawer.jsx b/src/components/Sidebar/NavDrawer.jsx index 688d1ad..e7c1cd5 100644 --- a/src/components/Sidebar/NavDrawer.jsx +++ b/src/components/Sidebar/NavDrawer.jsx @@ -27,7 +27,7 @@ const StyledSwipeableDrawer = styled(SwipeableDrawer)(({ theme }) => ({ const drawerWidth = 280; -const NavDrawer = ({ chainId, addressChainId, mobileOpen, handleDrawerToggle }) => { +const NavDrawer = ({ chainId, address, addressChainId, mobileOpen, handleDrawerToggle }) => { const location = useLocation(); const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent); @@ -53,7 +53,7 @@ const NavDrawer = ({ chainId, addressChainId, mobileOpen, handleDrawerToggle }) disableBackdropTransition={!isIOS} disableDiscovery={isIOS} > - + ); }; diff --git a/src/components/Sidebar/Sidebar.jsx b/src/components/Sidebar/Sidebar.jsx index 01ec605..b714939 100644 --- a/src/components/Sidebar/Sidebar.jsx +++ b/src/components/Sidebar/Sidebar.jsx @@ -4,10 +4,10 @@ import { Drawer } from "@mui/material"; import React from "react"; import NavContent from "./NavContent"; -const Sidebar = ({ chainId, addressChainId }) => ( +const Sidebar = ({ chainId, addressChainId, address }) => (
- +
); diff --git a/src/components/TopBar/Wallet/InitialWalletView.tsx b/src/components/TopBar/Wallet/InitialWalletView.tsx index 7f0ce4a..dcc78fb 100644 --- a/src/components/TopBar/Wallet/InitialWalletView.tsx +++ b/src/components/TopBar/Wallet/InitialWalletView.tsx @@ -1,3 +1,4 @@ +import useSWR from 'swr'; import { useMemo } from "react"; import { Box, @@ -25,7 +26,7 @@ import ArrowUpIcon from "../../../assets/icons/arrow-up.svg?react"; import { formatCurrency, shorten } from "../../../helpers"; import { DecimalBigNumber } from "../../../helpers/DecimalBigNumber"; import { RESERVE_ADDRESSES, FTSO_ADDRESSES } from "../../../constants/addresses"; -import { useUnstableProvider, useSystemAccount, useChainSpec } from "../../../hooks/ghost" +import { useUnstableProvider } from "../../../hooks/ghost" import { useAccount, useDisconnect, useSwitchChain } from "wagmi"; @@ -113,28 +114,44 @@ function InitialWalletView({ isWalletOpen, address, chainId, onClose }) { const location = useLocation(); const tokens = useWallet(chainId, address); - const [currency, setCurrency] = useState("USD"); - const { account, isExtensionMissing } = useUnstableProvider(); + const { client, casperApi, account, isExtensionMissing } = useUnstableProvider(); const { chains } = useSwitchChain(); + const [currency, setCurrency] = useState("USD"); + const [accountIndex, setAccountIndex] = useState(0); + const chainName = useMemo(() => { const chain = chains.find(chain => chain.id === chainId) if (!chain) return null return chain.name.toLowerCase() - }, [chains, chainId]) + }, [chains, chainId]); - const chainSpec = useChainSpec(); - const accountBalanceRaw = useSystemAccount({ account }); + const { data: chainProperties } = useSWR( + client ? ['chainProperties', client] : null, + () => client.getChainSpecData(), + { + revalidateOnFocus: false + } + ); + + const { data: accountBalanceRaw } = useSWR( + client ? ['accountBalance', client] : null, + () => casperApi.query.System.Account.getValue(account), + { + refreshInterval: 12000, + revalidateOnFocus: true + } + ); const accountBalance = useMemo(() => { - const decimals = chainSpec ? chainSpec.properties.tokenDecimals : 18; + const decimals = chainProperties ? chainProperties.properties.tokenDecimals : 18; if (!accountBalanceRaw) return new DecimalBigNumber(0n, decimals); const balance = accountBalanceRaw.data.free + accountBalanceRaw.data.frozen + accountBalanceRaw.data.reserved; return new DecimalBigNumber(balance, decimals); - }, [accountBalanceRaw, chainSpec]) + }, [accountBalanceRaw, chainProperties]); const nativeGhst = useMemo(() => { return { @@ -201,7 +218,7 @@ function InitialWalletView({ isWalletOpen, address, chainId, onClose }) { diff --git a/src/containers/Breakout/BreakoutModal.jsx b/src/containers/Breakout/BreakoutModal.jsx index 490a359..fe0c491 100644 --- a/src/containers/Breakout/BreakoutModal.jsx +++ b/src/containers/Breakout/BreakoutModal.jsx @@ -75,6 +75,7 @@ const BreakoutModal = ({ chainId, address }) => { if (isClaimBondOpened && warmupPeriod > 0) return "Bond in Warm-up" }, [isStakingOpened, isClaimBondOpened, warmupPeriod]); + // TODO: make it global helpers const bridgeNumbers = useMemo(() => { const connectedNetworks = Object.keys(GATEKEEPER_ADDRESSES).length; const number = 1 + connectedNetworks * 3; diff --git a/src/containers/Bridge/BridgeGhostAddress.jsx b/src/containers/Bridge/BridgeGhostAddress.jsx new file mode 100644 index 0000000..80975ee --- /dev/null +++ b/src/containers/Bridge/BridgeGhostAddress.jsx @@ -0,0 +1,50 @@ +import { useState, useEffect } from "react"; +import { ss58Decode } from "@polkadot-labs/hdkd-helpers"; + +import CheckIcon from '@mui/icons-material/CheckCircle'; +import CancelIcon from '@mui/icons-material/Cancel'; + +import SwapCard from "../../components/Swap/SwapCard"; +import GhostStyledIcon from "../../components/Icon/GhostIcon"; + +import { shorten } from "../../helpers"; + +export const BridgeGhostAddressCard = ({ receiver, setReceiver }) => { + const [inputFocused, setInputFocused] = useState(false); + const [innerReceiver, setInnerReceiver] = useState(receiver); + + useEffect(() => { + try { + const [publicKey, prefix] = ss58Decode(innerReceiver); + if (prefix !== 1995 && prefix !== 1996) { + throw new Error("bad prefix"); + } + setReceiver(innerReceiver); + } catch (err) { + setReceiver(undefined) + } + }, [innerReceiver]); + + return ( + setInputFocused(true)} + onFocus={() => setInputFocused(false)} + onMouseLeave={() => setInputFocused(true)} + onMouseEnter={() => setInputFocused(false)} + onChange={event => setInnerReceiver(event.currentTarget.value)} + placeholder={receiver ? shorten(receiver, 15, -10) : "GHOST address (sf prefixed)"} + value={receiver ? "" : innerReceiver} + inputProps={{ "data-testid": "fromInput" }} + endString={receiver + ? + : inputFocused && !receiver + ? + : undefined + } + type="text" + maxWidth="100%" + /> + ) +} diff --git a/src/containers/Bridge/BridgeIn.jsx b/src/containers/Bridge/BridgeIn.jsx new file mode 100644 index 0000000..c81a565 --- /dev/null +++ b/src/containers/Bridge/BridgeIn.jsx @@ -0,0 +1,461 @@ +import { useEffect, useState, useMemo, useCallback } from "react"; +import { useLocation } from "react-router-dom"; +import { ss58Decode } from "@polkadot-labs/hdkd-helpers"; +import { toHex } from "@polkadot-api/utils"; +import ReactGA from "react-ga4"; +import useSWR from 'swr'; + +import { + Box, + Container, + Typography, + Skeleton, + useMediaQuery, + useTheme, +} from "@mui/material"; +import SettingsIcon from '@mui/icons-material/Settings'; + +import Paper from "../../components/Paper/Paper"; +import Metric from "../../components/Metric/Metric"; +import PageTitle from "../../components/PageTitle/PageTitle"; +import GhostStyledIcon from "../../components/Icon/GhostIcon"; +import MetricCollection from "../../components/Metric/MetricCollection"; +import LinearProgressBar from "../../components/Progress/LinearProgressBar"; +import SwapCard from "../../components/Swap/SwapCard"; +import SwapCollection from "../../components/Swap/SwapCollection"; +import TokenStack from "../../components/TokenStack/TokenStack"; +import DataRow from "../../components/DataRow/DataRow"; +import { PrimaryButton } from "../../components/Button"; + +import { BridgeInSettingsModal } from "./BridgeSettingsModal"; + +import { + ghost, + useGatekeeperApy, + useGatekeeperAddress, + useGatekeeperMinimum, +} from "../../hooks/staking"; + +import { useTokenSymbol, useBalance } from "../../hooks/tokens"; +import { useUnstableProvider } from "../../hooks/ghost"; +import { useLocalStorage } from "../../hooks/localstorage"; +import { prettifySeconds } from "../../helpers/timeUtil"; +import { DecimalBigNumber } from "../../helpers/DecimalBigNumber"; +import { formatNumber, formatCurrency } from "../../helpers"; +import { GATEKEEPER_ADDRESSES } from "../../constants/addresses"; +import { networkAvgBlockSpeed } from "../../constants"; + +const DECIMALS_PREFIX = "bridge-in-decimals"; + +const BridgeStatusCard = ({ totalValidators, pendingValidators, tapestryDraft }) => { + const theme = useTheme(); + const progressPercent = totalValidators > 0 + ? (pendingValidators / totalValidators) * 100 + : 0; + + return ( + + + + {tapestryDraft ? "Round 2: Merkle Root Verification" : "Round 1: Block Consensus"} + + + {tapestryDraft + ? `Block: ${formatNumber(tapestryDraft.median)} (${pendingValidators} out of ${totalValidators} validators)` + : `Blocks Pending... (${pendingValidators} out of ${totalValidators} validators)` + } + + + + + + ); +}; + +const BridgeIn = ({ chainId, address, config, connect }) => { + const location = useLocation(); + const { useStorageValue, setStorageValue, tryStoreInHistory, CONSTANTS } = useLocalStorage(); + + const isSmallScreen = useMediaQuery("(max-width: 650px)"); + const isSemiSmallScreen = useMediaQuery("(max-width: 480px)"); + const isVerySmallScreen = useMediaQuery("(max-width: 379px)"); + + const { casperApi, client, account } = useUnstableProvider(); + const { gatekeepedApy } = useGatekeeperApy(chainId); + + const [nextEraIn, setNextEraIn] = useState(null); + const [settingsOpen, setSettingsOpen] = useState(false); + const [isPending, setIsPending] = useState(false); + const [amount, setAmount] = useState(""); + const [receiver, setReceiver] = useState(account); + const [customReceiver, setCustomReceiver] = useState(account); + + const { symbol: ghstSymbol } = useTokenSymbol(chainId, "GHST"); + const { balance: ghstBalance, refetch: ghstBalanceRefetch } = useBalance(chainId, "GHST", address); + const { gatekeeperAddress } = useGatekeeperAddress(chainId); + const { existentialDeposit } = useGatekeeperMinimum(chainId); + + const { data: formatDecimals } = useStorageValue(chainId, address, DECIMALS_PREFIX, "5"); + + useEffect(() => { + ReactGA.send({ hitType: "pageview", page: location.pathname }); + }, [location]); + + const bridgeNumbers = useMemo(() => { + const connectedNetworks = Object.keys(GATEKEEPER_ADDRESSES).length; + const number = 1 + connectedNetworks * 3; + return `(${number}, ${number})`; + }, [chainId]); + + const { data: chainProperties } = useSWR( + client ? ['chainProperties', client] : null, + () => client.getChainSpecData(), + { + revalidateOnFocus: true + } + ); + + const { data: activeEraStart } = useSWR( + casperApi ? ['activeEra', casperApi] : null, + () => casperApi.query.Staking.ActiveEra.getValue(), + { + refreshInterval: 12000, + revalidateOnFocus: true + } + ); + + const { data: weaverAuthorities } = useSWR( + casperApi ? ['weaverAuthorities', casperApi] : null, + () => casperApi.query.GhostWeaver.Authorities.getValue(), + { + revalidateOnFocus: true + } + ); + + const { data: networkData } = useSWR( + casperApi ? ['networkData', casperApi, chainId] : null, + async () => { + const key = BigInt(chainId); + const res = await casperApi.query.GhostNetworks.Networks.getValue(key); + return res; + }, + { + revalidateOnFocus: true + } + ); + + const { data: totalStaked } = useSWR( + casperApi && activeEraStart && chainProperties ? ['erasTotalStake', casperApi, activeEraStart, chainProperties] : null, + async () => { + const decimals = chainProperties.properties.tokenDecimals; + const total = await casperApi.query.Staking.ErasTotalStake.getValue(activeEraStart.index); + return new DecimalBigNumber(total, decimals); + }, + { + revalidateOnFocus: true + } + ); + + const { data: networkAttestations } = useSWR( + casperApi ? ['networkAttestations', casperApi, chainId] : null, + async () => { + const key = BigInt(chainId); + const res = await casperApi.query.GhostWeaver.NetworkAttestations.getValue(key); + return res; + }, + { + refreshInterval: 12000, + revalidateOnFocus: true + } + ); + + const { data: tapestryDraft } = useSWR( + casperApi ? ['tapestryDraft', casperApi, chainId] : null, + async () => { + const key = BigInt(chainId); + const res = await casperApi.query.GhostWeaver.TapestryDrafts.getValue(key); + return res; + }, + { + refreshInterval: 12000, + revalidateOnFocus: true + } + ); + + const { data: tapestryStrand } = useSWR( + casperApi ? ['tapestryStrand', casperApi, chainId] : null, + async () => { + const key = BigInt(chainId); + const res = await casperApi.query.GhostWeaver.TapestryStrands.getValue(key); + return res; + }, + { + refreshInterval: 12000, + revalidateOnFocus: true + } + ); + + const tapestryParticipants = useMemo(() => { + if (!tapestryStrand) return { element: "", onesCount: 0 }; + + let maxOnesCount = 0; + let bestElement = null; + + tapestryStrand.forEach(item => { + const dataArray = item[1]?.data || []; + const totalOnes = dataArray.reduce((sum, num) => { + const onesInNumber = num.toString(2).split('1').length - 1; + return sum + onesInNumber; + }, 0); + + if (totalOnes > maxOnesCount) { + maxOnesCount = totalOnes; + bestElement = item[0]; + } + }); + + return { + element: bestElement, + onesCount: maxOnesCount + }; + }, [tapestryStrand]); + + useEffect(() => { + if (!activeEraStart || !activeEraStart.start) return; + + const calculateTime = () => { + const nowMs = Date.now(); + const diffMs = nowMs - Number(activeEraStart.start); + return prettifySeconds(Math.max(0, diffMs / 1000)); + }; + + setNextEraIn(calculateTime()); + + const intervalId = setInterval(() => { + setNextEraIn(calculateTime()); + }, 1000); + + return () => clearInterval(intervalId); + }, [activeEraStart]); + + const blockDelayMetric = useMemo(() => { + if (!networkData) return null; + const blockSpeed = networkAvgBlockSpeed(chainId); + const finalityDelay = networkData.finality_delay; + const estimatedMins = (blockSpeed * finalityDelay) / 60n; + return { finalityDelay, text: `~${estimatedMins} mins` } + }, [chainId, networkData]); + + const nativeSymbol = useMemo(() => { + const client = config?.getClient(); + return client?.chain?.nativeCurrency?.symbol; + }, [config]); + + const estimatedOutAmount = useMemo(() => { + const hundredPercent = 1000000000; + const incomingShare = networkData ? networkData.incoming_share : 0; + const result = hundredPercent - incomingShare; + + return amount * result / hundredPercent + }, [amount, networkData]); + + const gatekeepersDifferent = useMemo(() => { + if (!networkData) return false; + return gatekeeperAddress.toUpperCase() == toHex(networkData.gatekeeper).toUpperCase(); + }, [gatekeeperAddress, networkData]); + + const preparedAmount = useMemo(() => { + return new DecimalBigNumber(amount, ghstBalance._decimals); + }, [amount, ghstBalance]); + + const receiverHex = useMemo(() => { + const finalReceiver = customReceiver ? customReceiver : receiver; + try { + const [publicKey, prefix] = ss58Decode(finalReceiver); + if (prefix !== 1995 && prefix !== 1996) return undefined; + return toHex(publicKey); + } catch { + return undefined; + } + }, [receiver, customReceiver]); + + const actionDisabled = useMemo(() => { + if (!networkData) return true; + const differentGatekeepers = gatekeeperAddress.toUpperCase() !== toHex(networkData.gatekeeper).toUpperCase(); + const smallAmount = existentialDeposit.gt(preparedAmount); + const insufficientAmount = preparedAmount.gt(ghstBalance); + + return isPending || differentGatekeepers || smallAmount || insufficientAmount || !receiverHex + }, [isPending, networkData, gatekeeperAddress, existentialDeposit, preparedAmount, ghstBalance, receiverHex]); + + const setFormatDecimals = useCallback((value) => { + if (Number(value) <= 17) { + setStorageValue(chainId, address, DECIMALS_PREFIX, value); + } + }, [chainId, address]); + + const startGhostBridge = async () => { + setIsPending(true); + try { + const txHash = await ghost(chainId, address, receiverHex, preparedAmount._value); + if (txHash) tryStoreInHistory(chainId, address, CONSTANTS.bridgeIn.key, txHash, CONSTANTS.bridgeIn.name); + } finally { + await ghstBalanceRefetch(); + setAmount(""); + setIsPending(false); + } + } + + return ( + + + + setSettingsOpen(false)} + decimals={formatDecimals} + setDecimals={setFormatDecimals} + receiver={customReceiver} + setReceiver={setCustomReceiver} + /> + + + Next Era in + {nextEraIn + ? {nextEraIn} + : + } + + } + > + + + + + + + + + v !== undefined).length : 0 + } + /> + + + + setSettingsOpen(true)} + /> + } + headerContent={ + Bridge-In + } + > + + + } + tokenName={ghstSymbol} + info={formatCurrency(ghstBalance.toString(), formatDecimals, ghstSymbol)} + endString="Max" + value={amount} + endStringOnClick={() => setAmount(ghstBalance.toString())} + onChange={event => setAmount(event.currentTarget.value)} + inputProps={{ "data-testid": "fromInput" }} + />} + LowerSwapCard={ + + } + tokenName={"GHST"} + value={estimatedOutAmount} + inputProps={{ "data-testid": "toInput" }} + /> + } + /> + + {formatCurrency(existentialDeposit.toString(), formatDecimals, ghstSymbol)}} + /> + + + Bond + + + + + + +
+ ) +} + +export default BridgeIn; diff --git a/src/containers/Bridge/BridgeSettingsModal.jsx b/src/containers/Bridge/BridgeSettingsModal.jsx new file mode 100644 index 0000000..8ecd3dd --- /dev/null +++ b/src/containers/Bridge/BridgeSettingsModal.jsx @@ -0,0 +1,48 @@ +import { useState, useEffect } from "react"; +import { Box, Typography, FormControl, OutlinedInput, InputLabel } from "@mui/material"; +import { BridgeGhostAddressCard } from "./BridgeGhostAddress"; +import Modal from "../../components/Modal/Modal"; + +export const BridgeInSettingsModal = ({ isOpen, onClose, decimals, setDecimals, receiver, setReceiver }) => { + return ( + Bridge-In Settings} + open={isOpen} + onClose={onClose} + minHeight={"100px"} + > + + Decimal representation + + + setDecimals(event.currentTarget.value)} + endAdornment="decimals" + /> + + + + + Number of decimals to be shown in token balances + + + + + + Destination address + + + + Recipient address of swapped assets and liquidity tokens + + + + + ) +} diff --git a/src/containers/Dex/Dex.jsx b/src/containers/Dex/Dex.jsx index 8056e26..f067d52 100644 --- a/src/containers/Dex/Dex.jsx +++ b/src/containers/Dex/Dex.jsx @@ -41,12 +41,17 @@ import PoolContainer from "./PoolContainer"; import SwapContainer from "./SwapContainer"; import TokenModal from "./TokenModal"; +const DEADLINE_PREFIX = "dex-deadline"; +const SLIPPAGE_PREFIX = "dex-slippage"; +const DECIMALS_PREFIX = "dex-decimals"; +const DESTINATION_PREFIX = "dex-destination"; + const Dex = ({ chainId, address, connect, config }) => { const location = useLocation(); const pathname = useParams(); const theme = useTheme(); - const { getStorageValue, setStorageValue } = useLocalStorage(); + const { useStorageValue, setStorageValue, CONSTANTS } = useLocalStorage(); const isSmallScreen = useMediaQuery("(max-width: 650px)"); const isVerySmallScreen = useMediaQuery("(max-width: 379px)"); @@ -59,12 +64,12 @@ const Dex = ({ chainId, address, connect, config }) => { const [topTokenListOpen, setTopTokenListOpen] = useState(false); const [bottomTokenListOpen, setBottomTokenListOpen] = useState(false); - const [secondsToWait, setSecondsToWait] = useState(() => getStorageValue(chainId, address, "dex-deadline", "60")); - const [slippage, setSlippage] = useState(() => getStorageValue(chainId, address, "dex-slippage", "5")); - const [formatDecimals, setFormatDecimals] = useState(() => getStorageValue(chainId, address, "dex-decimals", "5")); - const [actualDestinationAddress, setActualDestinationAddress] = useState(() => getStorageValue(chainId, address, "dex-destination", address)); - const [destinationAddress, setDestinationAddress] = useState(actualDestinationAddress); + const { data: secondsToWait } = useStorageValue(chainId, address, DEADLINE_PREFIX, "60"); + const { data: slippage } = useStorageValue(chainId, address, SLIPPAGE_PREFIX, "5"); + const { data: formatDecimals } = useStorageValue(chainId, address, DECIMALS_PREFIX, "5"); + const { data: actualDestinationAddress } = useStorageValue(chainId, address, DECIMALS_PREFIX, address); + const [destinationAddress, setDestinationAddress] = useState(actualDestinationAddress); const [tokenAddressTop, setTokenAddressTop] = useState(EMPTY_ADDRESS); const [tokenAddressBottom, setTokenAddressBottom] = useState(FTSO_ADDRESSES[chainId]); @@ -192,23 +197,20 @@ const Dex = ({ chainId, address, connect, config }) => { return dexInfo ? dexInfo.isFork : false; }, [chainId, pathname]) - const setSlippageInner = useCallback((value) => { + const setSlippage = useCallback((value) => { const maybeValue = parseFloat(value); if (!maybeValue || parseFloat(value) <= 100) { - setSlippage(value); - setStorageValue(chainId, address, "dex-slippage", value); + setStorageValue(chainId, address, SLIPPAGE_PREFIX, value); } }, [chainId, address]); - const setSecondsToWaitInner = useCallback((value) => { - setSecondsToWait(value); - setStorageValue(chainId, address, "dex-deadline", value); + const setSecondsToWait = useCallback((value) => { + setStorageValue(chainId, address, DEADLINE_PREFIX, value); }, [chainId, address]); - const setFormatDecimalsInner = useCallback((value) => { + const setFormatDecimals = useCallback((value) => { if (Number(value) <= 17) { - setFormatDecimals(value); - setStorageValue(chainId, address, "dex-decimals", value); + setStorageValue(chainId, address, DECIMALS_PREFIX, value); } }, [chainId, address]); @@ -216,8 +218,7 @@ const Dex = ({ chainId, address, connect, config }) => { const cleanedValue = value.trim(); setDestinationAddress(value); if (isAddress(cleanedValue)) { - setActualDestinationAddress(value); - setStorageValue(chainId, address, "dex-destination", value); + setStorageValue(chainId, address, DECIMALS_PREFIX, value); } }, [chainId, address]); @@ -278,7 +279,7 @@ const Dex = ({ chainId, address, connect, config }) => { type="text" id="slippage-dex" value={slippage} - onChange={event => setSlippageInner(event.currentTarget.value)} + onChange={event => setSlippage(event.currentTarget.value)} endAdornment="%" /> @@ -299,7 +300,7 @@ const Dex = ({ chainId, address, connect, config }) => { type="number" id="seconds-to-wait" value={secondsToWait} - onChange={event => setSecondsToWaitInner(event.currentTarget.value)} + onChange={event => setSecondsToWait(event.currentTarget.value)} endAdornment="seconds" /> @@ -320,7 +321,7 @@ const Dex = ({ chainId, address, connect, config }) => { type="number" id="decimals-to-wait" value={formatDecimals} - onChange={event => setFormatDecimalsInner(event.currentTarget.value)} + onChange={event => setFormatDecimals(event.currentTarget.value)} endAdornment="decimals" /> diff --git a/src/containers/Dex/PoolContainer.jsx b/src/containers/Dex/PoolContainer.jsx index e2289a6..8f41ebe 100644 --- a/src/containers/Dex/PoolContainer.jsx +++ b/src/containers/Dex/PoolContainer.jsx @@ -38,7 +38,7 @@ const PoolContainer = ({ }) => { const theme = useTheme(); const isSmallScreen = useMediaQuery("(max-width: 456px)"); - const { tryStoreDexInHistory } = useLocalStorage(); + const { tryStoreInHistory, CONSTANTS } = useLocalStorage(); const [isPending, setIsPending] = useState(false); const [amountTop, setAmountTop] = useState(""); @@ -167,7 +167,12 @@ const PoolContainer = ({ const addLiquidityInner = async () => { setIsPending(true); - const deadline = Math.floor(Date.now() / 1000) + secondsToWait; + const numericSecondsToWait = parseInt(secondsToWait, 10); + const safeSecondsToWait = (!isNaN(numericSecondsToWait) && numericSecondsToWait > 0) + ? numericSecondsToWait + : 0; + + const deadline = Math.floor(Date.now() / 1000) + safeSecondsToWait; const shares = 100000; const one = BigInt(shares * 100); const floatSlippage = slippage === "" ? 0 : parseFloat(slippage); @@ -201,7 +206,7 @@ const PoolContainer = ({ txHash = await addLiquidity(params); } - if (txHash) tryStoreDexInHistory(chainId, address, txHash); + if (txHash) tryStoreInHistory(chainId, address, CONSTANTS.dex.key, txHash, CONSTANTS.dex.add); await balanceRefetchTop(); await balanceRefetchBottom(); diff --git a/src/containers/Dex/SwapContainer.jsx b/src/containers/Dex/SwapContainer.jsx index 4a90579..e5df51f 100644 --- a/src/containers/Dex/SwapContainer.jsx +++ b/src/containers/Dex/SwapContainer.jsx @@ -46,7 +46,7 @@ const SwapContainer = ({ }) => { const theme = useTheme(); const isSmallScreen = useMediaQuery("(max-width: 456px)"); - const { tryStoreDexInHistory } = useLocalStorage(); + const { tryStoreInHistory, CONSTANTS } = useLocalStorage(); const [isPending, setIsPending] = useState(false); const [amountBottom, setAmountBottom] = useState(""); @@ -163,7 +163,12 @@ const SwapContainer = ({ const swapTokens = async () => { setIsPending(true); - const deadline = Math.floor(Date.now() / 1000) + secondsToWait; + const numericSecondsToWait = parseInt(secondsToWait, 10); + const safeSecondsToWait = (!isNaN(numericSecondsToWait) && numericSecondsToWait > 0) + ? numericSecondsToWait + : 0; + + const deadline = Math.floor(Date.now() / 1000) + safeSecondsToWait; const shares = 100000; const one = BigInt(shares * 100); const floatSlippage = slippage === "" ? 0 : parseFloat(slippage); @@ -202,7 +207,7 @@ const SwapContainer = ({ } } - if (txHash) tryStoreDexInHistory(chainId, address, txHash); + if (txHash) tryStoreInHistory(chainId, address, CONSTANTS.dex.key, txHash, CONSTANTS.dex.swap); await balanceRefetchTop(); await balanceRefetchBottom(); diff --git a/src/containers/History/BridgeInModal.jsx b/src/containers/History/BridgeInModal.jsx new file mode 100644 index 0000000..96b32b1 --- /dev/null +++ b/src/containers/History/BridgeInModal.jsx @@ -0,0 +1,531 @@ +import useSWR from 'swr'; +import { useMemo, useState } from "react"; +import { useTransactionReceipt, useBlockNumber, useTransaction } from 'wagmi'; +import { decodeEventLog, decodeFunctionData } from 'viem'; +import { Box, Typography, Link, Skeleton, useTheme } from "@mui/material"; + +import CheckIcon from '@mui/icons-material/Check'; +import SyncIcon from '@mui/icons-material/Sync'; +import FingerprintIcon from '@mui/icons-material/Fingerprint'; +import ContentPasteIcon from '@mui/icons-material/ContentPaste'; +import HourglassBottomIcon from '@mui/icons-material/HourglassBottom'; +import PendingIcon from '@mui/icons-material/Pending'; +import CheckCircleIcon from '@mui/icons-material/CheckCircle'; + +import Modal from "../../components/Modal/Modal"; +import DataRow from "../../components/DataRow/DataRow"; +import GhostStyledIcon from "../../components/Icon/GhostIcon"; +import { PrimaryButton } from "../../components/Button"; +import { abi as GatekeeperAbi } from "../../abi/GhostGatekeeper.json"; + +import { useWeaverState } from "../../hooks/staking" +import { useUnstableProvider } from "../../hooks/ghost"; +import { DecimalBigNumber } from "../../helpers/DecimalBigNumber"; +import { shorten, formatNumber, formatCurrency } from "../../helpers"; + +const BridgeInModal = ({ chainId, isOpen, close, config, historyRecord }) => { + if (historyRecord === null) return null; + + const [copiedIndex, setCopiedIndex] = useState(null); + const { casperApi, client, account } = useUnstableProvider(); + const { data: blockNumber } = useBlockNumber({ watch: true }); + + const { data: txData } = useTransaction({ + chainId, + hash: historyRecord.txHash, + }); + + const functionData = useMemo(() => { + if (!txData) return null; + return decodeFunctionData({ abi: GatekeeperAbi, data: txData.input }) + }, [txData]); + + const copyToClipboard = (text, index) => { + navigator.clipboard.writeText(text).then(() => { + setCopiedIndex(index); + setTimeout(() => setCopiedIndex(null) , 800); + }); + }; + + const { data: chainProperties } = useSWR( + client ? ['chainProperties', client] : null, + () => client.getChainSpecData(), + { + revalidateOnFocus: true + } + ); + + const { data: networkData } = useSWR( + casperApi ? ['networkData', casperApi, chainId] : null, + async () => { + const key = BigInt(chainId); + const res = await casperApi.query.GhostNetworks.Networks.getValue(key); + return res; + }, + { + revalidateOnFocus: true + } + ); + + const chainInfo = useMemo(() => { + const client = config?.getClient(); + return { + url: client?.chain?.blockExplorers?.default?.url, + symbol: client?.chain?.nativeCurrency?.symbol, + }; + }, [config]); + + const { data: receipt, isLoading, error } = useTransactionReceipt({ + hash: historyRecord?.txHash, + query: { + enabled: !!historyRecord?.txHash && isOpen, + } + }); + + const allDecodedLogs = useMemo(() => { + if (!receipt?.logs) return []; + + return receipt.logs.map((log) => { + try { + const decoded = decodeEventLog({ + abi: GatekeeperAbi, + data: log.data, + topics: log.topics, + }); + + return { + eventName: decoded.eventName, + args: decoded.args, + address: log.address + }; + } catch (e) { + return null; + } + }).filter(Boolean); + }, [receipt]); + + const bridgeInInfo = useMemo(() => { + return allDecodedLogs.find(l => l.eventName === 'ThreadInserted'); + }, [allDecodedLogs]); + + // TODO: revisit, we need other block to be used here + // TODO: how to verify the fact that merkle root is correct??? + // const xxxx = useWeaverState(chainId, receipt.blockNumber, bridgeInInfo?.args); + + // TODO: functionData could be here + const localString = new Date(historyRecord.submitted).toLocaleString(); + const receiver = "sfKCC7CEfJLTgGopghSPB5EtNfLVUu34nMtiW3Taf1GuwVz3Z"; + + const rawAmount = 1000000000000000000n; + const bridgedAmount = new DecimalBigNumber( + rawAmount, + chainProperties?.properties.tokenDecimals ?? 18 + ); + + const estimatedFee = useMemo(() => { + if (!networkData) return null + return networkData.incoming_share / 10000000; + }, [networkData]); + + const estimatedReceived = useMemo(() => { + const hundredPercent = 1000000000; + const incomingShare = networkData ? networkData.incoming_share : 0; + const result = hundredPercent - incomingShare; + + const value = Number(rawAmount) * result / hundredPercent; + return new DecimalBigNumber(value, chainProperties?.properties.tokenDecimals ?? 18) + }, [networkData, chainProperties]); + + const finalization = useMemo(() => { + if (!receipt || !blockNumber || !networkData) return null; + const finalityDelay = networkData.finality_delay; + return Math.max(0, Number(finalityDelay + receipt.blockNumber - blockNumber)); + }, [receipt, blockNumber, networkData]); + + // TODO: networkId, session, + // TODO: EvmThreadProof: slotIndex global % SLOTS, proofIndex % SLOTS, receiver sf, amount raw + + // TODO: compute locally the arguments + // https://git.ghostchain.io/ghostchain/ghost-node/src/commit/cc7721e3899f9740e35f65f3feb4cdc621926166/pallets/weaver/src/types.rs#L400 + + return ( + + {bridgeInInfo && "Bridge-In"} + {!bridgeInInfo && "Parsing Transaction Hash"} + + } + onClose={() => close()} + > + + + + + + {localString}} + tooltip="some description to be added." + /> + + copyToClipboard(receiver, 0)} + > + + {bridgeInInfo ? shorten(receiver, 11, -8) : } + + + + } + /> + + {formatNumber(receipt.blockNumber)} + : + } + /> + + + + {bridgeInInfo ? shorten(historyRecord.txHash, 11, -8) : } + + + : + } + /> + + +
+ + + {formatCurrency(bridgedAmount, 5, chainProperties?.properties.tokenSymbol ?? "")}} + /> + + {formatNumber(estimatedFee, 2)}%} + /> + + {formatCurrency(estimatedReceived.toString(), 5, chainProperties?.properties.tokenSymbol ?? "")}} + /> + + + Claim Bridge-In +
+
+
+ ) +} + +const BridgeInProgress = ({ chainId, casperApi, finalization, blockNumber }) => { + const theme = useTheme(); + + const { data: weaverAuthorities } = useSWR( + casperApi ? ['weaverAuthorities', casperApi] : null, + () => casperApi.query.GhostWeaver.Authorities.getValue(), + { + revalidateOnFocus: true + } + ); + + const { data: tapestryDraft } = useSWR( + casperApi ? ['tapestryDraft', casperApi, chainId] : null, + async () => { + const key = BigInt(chainId); + const res = await casperApi.query.GhostWeaver.TapestryDrafts.getValue(key); + return res; + }, + { + refreshInterval: 12000, + revalidateOnFocus: true + } + ); + + const { data: tapestryStrand } = useSWR( + casperApi ? ['tapestryStrand', casperApi, chainId] : null, + async () => { + const key = BigInt(chainId); + const res = await casperApi.query.GhostWeaver.TapestryStrands.getValue(key); + return res; + }, + { + refreshInterval: 12000, + revalidateOnFocus: true + } + ); + + const { data: loomState } = useSWR( + casperApi ? ['loomState', casperApi, chainId] : null, + async () => { + const key = BigInt(chainId); + const res = await casperApi.query.GhostWeaver.LoomStates.getValue(key, 0n); + return res; + }, + { + refreshInterval: 12000, + revalidateOnFocus: true + } + ); + + const rootIncluded = useMemo(() => { + if (!loomState || !blockNumber) return false; + if (blockNumber >= loomState.at_block) return true; + return false; + }); + + return ( + + {finalization === null || finalization > 0 + ? + : + } + + + + ) +} + +const ProofSubmission = ({ theme, claimed, rootIncluded }) => { + return ( + + + Bridge Status + + {rootIncluded + ? claimed ? "Success" : "Claim Ready" + : "Pending..." + } + + + ) +} + +const RootVerification = ({ theme, tapestryDraft, rootIncluded, totalAuthorities, tapestryStrand }) => { + const rootVerificationText = useMemo(() => { + if (rootIncluded) return "Synced"; + if (!tapestryStrand) return "Pending..."; + + let maxOnesCount = 0; + + tapestryStrand.forEach(item => { + const dataArray = item[1]?.data || []; + const totalOnes = dataArray.reduce((sum, num) => { + const onesInNumber = num.toString(2).split('1').length - 1; + return sum + onesInNumber; + }, 0); + + if (totalOnes > maxOnesCount) { + maxOnesCount = totalOnes; + } + }); + + return `${maxOnesCount} / ${totalAuthorities}`; + }, [rootIncluded, tapestryStrand, totalAuthorities]); + + return ( + + + Root Verification + {rootVerificationText} + + ) +} + +const SyncTarget = ({ tapestryDraft, loomState, rootIncluded, blockNumber, theme }) => { + const syncTargetText = useMemo(() => { + if (rootIncluded) return "Synced"; + if (!tapestryDraft || !loomState) return "Pending..."; + if (blockNumber >= loomState.at_block) return "Synced" + + return `${formatNumber(Number(blockNumber - loomState.at_block))} block behind`; + }, [rootIncluded, tapestryDraft, loomState, blockNumber]); + + return ( + + + Sync Target + {syncTargetText} + + ) +} + +const BlockFinalization = ({ finalization, theme }) => { + return ( + 0 && "scale(1.2)", + color: finalization === 0 && theme.colors.primary[300] + }} + maxWidth="120px" + display="flex" + flexDirection="column" + justifyContent="start" + alignItems="center" + > + 0 && 'rotateHourGlass 2s ease-in-out infinite', + '@keyframes rotateHourGlass': { + '0%': { transform: 'rotate(0deg)' }, + '15%': { transform: 'rotate(0deg)' }, + '85%': { transform: 'rotate(180deg)' }, + '100%': { transform: 'rotate(180deg)' }, + }, + }} + viewBox="0 0 25 25" + component={HourglassBottomIcon} + /> + Finalization + + {(finalization ?? 0).toString()} blocks left + + + ) +} + +export default BridgeInModal; diff --git a/src/containers/History/DexViewModal.jsx b/src/containers/History/DexViewModal.jsx index 8370d5f..c8bb64d 100644 --- a/src/containers/History/DexViewModal.jsx +++ b/src/containers/History/DexViewModal.jsx @@ -127,11 +127,12 @@ const DexViewModal = ({ chainId, isOpen, close, config, historyRecord }) => { headerText={ <> {swapInfo && "DEX Swap"} + {!swapInfo && "Parsing Transaction Hash"} } onClose={() => close()} > - + {swapInfo && {tokenIn ? tokenIn.symbol : "Unknown"} Sender @@ -183,7 +184,7 @@ const DexViewModal = ({ chainId, isOpen, close, config, historyRecord }) => { > View Transaction Details - + } ) } diff --git a/src/containers/History/History.jsx b/src/containers/History/History.jsx index 701d623..98ec6e3 100644 --- a/src/containers/History/History.jsx +++ b/src/containers/History/History.jsx @@ -39,6 +39,7 @@ import EraseModal from "./EraseModal"; import SettingsModal from "./SettingsModal"; import DexViewModal from "./DexViewModal"; import StakingViewModal from "./StakingViewModal"; +import BridgeInModal from "./BridgeInModal"; const HistoryItem = ({ item, chainId, config, currentTime, eraseRecord, setViewModalOpen, isSmallScreen }) => { const theme = useTheme(); @@ -57,7 +58,7 @@ const HistoryItem = ({ item, chainId, config, currentTime, eraseRecord, setViewM const chipStatus = useMemo(() => { const delay = 3600000; // useEvmNetwork({ evmChainId: chainId }) - const width = isVerySmallScreen ? "21px" : "120px" + const width = isVerySmallScreen ? "21px" : "100px" if (item.submitted + delay > currentTime) { return @@ -94,7 +95,10 @@ const HistoryItem = ({ item, chainId, config, currentTime, eraseRecord, setViewM - {chipStatus} + + {item?.name ?? "Unknown"} + {chipStatus} + @@ -111,14 +115,16 @@ const HistoryItem = ({ item, chainId, config, currentTime, eraseRecord, setViewM - - {shorten(item.txHash, 9, -7)} - + + {item?.name ?? "Unknown"} + + {shorten(item.txHash, 7, -5)} + + @@ -146,13 +152,7 @@ const HistoryList = ({ chainId, storedTransactions, historyType, config, eraseRe const [currentTime, setCurrentTime] = useState(Date.now()); const [viewModalOpen, setViewModalOpen] = useState(null); - const { - BRIDGE_IN, - BRIDGE_OUT, - DEX_ACTION, - STAKE_ACTION, - BOND_ACTION - } = useLocalStorage(); + const { CONSTANTS } = useLocalStorage(); useEffect(() => { const intervalId = setInterval(() => { @@ -216,7 +216,7 @@ const HistoryList = ({ chainId, storedTransactions, historyType, config, eraseRe return ( <> - {viewModalOpen !== null && historyType === DEX_ACTION && ( + {viewModalOpen !== null && historyType === CONSTANTS.dex.key && ( )} - {viewModalOpen !== null && historyType === STAKE_ACTION && ( - setViewModalOpen(null)} - isOpen={true} - historyRecord={storedTransactions.at(viewModalOpen)} - /> - )} + {viewModalOpen !== null && historyType === CONSTANTS.stake.key && ( + setViewModalOpen(null)} + isOpen={true} + historyRecord={storedTransactions.at(viewModalOpen)} + /> + )} + + {viewModalOpen !== null && historyType === CONSTANTS.bridgeIn.key && ( + setViewModalOpen(null)} + isOpen={true} + historyRecord={storedTransactions.at(viewModalOpen)} + /> + )} {historyContainer} @@ -258,41 +268,35 @@ const History = ({ chainId, config, tryConnectInjected, address }) => { }, [location]); const { - POSSIBLE_HISTORY_TYPES, - getHistoryTypes, - setHistoryTypes, - getStorageValue, - setStorageValue + CONSTANTS, + useStorageValue, + setStorageValue, + clearPendingHistory } = useLocalStorage(); - const [storedHistoryTypes, setStoredHistoryTypes] = useState(() => - getHistoryTypes(chainId, address) - ) - const [storedTransactions, setStoredTransactions] = useState(() => - getStorageValue(chainId, address, storedHistoryTypes[historyTypeIndex], []) - ); + const { data: storedHistoryTypes } = useStorageValue(chainId, address, CONSTANTS.historyPrefix, CONSTANTS.defaultHistoryTypes); + const { data: storedTransactions } = useStorageValue(chainId, address, storedHistoryTypes[historyTypeIndex], []); - useEffect(() => { - setStoredTransactions(getStorageValue(chainId, address, storedHistoryTypes[historyTypeIndex], [])); - }, [chainId, address, historyTypeIndex]); + const { data: pendingHistory } = useStorageValue(chainId, address, CONSTANTS.pendingHistoryPrefix, {}); const handleHistoryTypesChange = useCallback((values) => { - setHistoryTypes(chainId, address, values); - setStoredHistoryTypes(getHistoryTypes(chainId, address)); + setStorageValue(chainId, address, CONSTANTS.historyPrefix, values); }, [chainId, address]); const handleConfirmErase = useCallback(() => { if (erasingIndex !== null) { const updated = storedTransactions.filter((_, index) => index !== erasingIndex); - setStoredTransactions(updated); setStorageValue(chainId, address, storedHistoryTypes[historyTypeIndex], updated); } else { setStorageValue(chainId, address, storedHistoryTypes[historyTypeIndex], []); - setStoredTransactions([]) } setErasingOpen(false); setErasingIndex(null); - }, [storedTransactions, erasingIndex, chainId, address, historyTypeIndex]) + }, [storedTransactions, erasingIndex, chainId, address, historyTypeIndex]); + + useEffect(() => { + clearPendingHistory(chainId, address, storedHistoryTypes.at(historyTypeIndex)); + }, [storedHistoryTypes, historyTypeIndex]) return ( @@ -320,7 +324,7 @@ const History = ({ chainId, config, tryConnectInjected, address }) => { close={() => setSettingsOpen(false)} onChange={handleHistoryTypesChange} selectedValues={storedHistoryTypes} - possibleValues={POSSIBLE_HISTORY_TYPES} + possibleValues={CONSTANTS.possibleHistoryTypes} /> @@ -347,7 +351,8 @@ const History = ({ chainId, config, tryConnectInjected, address }) => { gap="15px" > { key={i} value={type} aria-label={`history-${i}-button`} - label={type} style={{ fontSize: "1.2rem" }} + label={ + + {type} + {pendingHistory && pendingHistory[type] > 0 && ( + + )} + + } /> ) })} diff --git a/src/containers/History/StakingViewModal.jsx b/src/containers/History/StakingViewModal.jsx index 1a32f87..87d1974 100644 --- a/src/containers/History/StakingViewModal.jsx +++ b/src/containers/History/StakingViewModal.jsx @@ -101,11 +101,12 @@ const StakingViewModal = ({ chainId, isOpen, close, config, historyRecord }) => headerText={ <> {stakeInfo && "Staked"} + {!stakeInfo && "Parsing Transaction Hash"} } onClose={() => close()} > - + {stakeInfo && > View Transaction Details - + } ) } diff --git a/src/containers/Stake/components/StakeConfirmationModal.jsx b/src/containers/Stake/components/StakeConfirmationModal.jsx index dc3052f..a52c2cc 100644 --- a/src/containers/Stake/components/StakeConfirmationModal.jsx +++ b/src/containers/Stake/components/StakeConfirmationModal.jsx @@ -23,7 +23,7 @@ const StakeConfirmationModal = (props) => { const [acknowledgedWarmup, setAcknowledgedWarmup] = useState(false); const [isPending, setIsPending] = useState(false); - const { tryStoreStakeInHistory } = useLocalStorage(); + const { tryStoreInHistory, CONSTANTS } = useLocalStorage(); useEffect(() => setAcknowledgedWarmup(acknowledgedWarmup || !needsWarmup), [acknowledgedWarmup, needsWarmup]) @@ -77,6 +77,7 @@ const StakeConfirmationModal = (props) => { const actionAmount = new DecimalBigNumber(props.amount, props.spendDecimals); let isRebase = false; let txHash = null; + let txName = null; switch (props.action.toUpperCase()) { case "STAKE": @@ -91,6 +92,7 @@ const StakeConfirmationModal = (props) => { props.stnkSymbol, props.ghstSymbol ); + txName = CONSTANTS.stake.stake; break; case "UNSTAKE": isRebase = props.upperToken === props.stnkSymbol; @@ -104,6 +106,7 @@ const StakeConfirmationModal = (props) => { props.stnkSymbol, props.ghstSymbol ); + txName = CONSTANTS.stake.unstake; break; case "WRAP": txHash = await wrap( @@ -112,6 +115,7 @@ const StakeConfirmationModal = (props) => { actionAmount._value.toBigInt(), props.ghstSymbol ); + txName = CONSTANTS.stake.wrap; break; case "UNWRAP": txHash = await unwrap( @@ -120,12 +124,13 @@ const StakeConfirmationModal = (props) => { actionAmount._value.toBigInt(), props.stnkSymbol ); + txName = CONSTANTS.stake.unwrap; break; default: console.log("Wrong action to be executed!"); } - if (txHash) tryStoreStakeInHistory(props.chainId, props.address, txHash) + if (txHash && txName) tryStoreInHistory(props.chainId, props.address, CONSTANTS.stake.key, txHash, txName); setIsPending(false); props.onClose(); diff --git a/src/containers/Stake/components/StakeInputArea.jsx b/src/containers/Stake/components/StakeInputArea.jsx index e3bd19a..28be176 100644 --- a/src/containers/Stake/components/StakeInputArea.jsx +++ b/src/containers/Stake/components/StakeInputArea.jsx @@ -67,6 +67,10 @@ const StyledBox = styled(Box)(({ theme }) => ({ }, })); +const DECIMALS_PREFIX = "stake-decimals"; +const IS_CLAIM_PREFIX = "stake-isClaim"; +const IS_TRIGGER_PREFIX = "stake-isTrigger"; + export const StakeInputArea = ({ chainSymbol, upperToken, @@ -84,11 +88,11 @@ export const StakeInputArea = ({ const [bottomTokenModalOpen, setBottomTokenModalOpen] = useState(false); const [confirmationModalOpen, setConfirmationModalOpen] = useState(false); - const { getStorageValue, setStorageValue } = useLocalStorage(); + const { useStorageValue, setStorageValue } = useLocalStorage(); - const [formatDecimals, setFormatDecimals] = useState(() => getStorageValue(chainId, address, "stake-decimals", "5")); - const [isClaim, setIsClaim] = useState(() => getStorageValue(chainId, address, "stake-isClaim", true)); - const [isTrigger, setIsTrigger] = useState(() => getStorageValue(chainId, address, "stake-isTrigger", true)); + const { data: formatDecimals } = useStorageValue(chainId, address, DECIMALS_PREFIX, "5"); + const { data: isClaim } = useStorageValue(chainId, address, IS_CLAIM_PREFIX, true); + const { data: isTrigger } = useStorageValue(chainId, address, IS_TRIGGER_PREFIX, true); const [amount, setAmount] = useState(""); const [receiveAmount, setReceiveAmount] = useState(""); @@ -103,20 +107,17 @@ export const StakeInputArea = ({ const { symbol: stnkSymbol } = useTokenSymbol(chainId, "STNK"); const { symbol: ghstSymbol } = useTokenSymbol(chainId, "GHST"); - const setIsClaimInner = useCallback((value) => { - setIsClaim(value); - setStorageValue(chainId, address, "stake-isClaim", value); + const setIsClaim = useCallback((value) => { + setStorageValue(chainId, address, IS_CLAIM_PREFIX, value); }, [chainId, address]); - const setIsTriggerInner = useCallback((value) => { - setIsTrigger(value); - setStorageValue(chainId, address, "stake-isTrigger", value); + const setIsTrigger = useCallback((value) => { + setStorageValue(chainId, address, IS_TRIGGER_PREFIX, value); }, [chainId, address]); - const setFormatDecimalsInner = useCallback((value) => { + const setFormatDecimals = useCallback((value) => { if (Number(value) <= 17) { - setFormatDecimals(value); - setStorageValue(chainId, address, "stake-decimals", value); + setStorageValue(chainId, address, DECIMALS_PREFIX, value); } }, [chainId, address]); @@ -251,11 +252,11 @@ export const StakeInputArea = ({ open={settingsModalOpen} onClose={closeSettingModal} formatDecimals={formatDecimals} - onFormatDecimalsChange={event => setFormatDecimalsInner(event.currentTarget.value)} + onFormatDecimalsChange={event => setFormatDecimals(event.currentTarget.value)} isClaim={isClaim} - onIsClaimChanged={setIsClaimInner} + onIsClaimChanged={setIsClaim} isTrigger={isTrigger} - onTriggerRebaseChange={setIsTriggerInner} + onTriggerRebaseChange={setIsTrigger} /> useContext(UnstableProvider) export const UnstableProviderProvider = ({ children }) => { - const [chainId, setChainId] = useState(DEFAULT_CHAIN_ID); - const [providerIndex, setProviderIndex] = useState(0); + const [client, setClient] = useState(undefined); + const [status, setStatus] = useState("loading"); - const { data: providerDetails } = useSWR("getGhostProviders", () => - Unstable.getSubstrateConnectExtensionProviders() - ); + const [selectedExtension, setSelectedExtension] = useState(null); + const [selectedAccountIndex, setSelectedAccountIndex] = useState(0); + const [accounts, setAccounts] = useState([]); - const providerDetail = useMemo(() => providerDetails?.at(providerIndex), [providerDetails, providerIndex]); + useEffect(() => { + let isMounted = true; + let provider = null; - const { data: provider } = useSWR( - () => providerDetail ? `ghostProviderDetail.${providerDetail.info.uuid}.provider` : null, - () => providerDetail ? providerDetail.provider : null - ); + try { + const smoldot = startFromWorker(new SmWorker()); + provider = createClientOther( + getSmProvider(() => smoldot.addChain({ chainSpec })), + ) - const { data: accounts } = useSWR( - () => providerDetail ? `providerDetail.${providerDetail.info.uuid}.provider.getAccounts(${chainId})` : null, - async () => { - if (!providerDetail) return [] - const activeProvider = await providerDetail.provider; - return activeProvider.getAccounts(chainId); - }, - ) + if (isMounted) { + setClient(provider); + setStatus("connected"); + } - const account = useMemo(() => { - if (Array.isArray(accounts)) return accounts?.at(0)?.address; - if (typeof accounts === 'string') return accounts?.address; - return undefined - }, [accounts]) + } catch (error) { + console.error("Smoldot initialization failed:", error); + if (isMounted) setStatus("error"); + } - const connectionState = useMemo(async () => { - if (!providerDetail) return 'no-extension'; - if (!provider) return 'loading'; + return () => { + isMounted = false; + if (provider) provider.destroy(); + }; + }, []); - const chains = await provider.getChains(); - if (chains[chainId]) return 'connected'; + useEffect(() => { + if (status !== "connected") return; - return 'wrong-network'; - }, [providerDetail, provider, chainId]); + let isMounted = true; + (async () => { + const extensions = getInjectedExtensions(); + const targetExt = extensions.find(ext => ext === GHOST_CONNECT_EXTENSION); - const client = useMemo(() => { - if (!provider || !chainId) return undefined; + if (!targetExt) { + console.warn("Ghost Connect extension not found in window.injectedWeb3"); + return; + } - const chain = provider.getChains()[chainId]; - if (!chain) return undefined; + const ext = await connectInjectedExtension(targetExt); + if (isMounted) setSelectedExtension(ext); + })(); - return createClient(chain.connect) - }, [provider, chainId]); + return () => { isMounted = false; }; + }, [status]); - const observableClient = useMemo(() => client ? getObservableClient(client) : undefined, [client]); - const chainHead$ = useMemo(() => observableClient?.chainHead$(), [observableClient]); + useEffect(() => { + if (!selectedExtension) return; + + const unsubscribe = selectedExtension.subscribe((updatedAccounts) => { + setAccounts(updatedAccounts); + }); + + return unsubscribe; + }, [selectedExtension]); + + const account = useMemo(() => accounts?.at(selectedAccountIndex)?.address, [accounts, selectedAccountIndex]); + const casperApi = useMemo(() => client?.getTypedApi(casperMetadata), [client]); + const finalizedBlock$ = useMemo(() => client?.finalizedBlock$, [client]); const value = useMemo(() => ({ - isExtensionMissing: connectionState === "no-extension", - providerDetails, - providerDetail, - connectProviderByIndex: setProviderIndex, - chainId, - account, + status, client, - setChainId, - chainHead$ - }), [providerDetails, providerDetail, chainId, client, account, chainHead$]); + account, + accounts, + casperApi, + finalizedBlock$, + }), [accounts, status, client, finalizedBlock$]); return ( diff --git a/src/hooks/localstorage/index.jsx b/src/hooks/localstorage/index.jsx index cb6dec8..2b5114d 100644 --- a/src/hooks/localstorage/index.jsx +++ b/src/hooks/localstorage/index.jsx @@ -1,7 +1,5 @@ import { createContext, useContext, useState, useEffect } from "react"; - -const LocalStorageContext = createContext(); -export const useLocalStorage = () => useContext(LocalStorageContext); +import useSWR, { mutate } from "swr"; const BRIDGE_IN = "Bridge-In"; const BRIDGE_OUT = "Bridge-Out"; @@ -9,77 +7,109 @@ const DEX_ACTION = "DEX"; const STAKE_ACTION = "Stake"; const BOND_ACTION = "Bond"; -const POSSIBLE_HISTORY_TYPES = [BRIDGE_IN, BRIDGE_OUT, DEX_ACTION, STAKE_ACTION, BOND_ACTION]; +const DEX_ACTION_SWAP = "Swap"; +const DEX_ACTION_ADD = "Add Liquidity"; + +const STAKE_ACTION_STAKE = "Stake"; +const UNSTAKE_ACTION_STAKE = "Unstake"; +const WRAP_ACTION_STAKE = "Wrap"; +const UNWRAP_ACTION_STAKE = "Unwrap"; + +// TODO: add bond later +const POSSIBLE_HISTORY_TYPES = [BRIDGE_IN, BRIDGE_OUT, DEX_ACTION, STAKE_ACTION]; const DEFAULT_HISTORY_TYPES = [BRIDGE_IN, BRIDGE_OUT]; -const HISTORY_PREFIX = "history" +const HISTORY_PREFIX = "history"; +const PENDING_HISTORY_PREIFX = "pending"; + +const LocalStorageContext = createContext(); +export const useLocalStorage = () => useContext(LocalStorageContext); + +const CONSTANTS = { + possibleHistoryTypes: POSSIBLE_HISTORY_TYPES, + defaultHistoryTypes: DEFAULT_HISTORY_TYPES, + historyPrefix: HISTORY_PREFIX, + pendingHistoryPrefix: PENDING_HISTORY_PREIFX, + + bridgeIn: { key: BRIDGE_IN, name: BRIDGE_IN }, + bridgeOut: { key: BRIDGE_OUT, name: BRIDGE_OUT }, + dex: { key: DEX_ACTION, swap: DEX_ACTION_SWAP, add: DEX_ACTION_ADD }, + stake: { + key: STAKE_ACTION, + stake: STAKE_ACTION_STAKE, + unstake: UNSTAKE_ACTION_STAKE, + wrap: WRAP_ACTION_STAKE, + unwrap: UNWRAP_ACTION_STAKE, + }, +}; export const LocalStorageProvider = ({ children }) => { const getStorageKey = (chainId, address, target) => { return `${chainId}:${address}:${target}`; } - const getStorageValue = (chainId, address, target, defaultValue) => { - const key = getStorageKey(chainId, address, target); - const stored = localStorage.getItem(key); - return stored ? JSON.parse(stored) : defaultValue; - } + const useStorageValue = (chainId, address, target, defaultValue) => { + return useSWR( + chainId && address ? ["local", chainId, address, target] : null, + ([_, chainId, address, target]) => { + const key = getStorageKey(chainId, address, target); + const stored = localStorage.getItem(key); + return stored ? JSON.parse(stored) : defaultValue; + }, + { revalidateOnFocus: false, fallbackData: defaultValue } + ); + }; - const setStorageValue = (chainId, address, target, value) => { + const setStorageValue = async (chainId, address, target, value) => { const key = getStorageKey(chainId, address, target); localStorage.setItem(key, JSON.stringify(value)); + await mutate(["local", chainId, address, target]); } - const getHistoryTypes = (chainId, address) => { - const key = getStorageKey(chainId, address, HISTORY_PREFIX); + const clearPendingHistory = async (chainId, address, target) => { + const key = getStorageKey(chainId, address, PENDING_HISTORY_PREIFX); const stored = localStorage.getItem(key); - return stored ? JSON.parse(stored) : DEFAULT_HISTORY_TYPES; + if (!stored) return + + const pendingValues = JSON.parse(stored); + if (target in pendingValues) { + delete pendingValues[target]; + localStorage.setItem(key, JSON.stringify(pendingValues)); + await mutate(["local", chainId, address, PENDING_HISTORY_PREIFX]); + } } - const setHistoryTypes = (chainId, address, value) => { - const key = getStorageKey(chainId, address, HISTORY_PREFIX); - localStorage.setItem(key, JSON.stringify(value)); - } - - const tryStoreInHistory = (chainId, address, target, txHash) => { - const historyTypes = getHistoryTypes(chainId, address); + const tryStoreInHistory = async (chainId, address, target, txHash, name) => { + const historyKey = getStorageKey(chainId, address, HISTORY_PREFIX); + const storedHistoryTypes = localStorage.getItem(historyKey); + const historyTypes = storedHistoryTypes ? JSON.parse(storedHistoryTypes) : []; if (!historyTypes.includes(target)) return; const key = getStorageKey(chainId, address, target); const stored = localStorage.getItem(key); const values = stored ? JSON.parse(stored) : []; - const value = { txHash, submitted: Date.now() }; + const value = { name, txHash, submitted: Date.now() }; const newValues = [value, ...values]; localStorage.setItem(key, JSON.stringify(newValues)); - } - const tryStoreBondInHistory = (chainId, address, txHash) => { - tryStoreInHistory(chainId, address, BOND_ACTION, txHash); - } + const pendingKey = getStorageKey(chainId, address, PENDING_HISTORY_PREIFX); + const pendingItems = localStorage.getItem(pendingKey); + const pendingValues = pendingItems ? JSON.parse(pendingItems) : {}; - const tryStoreStakeInHistory = (chainId, address, txHash) => { - tryStoreInHistory(chainId, address, STAKE_ACTION, txHash); - } + const currentCount = pendingValues[target] || 0; + pendingValues[target] = currentCount + 1; + localStorage.setItem(pendingKey, JSON.stringify(pendingValues)); - const tryStoreDexInHistory = (chainId, address, txHash) => { - tryStoreInHistory(chainId, address, DEX_ACTION, txHash); + await mutate(["local", chainId, address, PENDING_HISTORY_PREIFX]); } return ( {children} diff --git a/src/hooks/staking/index.js b/src/hooks/staking/index.js index ecbbc2e..e5ae28b 100644 --- a/src/hooks/staking/index.js +++ b/src/hooks/staking/index.js @@ -14,9 +14,62 @@ import { abi as GatekeeperAbi } from "../../abi/GhostGatekeeper.json"; import { shorten } from "../../helpers"; import { DecimalBigNumber } from "../../helpers/DecimalBigNumber"; -import { executeOnChainTransaction } from "../helpers"; +import { executeOnChainTransaction, getTokenDecimals } from "../helpers"; import { useCirculatingSupply } from "../tokens"; +export const useWeaverState = (chainId, blockNumber, context) => { + const { session, index } = context; + const { gatekeeperAddress } = useGatekeeperAddress(chainId); + + const { data: merkleRoot } = useReadContract({ + abi: GatekeeperAbi, + address: gatekeeperAddress, + functionName: "getRoot", + args: [index, blockNumber], + scopeKey: `getRoot-${chainId}-${session}-${gatekeeperAddress}`, + chainId: chainId, + }); + + const { data: merkleProof } = useReadContract({ + abi: GatekeeperAbi, + address: gatekeeperAddress, + functionName: "getProof", + args: [index, session, blockNumber], + scopeKey: `getProof-${chainId}-${session}-${gatekeeperAddress}`, + chainId: chainId, + }); + + const { data: slotValues } = useReadContract({ + abi: GatekeeperAbi, + address: gatekeeperAddress, + functionName: "getSlotValues", + args: [index, session, blockNumber], + scopeKey: `getSlotValues-${chainId}-${session}-${gatekeeperAddress}`, + chainId: chainId, + }); + + return null +} + +export const useGatekeeperMinimum = (chainId) => { + const { gatekeeperAddress } = useGatekeeperAddress(chainId); + + const { data: minimum, error } = useReadContract({ + abi: GatekeeperAbi, + address: gatekeeperAddress, + functionName: "EXISTENTIAL_DEPOSIT", + scopeKey: `existentialDeposit-${chainId}-${gatekeeperAddress}`, + chainId: chainId, + }); + + const existentialDeposit = new DecimalBigNumber( + minimum ? minimum : 0n, + getTokenDecimals("GHST"), + ); + + return { existentialDeposit}; +} + export const useGatekeeperApy = (chainId) => { const circulatingSupply = useCirculatingSupply(chainId, "STNK"); const { gatekeeperAddress } = useGatekeeperAddress(chainId); @@ -32,11 +85,11 @@ export const useGatekeeperApy = (chainId) => { const amountIn = new DecimalBigNumber( (metadata?.amountIn ?? 0n) + (amountInHistory[chainId] ?? 0n), - 18, + getTokenDecimals("GHST"), ); const amountOut = new DecimalBigNumber( (metadata?.amountOut ?? 0n) + (amountOutHistory[chainId] ?? 0n), - 18, + getTokenDecimals("GHST"), ); const deployedAt = metadata?.deployedAt ?? 0; @@ -310,7 +363,7 @@ export const ghost = async (chainId, account, receiver, amount) => { const args = [receiver, amount]; const messages = { replacedMsg: "Bridge transaction was replaced. Wait for inclusion please.", - successMsg: `Amount successfully bridged! Check tx hash status or wait for slow clap finalization.`, + successMsg: `Amount successfully bridged! Check Transaction History to trace the progress.`, errorMsg: "Bridge transaction failed. Check logs for error detalization.", }; const txHash = await executeOnChainTransaction({ diff --git a/src/themes/darkPalette.js b/src/themes/darkPalette.js index 09df1aa..1d1fcdb 100644 --- a/src/themes/darkPalette.js +++ b/src/themes/darkPalette.js @@ -18,12 +18,12 @@ export const darkPalette = { success: "#60C45B", // idk where this is - done userFeedback: "#49A1F2", // idk where this is error: "#F06F73", // red negative % - done - warning: "#ed6c02", // idk where this is - done + warning: "#F2E370", // idk where this is - done pnlGain: "#60C45B", // green positive % - done }, bridgeProgress: { error: "#F06F73", - warning: "#ed6c02", + warning: "#F2E370", success: "#60C45B", }, validatorsColor: {