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: {