diff --git a/documentation/docs/components/cosmos-kit/index.tsx b/documentation/docs/components/cosmos-kit/index.tsx
index 0f575ec77a..c77b7e3e1d 100644
--- a/documentation/docs/components/cosmos-kit/index.tsx
+++ b/documentation/docs/components/cosmos-kit/index.tsx
@@ -11,6 +11,7 @@ import { Alert, AlertTitle } from '@mui/material';
import { Wallet } from '@cosmos-kit/core';
import { CosmosKitLedger } from './ledger';
import { CosmosKitSign } from './sign';
+import type { SignerOptions } from '@cosmos-kit/core';
const CosmosKitSetup: FC<{ children: React.ReactNode }> = ({ children }) => {
const assetsFixedUp = React.useMemo(() => {
@@ -40,14 +41,16 @@ const CosmosKitSetup: FC<{ children: React.ReactNode }> = ({ children }) => {
return chains;
}, [chains]);
+
+ // components/cosmos-kit/index.tsx
+
return (
'amino',
- }}
+ signerOptions={{ preferredSignType: () => 'amino' }}
+ throwErrors={false}
>
{children}
diff --git a/documentation/docs/components/operators/snippets/quic-bridge-deployment-script-setup.mdx b/documentation/docs/components/operators/snippets/quic-bridge-deployment-script-setup.mdx
new file mode 100644
index 0000000000..f1a11860db
--- /dev/null
+++ b/documentation/docs/components/operators/snippets/quic-bridge-deployment-script-setup.mdx
@@ -0,0 +1,101 @@
+import { Steps } from 'nextra/components';
+import { Callout } from 'nextra/components';
+import { AccordionTemplate } from 'components/accordion-template.tsx';
+
+
+**QUIC bridge is a requirement for all nodes which enable Wireguard functionality. Note that it this feature is compatible with nodes from `v1.18.0` (platform release [`v2025.17-isabirra`](https://github.com/nymtech/nym/releases/tag/nym-binaries-v2025.17-isabirra)) and newer!**
+ Callout>
+
+Nym Network uses various [transport bridges](https://github.com/nymtech/nym-bridges/blob/main/README.md) for routing the packets. Right now operators need to configure [our implementation](https://github.com/nymtech/nym-bridges/tree/main/nym-bridge) of general-purpose transport layer network protocol called [QUIC](https://en.wikipedia.org/wiki/QUIC).
+
+Operators can use [Nym Bridge Configuration Tool](https://github.com/nymtech/nym-bridges/tree/main/bridge-cfg) and compile the [Bridge Runner binary](https://github.com/nymtech/nym-bridges/tree/main/nym-bridge) themselves.
+
+**We recommend a more convenient QUIC bridge deployment using a script [`quic_bridge_deployment.sh`](https://github.com/nymtech/nym/blob/develop/scripts/nym-node-setup/quic_bridge_deployment.sh), following the steps below.**
+
+
+###### 1. Download [`quic_bridge_deployment.sh`](https://github.com/nymtech/nym/blob/develop/scripts/nym-node-setup/quic_bridge_deployment.sh) script
+- SSH to your server
+- Download the script and make executable
+```sh
+wget https://raw.githubusercontent.com/nymtech/nym/refs/heads/develop/scripts/nym-node-setup/quic_bridge_deployment.sh && \
+chmod +x quic_bridge_deployment.sh
+```
+
+
+###### 2. Run the script with `full_bridge_setup` command
+- Optional: open `tmux` in case you will need to run another commands on the VPS
+- Run the script with a command `full_bridge_setup`
+```sh
+./nym-node-setup/quic_bridge_deployment.sh full_bridge_setup
+```
+
+###### 3. Follow the interactive prompts
+- When you are asked for bridge binary URL, look here for one to match your system: [builds.ci.nymte.ch/QUIC](https://builds.ci.nymte.ch/QUIC/)
+- When you are asked to enter forward address, it's your IPv4 used for bonding the node, alongside port `:51822` (an example: `172.232.238.161:51822`)
+- To find out your IP address you can always run:
+ - IPv4: `curl -4 https://ifconfig.co/ip`
+ - IPv6: `curl -6 https://ifconfig.co/ip`
+- **For all prompts with default options, we highly recommend to stick to default (press enter)**
+
+###### 4. Restart the node service
+- When done with the deployment, please restart your node systemd service
+```sh
+service nym-node restart && journalctl -u nym-node.service -f --all
+```
+
+
+Congratulation, you deployed QUIC transport bridge! The script offers a standalone tweaks and checks, you can always run it without any argument to see all the options:
+```sh
+./quic_bridge_deployment.sh
+```
+
+
+```shell
+root@localhost:~# ./quic_bridge_deployment.sh
+iptables-persistent is already installed.
+Usage: ./quic_bridge_deployment.sh [command] [options]
+
+Nym QUIC Bridge Deployment Helper Script
+
+Bridge Installation & Configuration:
+ check_bridge_installation - Check bridge installation status
+ show_bridge_config - Display bridge configuration files
+ show_bridge_keys - Display bridge key information
+ show_bridge_info - Show comprehensive bridge information
+ verify_bridge_prerequisites - Verify all prerequisites are met
+
+Bridge Setup Commands:
+ install_bridge_binary - Download and install nym-bridge binary
+ generate_bridge_keys - Generate ED25519 bridge identity keys
+ create_client_params - Create client_bridge_params.json
+ create_bridge_config - Create bridges.toml configuration
+ create_bridge_service - Create systemd service file
+ full_bridge_setup - Interactive full bridge setup wizard
+
+Network Configuration Commands:
+ adjust_ip_forwarding - Enable IPv4 and IPv6 forwarding
+ apply_bridge_iptables_rules - Apply iptables rules for QUIC bridge (nymwg)
+ configure_dns_and_icmp - Allow ICMP ping tests and configure DNS
+ remove_duplicate_bridge_rules - Remove duplicate iptables rules for nymwg
+
+Network Inspection Commands:
+ fetch_and_display_ipv6 - Show IPv6 on default network device
+ fetch_wg_ipv6_address - Fetch IPv6 for nymwg interface
+ check_bridge_iptables - Check iptables rules for nymwg
+ check_ipv6_ipv4_forwarding - Check IPv4 and IPv6 forwarding status
+ check_ip_routing - Display IP routing tables
+
+Testing Commands:
+ perform_pings - Test IPv4 and IPv6 connectivity
+ test_bridge_connectivity - Comprehensive bridge connectivity test
+
+Service Management Commands:
+ check_bridge_service_status - Check nym-bridge and nym-node service status
+ show_bridge_logs [lines] - Show recent nym-bridge logs (default: 50 lines)
+
+Quick Start:
+ 1. Run 'verify_bridge_prerequisites' to check prerequisites
+ 2. Run 'check_bridge_installation' to verify installation
+ 3. Run 'test_bridge_connectivity' to test connectivity
+```
+
diff --git a/documentation/docs/components/outputs/api-scraping-outputs/time-now.md b/documentation/docs/components/outputs/api-scraping-outputs/time-now.md
index f520e7ffee..6ed8d8653f 100644
--- a/documentation/docs/components/outputs/api-scraping-outputs/time-now.md
+++ b/documentation/docs/components/outputs/api-scraping-outputs/time-now.md
@@ -1 +1 @@
-Sunday, October 5th 2025, 09:29:02 UTC
+Friday, October 10th 2025, 12:39:08 UTC
diff --git a/documentation/docs/components/outputs/command-outputs/node-api-check-query-help.md b/documentation/docs/components/outputs/command-outputs/node-api-check-query-help.md
index 999f3d4a6f..bfa068ddb0 100644
--- a/documentation/docs/components/outputs/command-outputs/node-api-check-query-help.md
+++ b/documentation/docs/components/outputs/command-outputs/node-api-check-query-help.md
@@ -11,7 +11,7 @@ options:
--no_routing_history Display node stats without routing history
--no_verloc_metrics Display node stats without verloc metrics
-m, --markdown Display results in markdown format
- -o, --output [OUTPUT]
+ -o [OUTPUT], --output [OUTPUT]
Save results to file (in current dir or supply with
path without filename)
```
diff --git a/documentation/docs/package.json b/documentation/docs/package.json
index 6be16afb45..8ff630dad4 100644
--- a/documentation/docs/package.json
+++ b/documentation/docs/package.json
@@ -24,11 +24,11 @@
"@cosmjs/encoding": "^0.32.2",
"@cosmjs/proto-signing": "^0.32.2",
"@cosmjs/stargate": "^0.32.2",
- "@cosmos-kit/core": "^2.8.9",
+ "@cosmos-kit/core": "^2.16.3",
"@cosmos-kit/keplr": "^2.6.9",
"@cosmos-kit/keplr-extension": "^2.7.9",
"@cosmos-kit/ledger": "^2.6.9",
- "@cosmos-kit/react": "^2.10.11",
+ "@cosmos-kit/react": "^2.22.3",
"@emotion/react": "^11.11.1",
"@emotion/styled": "^11.11.0",
"@interchain-ui/react": "^1.8.0",
@@ -54,12 +54,15 @@
"uuid": "^9.0.0"
},
"devDependencies": {
+ "@next/swc-linux-x64-gnu": "15.5.0",
"@types/node": "18.11.10",
+ "@types/react": "^18.3.26",
+ "@types/react-dom": "^18.3.7",
"copy-webpack-plugin": "^11.0.0",
"eslint": "8.46.0",
"eslint-config-next": "13.4.13",
"raw-loader": "^4.0.2",
- "typescript": "^4.9.3"
+ "typescript": "^5.9.3"
},
"private": false
}
diff --git a/documentation/docs/pages/operators/changelog.mdx b/documentation/docs/pages/operators/changelog.mdx
index 5e0ffbcbab..5795042992 100644
--- a/documentation/docs/pages/operators/changelog.mdx
+++ b/documentation/docs/pages/operators/changelog.mdx
@@ -7,6 +7,7 @@ import { AccordionTemplate } from 'components/accordion-template.tsx';
import { Steps } from 'nextra/components';
import AbuseResponse from 'components/operators/templates/dmca_response.md';
import OperatorIntroduction from 'components/operators/templates/provider_introduction.md';
+import QuicDeploymentSteps from 'components/operators/snippets/quic-bridge-deployment-script-setup.mdx';
export const TestingSteps = () => (
@@ -48,6 +49,10 @@ This page displays a full list of all the changes during our release cycle from
+## QUIC Transport Bridge Deployment
+
+
+
## `v2025.17-isabirra`
- [Release Binaries](https://github.com/nymtech/nym/releases/tag/nym-binaries-v2025.17-isabirra)
diff --git a/documentation/docs/pages/operators/nodes/nym-node/configuration.mdx b/documentation/docs/pages/operators/nodes/nym-node/configuration.mdx
index 81044db705..69afc1e41d 100644
--- a/documentation/docs/pages/operators/nodes/nym-node/configuration.mdx
+++ b/documentation/docs/pages/operators/nodes/nym-node/configuration.mdx
@@ -8,6 +8,7 @@ import ExitPolicyStatusOutput from 'components/operators/snippets/wg-exit-policy
import ExitPolicyTestOutput from 'components/operators/snippets/wg-exit-policy-test-output.mdx';
import ExitPolicyTestServer from 'components/operators/snippets/wg-exit-policy-testing-from-server.mdx';
import ExitPolicyTestOutside from 'components/operators/snippets/wg-exit-policy-testing-from-outside.mdx';
+import QuicDeploymentSteps from 'components/operators/snippets/quic-bridge-deployment-script-setup.mdx';
export const ManagerIPOutput = () => (
@@ -534,6 +535,9 @@ You can validate the application of the IP tables routes on your `nym-node` by c
Your node has successfully implemented wireguard exit policy with the same routing permissions like [Nym exit policy](https://nymtech.net/.wellknown/network-requester/exit-policy.txt) used on 5-hop (Mixnet).
+## QUIC Transport Bridge Deployment
+
+
## Running `nym-node` as a non-root
diff --git a/documentation/docs/pnpm-lock.yaml b/documentation/docs/pnpm-lock.yaml
index 81d19c0b49..3fa8337bc4 100644
--- a/documentation/docs/pnpm-lock.yaml
+++ b/documentation/docs/pnpm-lock.yaml
@@ -36,11 +36,11 @@ importers:
specifier: ^0.32.2
version: 0.32.4
'@cosmos-kit/core':
- specifier: ^2.8.9
+ specifier: ^2.16.3
version: 2.16.3
'@cosmos-kit/keplr':
specifier: ^2.6.9
- version: 2.15.3(@cosmjs/amino@0.32.4)(@cosmjs/proto-signing@0.32.4)(@walletconnect/sign-client@2.21.8(typescript@4.9.5)(zod@3.25.76))(@walletconnect/types@2.21.8)(starknet@7.6.4)(typescript@4.9.5)(zod@3.25.76)
+ version: 2.15.3(@cosmjs/amino@0.32.4)(@cosmjs/proto-signing@0.32.4)(@walletconnect/sign-client@2.21.8(typescript@5.9.3)(zod@3.25.76))(@walletconnect/types@2.21.8)(starknet@7.6.4)(typescript@5.9.3)(zod@3.25.76)
'@cosmos-kit/keplr-extension':
specifier: ^2.7.9
version: 2.15.3(@cosmjs/amino@0.32.4)(@cosmjs/proto-signing@0.32.4)(starknet@7.6.4)
@@ -48,38 +48,41 @@ importers:
specifier: ^2.6.9
version: 2.14.3(@cosmjs/amino@0.32.4)(@cosmjs/crypto@0.32.4)(@cosmjs/encoding@0.32.4)(@cosmjs/proto-signing@0.32.4)
'@cosmos-kit/react':
- specifier: ^2.10.11
- version: 2.22.3(@cosmjs/amino@0.32.4)(@cosmjs/proto-signing@0.32.4)(@interchain-ui/react@1.26.3(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ specifier: ^2.22.3
+ version: 2.22.3(@cosmjs/amino@0.32.4)(@cosmjs/proto-signing@0.32.4)(@interchain-ui/react@1.26.3(@types/react@18.3.26)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@emotion/react':
specifier: ^11.11.1
- version: 11.14.0(react@18.3.1)
+ version: 11.14.0(@types/react@18.3.26)(react@18.3.1)
'@emotion/styled':
specifier: ^11.11.0
- version: 11.14.1(@emotion/react@11.14.0(react@18.3.1))(react@18.3.1)
+ version: 11.14.1(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react@18.3.1)
'@interchain-ui/react':
specifier: ^1.8.0
- version: 1.26.3(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 1.26.3(@types/react@18.3.26)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@mui/icons-material':
specifier: ^5.14.9
- version: 5.18.0(@mui/material@5.18.0(@emotion/react@11.14.0(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
+ version: 5.18.0(@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.26)(react@18.3.1)
'@mui/lab':
specifier: ^5.0.0-alpha.145
- version: 5.0.0-alpha.177(@emotion/react@11.14.0(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(react@18.3.1))(react@18.3.1))(@mui/material@5.18.0(@emotion/react@11.14.0(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 5.0.0-alpha.177(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react@18.3.1))(@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@mui/material':
specifier: ^5.14.8
- version: 5.18.0(@emotion/react@11.14.0(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 5.18.0(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/accordion':
specifier: ^2.0.40
version: 2.2.7(@nextui-org/system@2.4.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/react':
specifier: ^2.4.8
- version: 2.6.11(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@4.1.12)
+ version: 2.6.11(@types/react@18.3.26)(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@4.1.12)
+ '@nymproject/contract-clients':
+ specifier: '>=1.2.4-rc.2 || ^1'
+ version: 1.4.1
'@nymproject/mix-fetch-full-fat':
- specifier: file:../../dist/wasm/mix-fetch
- version: '@nymproject/mix-fetch-wasm@file:../../dist/wasm/mix-fetch'
+ specifier: '>=1.2.4-rc.2 || ^1'
+ version: 1.2.3
'@nymproject/sdk-full-fat':
- specifier: file:../../dist/wasm/client
- version: '@nymproject/nym-client-wasm@file:../../dist/wasm/client'
+ specifier: '>=1.2.4-rc.2 || ^1'
+ version: 1.2.3
'@redocly/cli':
specifier: ^1.25.15
version: 1.34.5(ajv@8.17.1)
@@ -117,9 +120,18 @@ importers:
specifier: ^9.0.0
version: 9.0.1
devDependencies:
+ '@next/swc-linux-x64-gnu':
+ specifier: 15.5.0
+ version: 15.5.0
'@types/node':
specifier: 18.11.10
version: 18.11.10
+ '@types/react':
+ specifier: ^18.3.26
+ version: 18.3.26
+ '@types/react-dom':
+ specifier: ^18.3.7
+ version: 18.3.7(@types/react@18.3.26)
copy-webpack-plugin:
specifier: ^11.0.0
version: 11.0.0(webpack@5.101.3)
@@ -128,13 +140,13 @@ importers:
version: 8.46.0
eslint-config-next:
specifier: 13.4.13
- version: 13.4.13(eslint@8.46.0)(typescript@4.9.5)
+ version: 13.4.13(eslint@8.46.0)(typescript@5.9.3)
raw-loader:
specifier: ^4.0.2
version: 4.0.2(webpack@5.101.3)
typescript:
- specifier: ^4.9.3
- version: 4.9.5
+ specifier: ^5.9.3
+ version: 5.9.3
packages:
@@ -1664,11 +1676,14 @@ packages:
resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==}
engines: {node: '>=12.4.0'}
- '@nymproject/mix-fetch-wasm@file:../../dist/wasm/mix-fetch':
- resolution: {directory: ../../dist/wasm/mix-fetch, type: directory}
+ '@nymproject/contract-clients@1.4.1':
+ resolution: {integrity: sha512-HuJZ4Hv+Rl6ZZEtCHKgurNLJapM+QQRJlGkevFH2a4UdqUqF9omUkUi3AVes4679dPoSFgvA7plyVSDBdbgV6w==}
- '@nymproject/nym-client-wasm@file:../../dist/wasm/client':
- resolution: {directory: ../../dist/wasm/client, type: directory}
+ '@nymproject/mix-fetch-full-fat@1.2.3':
+ resolution: {integrity: sha512-5yAQhw33LC0cNsyV0Rj+LIa2kvJY+8jsfgOSr1aeKNfQ7dG4fngWkKnGUbPGzhUTJjqgXPTwNVeJSd6hwGim+g==}
+
+ '@nymproject/sdk-full-fat@1.2.3':
+ resolution: {integrity: sha512-lheA1Zk020o2t95FPVZfdUR0aSI52aD0aJQs074fjH16QkoNNEMotzhJGAnsnnczVg3bpddKghNpCLyDOWvg9A==}
'@opentelemetry/api-logs@0.53.0':
resolution: {integrity: sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==}
@@ -2844,13 +2859,18 @@ packages:
'@types/prop-types@15.7.15':
resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==}
+ '@types/react-dom@18.3.7':
+ resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==}
+ peerDependencies:
+ '@types/react': ^18.0.0
+
'@types/react-transition-group@4.4.12':
resolution: {integrity: sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==}
peerDependencies:
'@types/react': '*'
- '@types/react@19.1.10':
- resolution: {integrity: sha512-EhBeSYX0Y6ye8pNebpKrwFJq7BoQ8J5SO6NlvNwwHjSj6adXJViPQrKlsyPw7hLBLvckEMO1yxeGdR82YBBlDg==}
+ '@types/react@18.3.26':
+ resolution: {integrity: sha512-RFA/bURkcKzx/X9oumPG9Vp3D3JUgus/d0b67KB0t5S/raciymilkOa66olh78MUI92QLbEJevO7rvqU/kjwKA==}
'@types/stylis@4.2.5':
resolution: {integrity: sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==}
@@ -6386,9 +6406,9 @@ packages:
typeforce@1.18.0:
resolution: {integrity: sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==}
- typescript@4.9.5:
- resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
- engines: {node: '>=4.2.0'}
+ typescript@5.9.3:
+ resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
+ engines: {node: '>=14.17'}
hasBin: true
ufo@1.6.1:
@@ -7159,16 +7179,16 @@ snapshots:
- uploadthing
- utf-8-validate
- '@cosmos-kit/keplr-mobile@2.15.3(@cosmjs/amino@0.32.4)(@cosmjs/proto-signing@0.32.4)(@walletconnect/sign-client@2.21.8(typescript@4.9.5)(zod@3.25.76))(@walletconnect/types@2.21.8)(starknet@7.6.4)(typescript@4.9.5)(zod@3.25.76)':
+ '@cosmos-kit/keplr-mobile@2.15.3(@cosmjs/amino@0.32.4)(@cosmjs/proto-signing@0.32.4)(@walletconnect/sign-client@2.21.8(typescript@5.9.3)(zod@3.25.76))(@walletconnect/types@2.21.8)(starknet@7.6.4)(typescript@5.9.3)(zod@3.25.76)':
dependencies:
'@chain-registry/keplr': 1.74.313
'@cosmjs/amino': 0.32.4
'@cosmjs/proto-signing': 0.32.4
'@cosmos-kit/core': 2.16.3
'@cosmos-kit/keplr-extension': 2.15.3(@cosmjs/amino@0.32.4)(@cosmjs/proto-signing@0.32.4)(starknet@7.6.4)
- '@cosmos-kit/walletconnect': 2.13.3(@cosmjs/amino@0.32.4)(@walletconnect/types@2.21.8)(typescript@4.9.5)(zod@3.25.76)
+ '@cosmos-kit/walletconnect': 2.13.3(@cosmjs/amino@0.32.4)(@walletconnect/types@2.21.8)(typescript@5.9.3)(zod@3.25.76)
'@keplr-wallet/provider-extension': 0.12.264(starknet@7.6.4)
- '@keplr-wallet/wc-client': 0.12.264(@walletconnect/sign-client@2.21.8(typescript@4.9.5)(zod@3.25.76))(@walletconnect/types@2.21.8)(starknet@7.6.4)
+ '@keplr-wallet/wc-client': 0.12.264(@walletconnect/sign-client@2.21.8(typescript@5.9.3)(zod@3.25.76))(@walletconnect/types@2.21.8)(starknet@7.6.4)
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
@@ -7199,10 +7219,10 @@ snapshots:
- utf-8-validate
- zod
- '@cosmos-kit/keplr@2.15.3(@cosmjs/amino@0.32.4)(@cosmjs/proto-signing@0.32.4)(@walletconnect/sign-client@2.21.8(typescript@4.9.5)(zod@3.25.76))(@walletconnect/types@2.21.8)(starknet@7.6.4)(typescript@4.9.5)(zod@3.25.76)':
+ '@cosmos-kit/keplr@2.15.3(@cosmjs/amino@0.32.4)(@cosmjs/proto-signing@0.32.4)(@walletconnect/sign-client@2.21.8(typescript@5.9.3)(zod@3.25.76))(@walletconnect/types@2.21.8)(starknet@7.6.4)(typescript@5.9.3)(zod@3.25.76)':
dependencies:
'@cosmos-kit/keplr-extension': 2.15.3(@cosmjs/amino@0.32.4)(@cosmjs/proto-signing@0.32.4)(starknet@7.6.4)
- '@cosmos-kit/keplr-mobile': 2.15.3(@cosmjs/amino@0.32.4)(@cosmjs/proto-signing@0.32.4)(@walletconnect/sign-client@2.21.8(typescript@4.9.5)(zod@3.25.76))(@walletconnect/types@2.21.8)(starknet@7.6.4)(typescript@4.9.5)(zod@3.25.76)
+ '@cosmos-kit/keplr-mobile': 2.15.3(@cosmjs/amino@0.32.4)(@cosmjs/proto-signing@0.32.4)(@walletconnect/sign-client@2.21.8(typescript@5.9.3)(zod@3.25.76))(@walletconnect/types@2.21.8)(starknet@7.6.4)(typescript@5.9.3)(zod@3.25.76)
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
@@ -7270,11 +7290,13 @@ snapshots:
- uploadthing
- utf-8-validate
- '@cosmos-kit/react-lite@2.16.3(@cosmjs/amino@0.32.4)(@cosmjs/proto-signing@0.32.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@cosmos-kit/react-lite@2.16.3(@cosmjs/amino@0.32.4)(@cosmjs/proto-signing@0.32.4)(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@chain-registry/types': 0.46.15
'@cosmos-kit/core': 2.16.3
'@dao-dao/cosmiframe': 1.0.0(@cosmjs/amino@0.32.4)(@cosmjs/proto-signing@0.32.4)
+ '@types/react': 18.3.26
+ '@types/react-dom': 18.3.7(@types/react@18.3.26)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
transitivePeerDependencies:
@@ -7304,13 +7326,15 @@ snapshots:
- uploadthing
- utf-8-validate
- '@cosmos-kit/react@2.22.3(@cosmjs/amino@0.32.4)(@cosmjs/proto-signing@0.32.4)(@interchain-ui/react@1.26.3(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@cosmos-kit/react@2.22.3(@cosmjs/amino@0.32.4)(@cosmjs/proto-signing@0.32.4)(@interchain-ui/react@1.26.3(@types/react@18.3.26)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@chain-registry/types': 0.46.15
'@cosmos-kit/core': 2.16.3
- '@cosmos-kit/react-lite': 2.16.3(@cosmjs/amino@0.32.4)(@cosmjs/proto-signing@0.32.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@interchain-ui/react': 1.26.3(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@cosmos-kit/react-lite': 2.16.3(@cosmjs/amino@0.32.4)(@cosmjs/proto-signing@0.32.4)(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@interchain-ui/react': 1.26.3(@types/react@18.3.26)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-icons/all-files': 4.1.0(react@18.3.1)
+ '@types/react': 18.3.26
+ '@types/react-dom': 18.3.7(@types/react@18.3.26)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
transitivePeerDependencies:
@@ -7340,14 +7364,14 @@ snapshots:
- uploadthing
- utf-8-validate
- '@cosmos-kit/walletconnect@2.13.3(@cosmjs/amino@0.32.4)(@walletconnect/types@2.21.8)(typescript@4.9.5)(zod@3.25.76)':
+ '@cosmos-kit/walletconnect@2.13.3(@cosmjs/amino@0.32.4)(@walletconnect/types@2.21.8)(typescript@5.9.3)(zod@3.25.76)':
dependencies:
'@cosmjs/amino': 0.32.4
'@cosmjs/proto-signing': 0.32.4
'@cosmos-kit/core': 2.16.3
- '@walletconnect/sign-client': 2.21.8(typescript@4.9.5)(zod@3.25.76)
+ '@walletconnect/sign-client': 2.21.8(typescript@5.9.3)(zod@3.25.76)
'@walletconnect/types': 2.21.8
- '@walletconnect/utils': 2.21.8(typescript@4.9.5)(zod@3.25.76)
+ '@walletconnect/utils': 2.21.8(typescript@5.9.3)(zod@3.25.76)
events: 3.3.0
transitivePeerDependencies:
- '@azure/app-configuration'
@@ -7436,7 +7460,7 @@ snapshots:
'@emotion/memoize@0.9.0': {}
- '@emotion/react@11.14.0(react@18.3.1)':
+ '@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1)':
dependencies:
'@babel/runtime': 7.28.3
'@emotion/babel-plugin': 11.13.5
@@ -7447,6 +7471,8 @@ snapshots:
'@emotion/weak-memoize': 0.4.0
hoist-non-react-statics: 3.3.2
react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.26
transitivePeerDependencies:
- supports-color
@@ -7460,16 +7486,18 @@ snapshots:
'@emotion/sheet@1.4.0': {}
- '@emotion/styled@11.14.1(@emotion/react@11.14.0(react@18.3.1))(react@18.3.1)':
+ '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react@18.3.1)':
dependencies:
'@babel/runtime': 7.28.3
'@emotion/babel-plugin': 11.13.5
'@emotion/is-prop-valid': 1.3.1
- '@emotion/react': 11.14.0(react@18.3.1)
+ '@emotion/react': 11.14.0(@types/react@18.3.26)(react@18.3.1)
'@emotion/serialize': 1.3.3
'@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@18.3.1)
'@emotion/utils': 1.4.2
react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.26
transitivePeerDependencies:
- supports-color
@@ -7702,7 +7730,7 @@ snapshots:
'@img/sharp-win32-x64@0.34.3':
optional: true
- '@interchain-ui/react@1.26.3(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@interchain-ui/react@1.26.3(@types/react@18.3.26)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@floating-ui/core': 1.7.3
'@floating-ui/dom': 1.7.3
@@ -7731,7 +7759,7 @@ snapshots:
react-aria: 3.42.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react-dom: 18.3.1(react@18.3.1)
react-stately: 3.40.0(react@18.3.1)
- zustand: 4.5.7(immer@10.1.1)(react@18.3.1)
+ zustand: 4.5.7(@types/react@18.3.26)(immer@10.1.1)(react@18.3.1)
transitivePeerDependencies:
- '@types/react'
- babel-plugin-macros
@@ -7864,11 +7892,11 @@ snapshots:
big-integer: 1.6.52
utility-types: 3.11.0
- '@keplr-wallet/wc-client@0.12.264(@walletconnect/sign-client@2.21.8(typescript@4.9.5)(zod@3.25.76))(@walletconnect/types@2.21.8)(starknet@7.6.4)':
+ '@keplr-wallet/wc-client@0.12.264(@walletconnect/sign-client@2.21.8(typescript@5.9.3)(zod@3.25.76))(@walletconnect/types@2.21.8)(starknet@7.6.4)':
dependencies:
'@keplr-wallet/provider': 0.12.264(starknet@7.6.4)
'@keplr-wallet/types': 0.12.264(starknet@7.6.4)
- '@walletconnect/sign-client': 2.21.8(typescript@4.9.5)(zod@3.25.76)
+ '@walletconnect/sign-client': 2.21.8(typescript@5.9.3)(zod@3.25.76)
'@walletconnect/types': 2.21.8
buffer: 6.0.3
deepmerge: 4.3.1
@@ -7938,56 +7966,61 @@ snapshots:
'@mdx-js/react@2.3.0(react@18.3.1)':
dependencies:
'@types/mdx': 2.0.13
- '@types/react': 19.1.10
+ '@types/react': 18.3.26
react: 18.3.1
'@msgpack/msgpack@3.1.2': {}
- '@mui/base@5.0.0-beta.40-1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@mui/base@5.0.0-beta.40-1(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.28.3
'@floating-ui/react-dom': 2.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@mui/types': 7.2.24
- '@mui/utils': 5.17.1(react@18.3.1)
+ '@mui/types': 7.2.24(@types/react@18.3.26)
+ '@mui/utils': 5.17.1(@types/react@18.3.26)(react@18.3.1)
'@popperjs/core': 2.11.8
clsx: 2.1.1
prop-types: 15.8.1
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
-
- '@mui/core-downloads-tracker@5.18.0': {}
-
- '@mui/icons-material@5.18.0(@mui/material@5.18.0(@emotion/react@11.14.0(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@babel/runtime': 7.28.3
- '@mui/material': 5.18.0(@emotion/react@11.14.0(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react: 18.3.1
-
- '@mui/lab@5.0.0-alpha.177(@emotion/react@11.14.0(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(react@18.3.1))(react@18.3.1))(@mui/material@5.18.0(@emotion/react@11.14.0(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
- dependencies:
- '@babel/runtime': 7.28.3
- '@mui/base': 5.0.0-beta.40-1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@mui/material': 5.18.0(@emotion/react@11.14.0(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@mui/system': 5.18.0(@emotion/react@11.14.0(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(react@18.3.1))(react@18.3.1))(react@18.3.1)
- '@mui/types': 7.2.24
- '@mui/utils': 5.17.1(react@18.3.1)
- clsx: 2.1.1
- prop-types: 15.8.1
- react: 18.3.1
- react-dom: 18.3.1(react@18.3.1)
optionalDependencies:
- '@emotion/react': 11.14.0(react@18.3.1)
- '@emotion/styled': 11.14.1(@emotion/react@11.14.0(react@18.3.1))(react@18.3.1)
+ '@types/react': 18.3.26
- '@mui/material@5.18.0(@emotion/react@11.14.0(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@mui/core-downloads-tracker@5.18.0': {}
+
+ '@mui/icons-material@5.18.0(@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.26)(react@18.3.1)':
+ dependencies:
+ '@babel/runtime': 7.28.3
+ '@mui/material': 5.18.0(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.26
+
+ '@mui/lab@5.0.0-alpha.177(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react@18.3.1))(@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@babel/runtime': 7.28.3
+ '@mui/base': 5.0.0-beta.40-1(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@mui/material': 5.18.0(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@mui/system': 5.18.0(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react@18.3.1)
+ '@mui/types': 7.2.24(@types/react@18.3.26)
+ '@mui/utils': 5.17.1(@types/react@18.3.26)(react@18.3.1)
+ clsx: 2.1.1
+ prop-types: 15.8.1
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@emotion/react': 11.14.0(@types/react@18.3.26)(react@18.3.1)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react@18.3.1)
+ '@types/react': 18.3.26
+
+ '@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.28.3
'@mui/core-downloads-tracker': 5.18.0
- '@mui/system': 5.18.0(@emotion/react@11.14.0(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(react@18.3.1))(react@18.3.1))(react@18.3.1)
- '@mui/types': 7.2.24
- '@mui/utils': 5.17.1(react@18.3.1)
+ '@mui/system': 5.18.0(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react@18.3.1)
+ '@mui/types': 7.2.24(@types/react@18.3.26)
+ '@mui/utils': 5.17.1(@types/react@18.3.26)(react@18.3.1)
'@popperjs/core': 2.11.8
- '@types/react-transition-group': 4.4.12
+ '@types/react-transition-group': 4.4.12(@types/react@18.3.26)
clsx: 2.1.1
csstype: 3.1.3
prop-types: 15.8.1
@@ -7996,17 +8029,20 @@ snapshots:
react-is: 19.1.1
react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
optionalDependencies:
- '@emotion/react': 11.14.0(react@18.3.1)
- '@emotion/styled': 11.14.1(@emotion/react@11.14.0(react@18.3.1))(react@18.3.1)
+ '@emotion/react': 11.14.0(@types/react@18.3.26)(react@18.3.1)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react@18.3.1)
+ '@types/react': 18.3.26
- '@mui/private-theming@5.17.1(react@18.3.1)':
+ '@mui/private-theming@5.17.1(@types/react@18.3.26)(react@18.3.1)':
dependencies:
'@babel/runtime': 7.28.3
- '@mui/utils': 5.17.1(react@18.3.1)
+ '@mui/utils': 5.17.1(@types/react@18.3.26)(react@18.3.1)
prop-types: 15.8.1
react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.26
- '@mui/styled-engine@5.18.0(@emotion/react@11.14.0(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(react@18.3.1))(react@18.3.1))(react@18.3.1)':
+ '@mui/styled-engine@5.18.0(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react@18.3.1))(react@18.3.1)':
dependencies:
'@babel/runtime': 7.28.3
'@emotion/cache': 11.14.0
@@ -8015,35 +8051,40 @@ snapshots:
prop-types: 15.8.1
react: 18.3.1
optionalDependencies:
- '@emotion/react': 11.14.0(react@18.3.1)
- '@emotion/styled': 11.14.1(@emotion/react@11.14.0(react@18.3.1))(react@18.3.1)
+ '@emotion/react': 11.14.0(@types/react@18.3.26)(react@18.3.1)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react@18.3.1)
- '@mui/system@5.18.0(@emotion/react@11.14.0(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(react@18.3.1))(react@18.3.1))(react@18.3.1)':
+ '@mui/system@5.18.0(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react@18.3.1)':
dependencies:
'@babel/runtime': 7.28.3
- '@mui/private-theming': 5.17.1(react@18.3.1)
- '@mui/styled-engine': 5.18.0(@emotion/react@11.14.0(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(react@18.3.1))(react@18.3.1))(react@18.3.1)
- '@mui/types': 7.2.24
- '@mui/utils': 5.17.1(react@18.3.1)
+ '@mui/private-theming': 5.17.1(@types/react@18.3.26)(react@18.3.1)
+ '@mui/styled-engine': 5.18.0(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react@18.3.1))(react@18.3.1)
+ '@mui/types': 7.2.24(@types/react@18.3.26)
+ '@mui/utils': 5.17.1(@types/react@18.3.26)(react@18.3.1)
clsx: 2.1.1
csstype: 3.1.3
prop-types: 15.8.1
react: 18.3.1
optionalDependencies:
- '@emotion/react': 11.14.0(react@18.3.1)
- '@emotion/styled': 11.14.1(@emotion/react@11.14.0(react@18.3.1))(react@18.3.1)
+ '@emotion/react': 11.14.0(@types/react@18.3.26)(react@18.3.1)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@18.3.26)(react@18.3.1))(@types/react@18.3.26)(react@18.3.1)
+ '@types/react': 18.3.26
- '@mui/types@7.2.24': {}
+ '@mui/types@7.2.24(@types/react@18.3.26)':
+ optionalDependencies:
+ '@types/react': 18.3.26
- '@mui/utils@5.17.1(react@18.3.1)':
+ '@mui/utils@5.17.1(@types/react@18.3.26)(react@18.3.1)':
dependencies:
'@babel/runtime': 7.28.3
- '@mui/types': 7.2.24
+ '@mui/types': 7.2.24(@types/react@18.3.26)
'@types/prop-types': 15.7.15
clsx: 2.1.1
prop-types: 15.8.1
react: 18.3.1
react-is: 19.1.1
+ optionalDependencies:
+ '@types/react': 18.3.26
'@napi-rs/simple-git-android-arm-eabi@0.1.22':
optional: true
@@ -8133,8 +8174,7 @@ snapshots:
'@next/swc-linux-arm64-musl@15.5.0':
optional: true
- '@next/swc-linux-x64-gnu@15.5.0':
- optional: true
+ '@next/swc-linux-x64-gnu@15.5.0': {}
'@next/swc-linux-x64-musl@15.5.0':
optional: true
@@ -8199,12 +8239,12 @@ snapshots:
- '@nextui-org/theme'
- framer-motion
- '@nextui-org/autocomplete@2.3.9(@nextui-org/system@2.4.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@nextui-org/autocomplete@2.3.9(@nextui-org/system@2.4.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(@types/react@18.3.26)(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/aria-utils': 2.2.7(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/button': 2.2.9(@nextui-org/system@2.4.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/form': 2.1.8(@nextui-org/system@2.4.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@nextui-org/input': 2.4.8(@nextui-org/system@2.4.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/input': 2.4.8(@nextui-org/system@2.4.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/listbox': 2.3.9(@nextui-org/system@2.4.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/popover': 2.3.9(@nextui-org/system@2.4.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/react-utils': 2.1.3(react@18.3.1)
@@ -8516,7 +8556,7 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@nextui-org/input@2.4.8(@nextui-org/system@2.4.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@nextui-org/input@2.4.8(@nextui-org/system@2.4.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@nextui-org/form': 2.1.8(@nextui-org/system@2.4.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/react-utils': 2.1.3(react@18.3.1)
@@ -8534,7 +8574,7 @@ snapshots:
'@react-types/textfield': 3.10.0(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- react-textarea-autosize: 8.5.9(react@18.3.1)
+ react-textarea-autosize: 8.5.9(@types/react@18.3.26)(react@18.3.1)
transitivePeerDependencies:
- '@types/react'
@@ -8734,11 +8774,11 @@ snapshots:
'@nextui-org/shared-utils': 2.1.2
react: 18.3.1
- '@nextui-org/react@2.6.11(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@4.1.12)':
+ '@nextui-org/react@2.6.11(@types/react@18.3.26)(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwindcss@4.1.12)':
dependencies:
'@nextui-org/accordion': 2.2.7(@nextui-org/system@2.4.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/alert': 2.2.9(@nextui-org/system@2.4.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@nextui-org/autocomplete': 2.3.9(@nextui-org/system@2.4.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/autocomplete': 2.3.9(@nextui-org/system@2.4.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(@types/react@18.3.26)(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/avatar': 2.2.6(@nextui-org/system@2.4.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/badge': 2.2.5(@nextui-org/system@2.4.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/breadcrumbs': 2.2.6(@nextui-org/system@2.4.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -8756,7 +8796,7 @@ snapshots:
'@nextui-org/form': 2.1.8(@nextui-org/system@2.4.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/framer-utils': 2.1.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/image': 2.2.5(@nextui-org/system@2.4.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@nextui-org/input': 2.4.8(@nextui-org/system@2.4.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@nextui-org/input': 2.4.8(@nextui-org/system@2.4.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(@types/react@18.3.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/input-otp': 2.1.8(@nextui-org/system@2.4.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/kbd': 2.2.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@nextui-org/link': 2.2.7(@nextui-org/system@2.4.6(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(framer-motion@12.23.12(@emotion/is-prop-valid@1.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@nextui-org/theme@2.4.5(tailwindcss@4.1.12))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -9205,9 +9245,11 @@ snapshots:
'@nolyfill/is-core-module@1.0.39': {}
- '@nymproject/mix-fetch-wasm@file:../../dist/wasm/mix-fetch': {}
+ '@nymproject/contract-clients@1.4.1': {}
- '@nymproject/nym-client-wasm@file:../../dist/wasm/client': {}
+ '@nymproject/mix-fetch-full-fat@1.2.3': {}
+
+ '@nymproject/sdk-full-fat@1.2.3': {}
'@opentelemetry/api-logs@0.53.0':
dependencies:
@@ -11169,10 +11211,17 @@ snapshots:
'@types/prop-types@15.7.15': {}
- '@types/react-transition-group@4.4.12': {}
-
- '@types/react@19.1.10':
+ '@types/react-dom@18.3.7(@types/react@18.3.26)':
dependencies:
+ '@types/react': 18.3.26
+
+ '@types/react-transition-group@4.4.12(@types/react@18.3.26)':
+ dependencies:
+ '@types/react': 18.3.26
+
+ '@types/react@18.3.26':
+ dependencies:
+ '@types/prop-types': 15.7.15
csstype: 3.1.3
'@types/stylis@4.2.5': {}
@@ -11184,16 +11233,16 @@ snapshots:
'@types/unist@3.0.3': {}
- '@typescript-eslint/parser@6.21.0(eslint@8.46.0)(typescript@4.9.5)':
+ '@typescript-eslint/parser@6.21.0(eslint@8.46.0)(typescript@5.9.3)':
dependencies:
'@typescript-eslint/scope-manager': 6.21.0
'@typescript-eslint/types': 6.21.0
- '@typescript-eslint/typescript-estree': 6.21.0(typescript@4.9.5)
+ '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 6.21.0
debug: 4.4.1
eslint: 8.46.0
optionalDependencies:
- typescript: 4.9.5
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
@@ -11204,7 +11253,7 @@ snapshots:
'@typescript-eslint/types@6.21.0': {}
- '@typescript-eslint/typescript-estree@6.21.0(typescript@4.9.5)':
+ '@typescript-eslint/typescript-estree@6.21.0(typescript@5.9.3)':
dependencies:
'@typescript-eslint/types': 6.21.0
'@typescript-eslint/visitor-keys': 6.21.0
@@ -11213,9 +11262,9 @@ snapshots:
is-glob: 4.0.3
minimatch: 9.0.3
semver: 7.7.2
- ts-api-utils: 1.4.3(typescript@4.9.5)
+ ts-api-utils: 1.4.3(typescript@5.9.3)
optionalDependencies:
- typescript: 4.9.5
+ typescript: 5.9.3
transitivePeerDependencies:
- supports-color
@@ -11314,7 +11363,7 @@ snapshots:
dependencies:
'@vanilla-extract/css': 1.17.4(babel-plugin-macros@3.1.0)
- '@walletconnect/core@2.21.8(typescript@4.9.5)(zod@3.25.76)':
+ '@walletconnect/core@2.21.8(typescript@5.9.3)(zod@3.25.76)':
dependencies:
'@walletconnect/heartbeat': 1.2.2
'@walletconnect/jsonrpc-provider': 1.0.14
@@ -11328,7 +11377,7 @@ snapshots:
'@walletconnect/safe-json': 1.0.2
'@walletconnect/time': 1.0.2
'@walletconnect/types': 2.21.8
- '@walletconnect/utils': 2.21.8(typescript@4.9.5)(zod@3.25.76)
+ '@walletconnect/utils': 2.21.8(typescript@5.9.3)(zod@3.25.76)
'@walletconnect/window-getters': 1.0.1
es-toolkit: 1.39.3
events: 3.3.0
@@ -11455,16 +11504,16 @@ snapshots:
dependencies:
tslib: 1.14.1
- '@walletconnect/sign-client@2.21.8(typescript@4.9.5)(zod@3.25.76)':
+ '@walletconnect/sign-client@2.21.8(typescript@5.9.3)(zod@3.25.76)':
dependencies:
- '@walletconnect/core': 2.21.8(typescript@4.9.5)(zod@3.25.76)
+ '@walletconnect/core': 2.21.8(typescript@5.9.3)(zod@3.25.76)
'@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.8
- '@walletconnect/utils': 2.21.8(typescript@4.9.5)(zod@3.25.76)
+ '@walletconnect/utils': 2.21.8(typescript@5.9.3)(zod@3.25.76)
events: 3.3.0
transitivePeerDependencies:
- '@azure/app-configuration'
@@ -11550,7 +11599,7 @@ snapshots:
- ioredis
- uploadthing
- '@walletconnect/utils@2.21.8(typescript@4.9.5)(zod@3.25.76)':
+ '@walletconnect/utils@2.21.8(typescript@5.9.3)(zod@3.25.76)':
dependencies:
'@msgpack/msgpack': 3.1.2
'@noble/ciphers': 1.3.0
@@ -11571,7 +11620,7 @@ snapshots:
detect-browser: 5.3.0
query-string: 7.1.3
uint8arrays: 3.1.1
- viem: 2.31.0(typescript@4.9.5)(zod@3.25.76)
+ viem: 2.31.0(typescript@5.9.3)(zod@3.25.76)
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
@@ -11692,9 +11741,9 @@ snapshots:
fs-extra: 10.1.0
yargs: 17.7.2
- abitype@1.0.8(typescript@4.9.5)(zod@3.25.76):
+ abitype@1.0.8(typescript@5.9.3)(zod@3.25.76):
optionalDependencies:
- typescript: 4.9.5
+ typescript: 5.9.3
zod: 3.25.76
abort-controller@3.0.0:
@@ -12710,20 +12759,20 @@ snapshots:
escape-string-regexp@5.0.0: {}
- eslint-config-next@13.4.13(eslint@8.46.0)(typescript@4.9.5):
+ eslint-config-next@13.4.13(eslint@8.46.0)(typescript@5.9.3):
dependencies:
'@next/eslint-plugin-next': 13.4.13
'@rushstack/eslint-patch': 1.12.0
- '@typescript-eslint/parser': 6.21.0(eslint@8.46.0)(typescript@4.9.5)
+ '@typescript-eslint/parser': 6.21.0(eslint@8.46.0)(typescript@5.9.3)
eslint: 8.46.0
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(eslint@8.46.0))(eslint@8.46.0)
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.46.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@8.46.0)
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.46.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(eslint@8.46.0))(eslint@8.46.0))(eslint@8.46.0)
eslint-plugin-jsx-a11y: 6.10.2(eslint@8.46.0)
eslint-plugin-react: 7.37.5(eslint@8.46.0)
eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.46.0)
optionalDependencies:
- typescript: 4.9.5
+ typescript: 5.9.3
transitivePeerDependencies:
- eslint-import-resolver-webpack
- eslint-plugin-import-x
@@ -12748,22 +12797,22 @@ snapshots:
tinyglobby: 0.2.14
unrs-resolver: 1.11.1
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.46.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@8.46.0)
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.46.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(eslint@8.46.0))(eslint@8.46.0))(eslint@8.46.0)
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.46.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(eslint@8.46.0))(eslint@8.46.0))(eslint@8.46.0):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.46.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(eslint@8.46.0))(eslint@8.46.0))(eslint@8.46.0):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 6.21.0(eslint@8.46.0)(typescript@4.9.5)
+ '@typescript-eslint/parser': 6.21.0(eslint@8.46.0)(typescript@5.9.3)
eslint: 8.46.0
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(eslint@8.46.0))(eslint@8.46.0)
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.46.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@8.46.0):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.46.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(eslint@8.46.0))(eslint@8.46.0))(eslint@8.46.0):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -12774,7 +12823,7 @@ snapshots:
doctrine: 2.1.0
eslint: 8.46.0
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.46.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(eslint@8.46.0))(eslint@8.46.0))(eslint@8.46.0)
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.46.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(eslint@8.46.0))(eslint@8.46.0))(eslint@8.46.0)
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -12786,7 +12835,7 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 6.21.0(eslint@8.46.0)(typescript@4.9.5)
+ '@typescript-eslint/parser': 6.21.0(eslint@8.46.0)(typescript@5.9.3)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
@@ -14655,7 +14704,7 @@ snapshots:
object-keys: 1.1.1
safe-push-apply: 1.0.0
- ox@0.7.1(typescript@4.9.5)(zod@3.25.76):
+ ox@0.7.1(typescript@5.9.3)(zod@3.25.76):
dependencies:
'@adraffy/ens-normalize': 1.11.0
'@noble/ciphers': 1.3.0
@@ -14663,10 +14712,10 @@ snapshots:
'@noble/hashes': 1.8.0
'@scure/bip32': 1.7.0
'@scure/bip39': 1.6.0
- abitype: 1.0.8(typescript@4.9.5)(zod@3.25.76)
+ abitype: 1.0.8(typescript@5.9.3)(zod@3.25.76)
eventemitter3: 5.0.1
optionalDependencies:
- typescript: 4.9.5
+ typescript: 5.9.3
transitivePeerDependencies:
- zod
@@ -14978,12 +15027,12 @@ snapshots:
prop-types: 15.8.1
react: 18.3.1
- react-textarea-autosize@8.5.9(react@18.3.1):
+ react-textarea-autosize@8.5.9(@types/react@18.3.26)(react@18.3.1):
dependencies:
'@babel/runtime': 7.28.3
react: 18.3.1
- use-composed-ref: 1.4.0(react@18.3.1)
- use-latest: 1.3.0(react@18.3.1)
+ use-composed-ref: 1.4.0(@types/react@18.3.26)(react@18.3.1)
+ use-latest: 1.3.0(@types/react@18.3.26)(react@18.3.1)
transitivePeerDependencies:
- '@types/react'
@@ -15710,9 +15759,9 @@ snapshots:
trough@2.2.0: {}
- ts-api-utils@1.4.3(typescript@4.9.5):
+ ts-api-utils@1.4.3(typescript@5.9.3):
dependencies:
- typescript: 4.9.5
+ typescript: 5.9.3
ts-dedent@2.2.0: {}
@@ -15776,7 +15825,7 @@ snapshots:
typeforce@1.18.0: {}
- typescript@4.9.5: {}
+ typescript@5.9.3: {}
ufo@1.6.1: {}
@@ -15945,18 +15994,24 @@ snapshots:
url-template@2.0.8: {}
- use-composed-ref@1.4.0(react@18.3.1):
+ use-composed-ref@1.4.0(@types/react@18.3.26)(react@18.3.1):
dependencies:
react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.26
- use-isomorphic-layout-effect@1.2.1(react@18.3.1):
+ use-isomorphic-layout-effect@1.2.1(@types/react@18.3.26)(react@18.3.1):
dependencies:
react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.26
- use-latest@1.3.0(react@18.3.1):
+ use-latest@1.3.0(@types/react@18.3.26)(react@18.3.1):
dependencies:
react: 18.3.1
- use-isomorphic-layout-effect: 1.2.1(react@18.3.1)
+ use-isomorphic-layout-effect: 1.2.1(@types/react@18.3.26)(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.26
use-sync-external-store@1.5.0(react@18.3.1):
dependencies:
@@ -16010,18 +16065,18 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.3
- viem@2.31.0(typescript@4.9.5)(zod@3.25.76):
+ viem@2.31.0(typescript@5.9.3)(zod@3.25.76):
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(typescript@4.9.5)(zod@3.25.76)
+ abitype: 1.0.8(typescript@5.9.3)(zod@3.25.76)
isows: 1.0.7(ws@8.18.2)
- ox: 0.7.1(typescript@4.9.5)(zod@3.25.76)
+ ox: 0.7.1(typescript@5.9.3)(zod@3.25.76)
ws: 8.18.2
optionalDependencies:
- typescript: 4.9.5
+ typescript: 5.9.3
transitivePeerDependencies:
- bufferutil
- utf-8-validate
@@ -16195,10 +16250,11 @@ snapshots:
zod@3.25.76: {}
- zustand@4.5.7(immer@10.1.1)(react@18.3.1):
+ zustand@4.5.7(@types/react@18.3.26)(immer@10.1.1)(react@18.3.1):
dependencies:
use-sync-external-store: 1.5.0(react@18.3.1)
optionalDependencies:
+ '@types/react': 18.3.26
immer: 10.1.1
react: 18.3.1
diff --git a/scripts/nym-node-setup/quic_bridge_deployment.sh b/scripts/nym-node-setup/quic_bridge_deployment.sh
new file mode 100644
index 0000000000..9e762ae842
--- /dev/null
+++ b/scripts/nym-node-setup/quic_bridge_deployment.sh
@@ -0,0 +1,941 @@
+ #!/bin/bash
+# Nym QUIC Bridge Deployment Helper Script
+# This script provides network configuration and troubleshooting tools for Nym QUIC bridges
+
+network_device=$(ip route show default | awk '/default/ {print $5}')
+wg_tunnel_interface="nymwg"
+
+BRIDGE_CONFIG_DIR="/opt/nym-bridge"
+BRIDGE_KEYS_DIR="$BRIDGE_CONFIG_DIR/keys"
+BRIDGE_CONFIG="$BRIDGE_CONFIG_DIR/bridges.toml"
+CLIENT_PARAMS="$BRIDGE_CONFIG_DIR/client_bridge_params.json"
+BRIDGE_BINARY="/usr/local/bin/nym-bridge"
+
+
+if ! dpkg -s iptables-persistent >/dev/null 2>&1; then
+ echo "Installing iptables-persistent..."
+ sudo apt-get update
+ sudo apt-get install -y iptables-persistent
+else
+ echo "iptables-persistent is already installed."
+fi
+
+fetch_and_display_ipv6() {
+ ipv6_address=$(ip -6 addr show "$network_device" scope global | grep inet6 | awk '{print $2}')
+ if [[ -z "$ipv6_address" ]]; then
+ echo "No global IPv6 address found on $network_device."
+ else
+ echo "IPv6 address on $network_device: $ipv6_address"
+ fi
+}
+
+fetch_wg_ipv6_address() {
+ ipv6_global_address=$(ip -6 addr show "$wg_tunnel_interface" scope global | grep inet6 | awk '{print $2}' | head -n 1)
+
+ if [[ -z "$ipv6_global_address" ]]; then
+ echo "No globally routable IPv6 address found on $wg_tunnel_interface. Please configure IPv6 or check your network settings."
+ exit 1
+ else
+ echo "Using IPv6 address: $ipv6_global_address"
+ fi
+}
+
+adjust_ip_forwarding() {
+ ipv6_forwarding_setting="net.ipv6.conf.all.forwarding=1"
+ ipv4_forwarding_setting="net.ipv4.ip_forward=1"
+
+ # Remove duplicate entries for these settings from the file
+ sudo sed -i "/^net.ipv6.conf.all.forwarding=/d" /etc/sysctl.conf
+ sudo sed -i "/^net.ipv4.ip_forward=/d" /etc/sysctl.conf
+
+ echo "$ipv6_forwarding_setting" | sudo tee -a /etc/sysctl.conf
+ echo "$ipv4_forwarding_setting" | sudo tee -a /etc/sysctl.conf
+
+ sudo sysctl -p /etc/sysctl.conf
+
+ echo "IP forwarding enabled for IPv4 and IPv6."
+}
+
+apply_bridge_iptables_rules() {
+ echo "Applying iptables rules for QUIC bridge ($wg_tunnel_interface)..."
+ sleep 1
+
+ # INPUT rules - allow incoming connections TO the bridge from WireGuard clients
+ # CRITICAL: This allows mobile clients to reach the bandwidth controller at 10.1.0.1:51830
+ sudo iptables -I INPUT -i "$wg_tunnel_interface" -j ACCEPT
+ sudo ip6tables -I INPUT -i "$wg_tunnel_interface" -j ACCEPT
+
+ # NAT rules - for outbound traffic masquerading
+ sudo iptables -t nat -A POSTROUTING -o "$network_device" -j MASQUERADE
+ sudo ip6tables -t nat -A POSTROUTING -o "$network_device" -j MASQUERADE
+
+ # FORWARD rules - allow traffic through the bridge
+ sudo iptables -A FORWARD -i "$wg_tunnel_interface" -o "$network_device" -j ACCEPT
+ sudo iptables -A FORWARD -i "$network_device" -o "$wg_tunnel_interface" -m state --state RELATED,ESTABLISHED -j ACCEPT
+ sudo ip6tables -A FORWARD -i "$wg_tunnel_interface" -o "$network_device" -j ACCEPT
+ sudo ip6tables -A FORWARD -i "$network_device" -o "$wg_tunnel_interface" -m state --state RELATED,ESTABLISHED -j ACCEPT
+
+ # Save rules
+ sudo iptables-save | sudo tee /etc/iptables/rules.v4
+ sudo ip6tables-save | sudo tee /etc/iptables/rules.v6
+
+ echo "Iptables rules applied successfully for QUIC bridge (including INPUT rules for bandwidth controller)."
+}
+
+check_bridge_iptables() {
+ echo "Inspecting iptables rules for QUIC bridge ($wg_tunnel_interface)..."
+ echo "---------------------------------------"
+ echo "IPv4 INPUT rules (for bandwidth controller):"
+ iptables -L INPUT -v -n | grep -E "$wg_tunnel_interface|Chain INPUT" | head -20
+ echo "---------------------------------------"
+ echo "IPv4 FORWARD rules:"
+ iptables -L FORWARD -v -n | awk -v dev="$wg_tunnel_interface" '/^Chain FORWARD/ || $0 ~ dev || $0 ~ "ufw-reject-forward"'
+ echo "---------------------------------------"
+ echo "IPv6 INPUT rules (for bandwidth controller):"
+ ip6tables -L INPUT -v -n | grep -E "$wg_tunnel_interface|Chain INPUT" | head -20
+ echo "---------------------------------------"
+ echo "IPv6 FORWARD rules:"
+ ip6tables -L FORWARD -v -n | awk -v dev="$wg_tunnel_interface" '/^Chain FORWARD/ || $0 ~ dev || $0 ~ "ufw6-reject-forward"'
+}
+
+remove_duplicate_bridge_rules() {
+ local script_name=$(basename "$0")
+
+ echo "Removing duplicate iptables rules for $wg_tunnel_interface..."
+
+ iptables-save | grep "$wg_tunnel_interface" | while read -r line; do
+ sudo iptables -D ${line#-A } 2>/dev/null || echo "Failed to delete rule: $line"
+ done
+
+ ip6tables-save | grep "$wg_tunnel_interface" | while read -r line; do
+ sudo ip6tables -D ${line#-A } 2>/dev/null || echo "Failed to delete rule: $line"
+ done
+
+ echo "Duplicates removed for $wg_tunnel_interface."
+ echo "!!IMPORTANT!! You need to now reapply the iptables rules."
+ echo "Run: ./$script_name apply_bridge_iptables_rules"
+}
+
+configure_dns_and_icmp() {
+ echo "Allowing ICMP (ping)..."
+ sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
+ sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
+ sudo ip6tables -A INPUT -p ipv6-icmp -j ACCEPT
+ sudo ip6tables -A OUTPUT -p ipv6-icmp -j ACCEPT
+
+ echo "Allowing DNS over UDP (port 53)..."
+ sudo iptables -A INPUT -p udp --dport 53 -j ACCEPT
+ sudo ip6tables -A INPUT -p udp --dport 53 -j ACCEPT
+
+ echo "Allowing DNS over TCP (port 53)..."
+ sudo iptables -A INPUT -p tcp --dport 53 -j ACCEPT
+ sudo ip6tables -A INPUT -p tcp --dport 53 -j ACCEPT
+
+ echo "Saving iptables rules..."
+ sudo iptables-save | sudo tee /etc/iptables/rules.v4
+ sudo ip6tables-save | sudo tee /etc/iptables/rules.v6
+
+ echo "DNS and ICMP configuration completed."
+}
+
+check_ipv6_ipv4_forwarding() {
+ result_ipv4=$(cat /proc/sys/net/ipv4/ip_forward)
+ result_ipv6=$(cat /proc/sys/net/ipv6/conf/all/forwarding)
+ echo "IPv4 forwarding is $([ "$result_ipv4" == "1" ] && echo "enabled" || echo "not enabled")."
+ echo "IPv6 forwarding is $([ "$result_ipv6" == "1" ] && echo "enabled" || echo "not enabled")."
+}
+
+check_ip_routing() {
+ echo "IPv4 routing table:"
+ ip route
+ echo "---------------------------------------"
+ echo "IPv6 routing table:"
+ ip -6 route
+}
+
+perform_pings() {
+ echo "Performing IPv4 ping to google.com..."
+ ping -c 4 google.com
+ echo "---------------------------------------"
+ echo "Performing IPv6 ping to google.com..."
+ ping6 -c 4 google.com
+}
+
+test_bridge_connectivity() {
+ local green="\033[0;32m"
+ local reset="\033[0m"
+ local red="\033[0;31m"
+ local yellow="\033[0;33m"
+
+ sleep 1
+ echo
+ echo -e "${yellow}Testing QUIC bridge connectivity on $wg_tunnel_interface...${reset}"
+ echo -e "${yellow}If these tests succeed, it confirms the bridge can reach the outside world via IPv4 and IPv6.${reset}"
+ echo -e "${yellow}However, external clients may experience different connectivity to your bridge.${reset}"
+
+ ipv4_address=$(ip addr show "$wg_tunnel_interface" | awk '/inet / {print $2}' | cut -d'/' -f1)
+ ipv6_address=$(ip addr show "$wg_tunnel_interface" | awk '/inet6 / && $2 !~ /^fe80/ {print $2}' | cut -d'/' -f1)
+
+ if [[ -z "$ipv4_address" && -z "$ipv6_address" ]]; then
+ echo -e "${red}No IP address found on $wg_tunnel_interface. Unable to test connectivity.${reset}"
+ echo -e "${red}Please verify your bridge configuration and ensure the interface is up.${reset}"
+ return 1
+ fi
+
+ if [[ -n "$ipv4_address" ]]; then
+ echo
+ echo -e "------------------------------------"
+ echo -e "Detected IPv4 address: $ipv4_address"
+ echo -e "Testing IPv4 connectivity..."
+ echo
+
+ if ping -c 1 -I "$ipv4_address" google.com >/dev/null 2>&1; then
+ echo -e "${green}IPv4 connectivity is working. Fetching test data...${reset}"
+ joke=$(curl -s -H "Accept: application/json" --interface "$ipv4_address" https://icanhazdadjoke.com/ | jq -r .joke)
+ [[ -n "$joke" && "$joke" != "null" ]] && echo -e "${green}IPv4 test joke: $joke${reset}" || echo -e "${red}Failed to fetch test data via IPv4.${reset}"
+ else
+ echo -e "${red}IPv4 connectivity is not working for $wg_tunnel_interface. Verify your routing and NAT settings.${reset}"
+ fi
+ else
+ echo -e "${yellow}No IPv4 address found on $wg_tunnel_interface. Skipping IPv4 test.${reset}"
+ fi
+
+ if [[ -n "$ipv6_address" ]]; then
+ echo
+ echo -e "------------------------------------"
+ echo -e "Detected IPv6 address: $ipv6_address"
+ echo -e "Testing IPv6 connectivity..."
+ echo
+
+ if ping6 -c 1 -I "$ipv6_address" google.com >/dev/null 2>&1; then
+ echo -e "${green}IPv6 connectivity is working. Fetching test data...${reset}"
+ joke=$(curl -s -H "Accept: application/json" --interface "$ipv6_address" https://icanhazdadjoke.com/ | jq -r .joke)
+ [[ -n "$joke" && "$joke" != "null" ]] && echo -e "${green}IPv6 test joke: $joke${reset}" || echo -e "${red}Failed to fetch test data via IPv6.${reset}"
+ else
+ echo -e "${red}IPv6 connectivity is not working for $wg_tunnel_interface. Verify your routing and NAT settings.${reset}"
+ fi
+ else
+ echo -e "${yellow}No IPv6 address found on $wg_tunnel_interface. Skipping IPv6 test.${reset}"
+ fi
+
+ echo -e "${green}Connectivity testing completed for $wg_tunnel_interface.${reset}"
+ echo -e "------------------------------------"
+
+ sleep 2
+ echo
+ echo
+ echo -e "${yellow}### Bridge Connectivity Testing Recommendations ###${reset}"
+ echo -e "${yellow}- Test UDP connectivity on port 51822 (used for Nym QUIC/WireGuard)${reset}"
+ echo -e "${yellow} From another machine: echo 'test message' | nc -u 51822${reset}"
+ echo -e "${yellow}- Test bandwidth controller access on port 51830:${reset}"
+ echo -e "${yellow} From inside the WireGuard tunnel: curl http://10.1.0.1:51830${reset}"
+ echo -e "${yellow}- If connectivity issues persist, check port forwarding and firewall rules${reset}"
+ echo
+}
+
+check_bridge_service_status() {
+ echo "Checking nym-bridge service status..."
+ systemctl status nym-bridge.service --no-pager
+ echo "---------------------------------------"
+ echo "Checking nym-node service status..."
+ systemctl status nym-node.service --no-pager
+}
+
+show_bridge_logs() {
+ local lines=${1:-50}
+ echo "Showing last $lines lines of nym-bridge logs..."
+ journalctl -u nym-bridge.service -n "$lines" --no-pager
+}
+
+check_bridge_installation() {
+ local green="\033[0;32m"
+ local reset="\033[0m"
+ local red="\033[0;31m"
+ local yellow="\033[0;33m"
+
+ echo -e "${yellow}=== Nym QUIC Bridge Installation Status ===${reset}"
+ echo ""
+
+ # Check binary
+ if [[ -f "$BRIDGE_BINARY" ]]; then
+ echo -e "${green}✓ Bridge binary found: $BRIDGE_BINARY${reset}"
+ bridge_version=$($BRIDGE_BINARY --version 2>/dev/null | head -1 || echo "Unable to determine version")
+ echo " Version: $bridge_version"
+ else
+ echo -e "${red}✗ Bridge binary not found at $BRIDGE_BINARY${reset}"
+ fi
+ echo ""
+
+ # Check configuration directory
+ if [[ -d "$BRIDGE_CONFIG_DIR" ]]; then
+ echo -e "${green}✓ Configuration directory exists: $BRIDGE_CONFIG_DIR${reset}"
+ else
+ echo -e "${red}✗ Configuration directory not found: $BRIDGE_CONFIG_DIR${reset}"
+ fi
+ echo ""
+
+ # Check keys directory
+ if [[ -d "$BRIDGE_KEYS_DIR" ]]; then
+ echo -e "${green}✓ Keys directory exists: $BRIDGE_KEYS_DIR${reset}"
+ key_count=$(ls -1 "$BRIDGE_KEYS_DIR"/*.pem 2>/dev/null | wc -l)
+ echo " Keys found: $key_count"
+ else
+ echo -e "${red}✗ Keys directory not found: $BRIDGE_KEYS_DIR${reset}"
+ fi
+ echo ""
+
+ # Check configuration files
+ if [[ -f "$BRIDGE_CONFIG" ]]; then
+ echo -e "${green}✓ Bridge config found: $BRIDGE_CONFIG${reset}"
+ else
+ echo -e "${red}✗ Bridge config not found: $BRIDGE_CONFIG${reset}"
+ fi
+
+ if [[ -f "$CLIENT_PARAMS" ]]; then
+ echo -e "${green}✓ Client params found: $CLIENT_PARAMS${reset}"
+ else
+ echo -e "${red}✗ Client params not found: $CLIENT_PARAMS${reset}"
+ fi
+ echo ""
+
+ # Check services
+ echo -e "${yellow}Service Status:${reset}"
+ if systemctl is-active --quiet nym-bridge.service; then
+ echo -e "${green}✓ nym-bridge service is running${reset}"
+ else
+ echo -e "${red}✗ nym-bridge service is not running${reset}"
+ fi
+
+ if systemctl is-active --quiet nym-node.service; then
+ echo -e "${green}✓ nym-node service is running${reset}"
+ else
+ echo -e "${red}✗ nym-node service is not running${reset}"
+ fi
+ echo ""
+}
+
+show_bridge_config() {
+ echo "=== Bridge Configuration ==="
+ echo ""
+
+ if [[ -f "$BRIDGE_CONFIG" ]]; then
+ echo "Bridge config ($BRIDGE_CONFIG):"
+ echo "---------------------------------------"
+ cat "$BRIDGE_CONFIG"
+ echo ""
+ else
+ echo "Bridge config not found at $BRIDGE_CONFIG"
+ fi
+
+ if [[ -f "$CLIENT_PARAMS" ]]; then
+ echo "Client parameters ($CLIENT_PARAMS):"
+ echo "---------------------------------------"
+ cat "$CLIENT_PARAMS"
+ echo ""
+ else
+ echo "Client parameters not found at $CLIENT_PARAMS"
+ fi
+}
+
+show_bridge_keys() {
+ local green="\033[0;32m"
+ local reset="\033[0m"
+ local red="\033[0;31m"
+ local yellow="\033[0;33m"
+
+ echo -e "${yellow}=== Bridge Keys Information ===${reset}"
+ echo ""
+
+ if [[ ! -d "$BRIDGE_KEYS_DIR" ]]; then
+ echo -e "${red}Keys directory not found: $BRIDGE_KEYS_DIR${reset}"
+ return 1
+ fi
+
+ echo "Keys directory: $BRIDGE_KEYS_DIR"
+ echo "---------------------------------------"
+
+ # List all key files
+ if ls -1 "$BRIDGE_KEYS_DIR"/*.pem >/dev/null 2>&1; then
+ for key_file in "$BRIDGE_KEYS_DIR"/*.pem; do
+ key_name=$(basename "$key_file")
+ echo -e "${green}Key file: $key_name${reset}"
+
+ # If it's a public key, show the content
+ if [[ "$key_name" == *"_bridge_identity.pem" ]]; then
+ echo " Type: ED25519 Bridge Identity (Private)"
+ echo " Path: $key_file"
+
+ # Extract and show public key
+ if command -v openssl >/dev/null 2>&1; then
+ echo -e "${yellow} Public key (base64):${reset}"
+ openssl pkey -in "$key_file" -pubout 2>/dev/null | grep -v "\---" | base64 -d | tail -c 32 | base64
+ fi
+ fi
+ echo ""
+ done
+ else
+ echo -e "${red}No key files found in $BRIDGE_KEYS_DIR${reset}"
+ fi
+}
+
+show_bridge_info() {
+ local green="\033[0;32m"
+ local reset="\033[0m"
+ local yellow="\033[0;33m"
+
+ echo -e "${yellow}=== Nym QUIC Bridge Information ===${reset}"
+ echo ""
+
+ # Network interfaces
+ echo -e "${yellow}Network Configuration:${reset}"
+ echo "Primary network device: $network_device"
+ echo "WireGuard interface: $wg_tunnel_interface"
+
+ # Show IP addresses
+ echo ""
+ echo "IPv4 addresses:"
+ ip -4 addr show | grep inet | awk '{print " " $2 " on " $NF}'
+
+ echo ""
+ echo "IPv6 addresses:"
+ ip -6 addr show scope global | grep inet6 | awk '{print " " $2 " on " $NF}'
+
+ echo ""
+ echo -e "${yellow}Bridge Paths:${reset}"
+ echo "Configuration: $BRIDGE_CONFIG_DIR"
+ echo "Keys: $BRIDGE_KEYS_DIR"
+ echo "Binary: $BRIDGE_BINARY"
+
+ echo ""
+ echo -e "${yellow}Important Commands:${reset}"
+ echo " Check bridge status: systemctl status nym-bridge"
+ echo " Check nym-node status: systemctl status nym-node"
+ echo " View bridge logs: journalctl -u nym-bridge -f"
+ echo " View nym-node logs: journalctl -u nym-node -f"
+ echo ""
+}
+
+verify_bridge_prerequisites() {
+ local green="\033[0;32m"
+ local reset="\033[0m"
+ local red="\033[0;31m"
+ local yellow="\033[0;33m"
+
+ echo -e "${yellow}=== Verifying Bridge Prerequisites ===${reset}"
+ echo ""
+
+ local all_good=true
+
+ # Check IP forwarding
+ ipv4_forward=$(cat /proc/sys/net/ipv4/ip_forward)
+ ipv6_forward=$(cat /proc/sys/net/ipv6/conf/all/forwarding)
+
+ if [[ "$ipv4_forward" == "1" ]]; then
+ echo -e "${green}✓ IPv4 forwarding enabled${reset}"
+ else
+ echo -e "${red}✗ IPv4 forwarding disabled${reset}"
+ echo " Fix: Run 'nym-bridge-helper adjust_ip_forwarding'"
+ all_good=false
+ fi
+
+ if [[ "$ipv6_forward" == "1" ]]; then
+ echo -e "${green}✓ IPv6 forwarding enabled${reset}"
+ else
+ echo -e "${red}✗ IPv6 forwarding disabled${reset}"
+ echo " Fix: Run 'nym-bridge-helper adjust_ip_forwarding'"
+ all_good=false
+ fi
+
+ # Check iptables-persistent
+ if dpkg -s iptables-persistent >/dev/null 2>&1; then
+ echo -e "${green}✓ iptables-persistent installed${reset}"
+ else
+ echo -e "${red}✗ iptables-persistent not installed${reset}"
+ echo " Fix: This script will auto-install on first run"
+ all_good=false
+ fi
+
+ # Check required packages
+ for pkg in openssl jq curl wg; do
+ if command -v "$pkg" >/dev/null 2>&1; then
+ echo -e "${green}✓ $pkg installed${reset}"
+ else
+ echo -e "${red}✗ $pkg not installed${reset}"
+ if [[ "$pkg" == "wg" ]]; then
+ echo " Install: sudo apt install wireguard-tools"
+ fi
+ all_good=false
+ fi
+ done
+
+ echo ""
+ if [[ "$all_good" == true ]]; then
+ echo -e "${green}All prerequisites satisfied!${reset}"
+ else
+ echo -e "${yellow}Some prerequisites need attention. See above for fixes.${reset}"
+ fi
+ echo ""
+}
+
+generate_bridge_keys() {
+ local green="\033[0;32m"
+ local reset="\033[0m"
+ local red="\033[0;31m"
+ local yellow="\033[0;33m"
+
+ echo -e "${yellow}=== Generating Bridge Keys ===${reset}"
+ echo ""
+
+ # Create directories
+ sudo mkdir -p "$BRIDGE_CONFIG_DIR"
+ sudo mkdir -p "$BRIDGE_KEYS_DIR"
+ sudo chmod 700 "$BRIDGE_KEYS_DIR"
+
+ # Generate ED25519 private key
+ local key_file="$BRIDGE_KEYS_DIR/ed25519_bridge_identity.pem"
+
+ if [[ -f "$key_file" ]]; then
+ echo -e "${yellow}Warning: Key file already exists at $key_file${reset}"
+ read -p "Overwrite existing key? (yes/no): " confirm
+ if [[ "$confirm" != "yes" ]]; then
+ echo "Aborted. Keeping existing key."
+ return 1
+ fi
+ fi
+
+ echo "Generating ED25519 key..."
+ sudo openssl genpkey -algorithm ED25519 -out "$key_file"
+ sudo chmod 600 "$key_file"
+
+ echo -e "${green}✓ Bridge key generated at $key_file${reset}"
+
+ # Extract and display public key
+ echo ""
+ echo "Extracting public key..."
+ pubkey=$(sudo openssl pkey -in "$key_file" -pubout 2>/dev/null | grep -v "\---" | base64 -d | tail -c 32 | base64)
+ echo -e "${green}Public key (base64): $pubkey${reset}"
+
+ echo ""
+ echo -e "${yellow}Next steps:${reset}"
+ echo "1. Run 'nym-bridge-helper create_client_params' to generate client parameters"
+ echo "2. Run 'nym-bridge-helper create_bridge_config' to create bridge configuration"
+}
+
+create_client_params() {
+ local green="\033[0;32m"
+ local reset="\033[0m"
+ local red="\033[0;31m"
+ local yellow="\033[0;33m"
+
+ echo -e "${yellow}=== Creating Client Bridge Parameters ===${reset}"
+ echo ""
+
+ # Check if key exists
+ local key_file="$BRIDGE_KEYS_DIR/ed25519_bridge_identity.pem"
+ if [[ ! -f "$key_file" ]]; then
+ echo -e "${red}Error: Bridge key not found at $key_file${reset}"
+ echo "Run 'nym-bridge-helper generate_bridge_keys' first"
+ return 1
+ fi
+
+ # Get forward address
+ read -p "Enter forward address (e.g., :51822, can be found by running 'curl -6 https://ifconfig.co/ip'): " forward_addr
+ if [[ -z "$forward_addr" ]]; then
+ echo -e "${red}Error: Forward address is required${reset}"
+ return 1
+ fi
+
+ # Extract public key
+ echo "Extracting public key..."
+ pubkey=$(sudo openssl pkey -in "$key_file" -pubout 2>/dev/null | grep -v "\---" | base64 -d | tail -c 32 | base64)
+
+ # Create client params JSON
+ echo "Creating client parameters file..."
+ sudo tee "$CLIENT_PARAMS" > /dev/null < /dev/null < /dev/null
+ fi
+
+ sudo tee -a "$BRIDGE_CONFIG" > /dev/null < /dev/null <